{"workflows": [{"url": "http://editorial-app.appspot.com/workflow/6366168235376640/4KoGog2kW-Q", "workflow_data": {"username": "David Blue", "description": "Stream the currently-selected URL in VLC media player for iOS. If no text is selected, the entire document contents will be passed.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "selected", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"URL": {"text": "vlc-x-callback://x-callback-url/stream?url=?", "tokenRanges": {"{43, 1}": "selected"}, "type": "advancedText"}, "URL:__URL_ESCAPE__": 1, "xSuccessURL": ""}, "class": "WorkflowActionOpenXCallbackURL"}], "version": "120003", "device": {"userInterfaceIdiom": 0, "model": "iPhone4,1", "systemVersion": "8.4.1"}, "icon": "minicons-arrows-triangle-big-circle-4-01.png", "type": "wkflw", "public": true, "name": "Stream with VLC"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22David%20Blue%22%2C%20%22description%22%3A%20%22Stream%20the%20currently-selected%20URL%20in%20VLC%20media%20player%20for%20iOS.%20If%20no%20text%20is%20selected%2C%20the%20entire%20document%20contents%20will%20be%20passed.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22selected%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22URL%22%3A%20%7B%22text%22%3A%20%22vlc-x-callback%3A%2F%2Fx-callback-url%2Fstream%3Furl%3D%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B43%2C%201%7D%22%3A%20%22selected%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22URL%3A__URL_ESCAPE__%22%3A%201%2C%20%22xSuccessURL%22%3A%20%22%22%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenXCallbackURL%22%7D%5D%2C%20%22version%22%3A%20%22120003%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone4%2C1%22%2C%20%22systemVersion%22%3A%20%228.4.1%22%7D%2C%20%22icon%22%3A%20%22minicons-arrows-triangle-big-circle-4-01.png%22%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22name%22%3A%20%22Stream%20with%20VLC%22%7D", "description": "Stream the currently-selected URL in VLC media player for iOS. If no text is selected, the entire document contents will be passed.", "title": "Stream with VLC"}, {"url": "http://editorial-app.appspot.com/workflow/5046322772049920/pjMNMniXSII", "workflow_data": {"username": "David Blue", "description": "Manually triggers Editorial\u2019s Dropbox sync action and calls the native `Bleep` notification sound when the sync has completed.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionSyncWithDropbox"}, {"customTitle": "", "parameters": {"effectName": "Bleep", "waitUntilFinished": true}, "pauseWithoutShowingParameters": false, "colorLabel": 3, "class": "WorkflowActionPlaySoundEffect", "pauseBeforeRunning": false}], "version": "120003", "device": {"userInterfaceIdiom": 0, "model": "iPhone4,1", "systemVersion": "8.4.1"}, "icon": "minicons-icons-refresh-update-1.png", "type": "wkflw", "public": true, "name": "Dropbox Sync"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22David%20Blue%22%2C%20%22description%22%3A%20%22Manually%20triggers%20Editorial%5Cu2019s%20Dropbox%20sync%20action%20and%20calls%20the%20native%20%60Bleep%60%20notification%20sound%20when%20the%20sync%20has%20completed.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionSyncWithDropbox%22%7D%2C%20%7B%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22effectName%22%3A%20%22Bleep%22%2C%20%22waitUntilFinished%22%3A%20true%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%203%2C%20%22class%22%3A%20%22WorkflowActionPlaySoundEffect%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%5D%2C%20%22version%22%3A%20%22120003%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone4%2C1%22%2C%20%22systemVersion%22%3A%20%228.4.1%22%7D%2C%20%22icon%22%3A%20%22minicons-icons-refresh-update-1.png%22%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22name%22%3A%20%22Dropbox%20Sync%22%7D", "description": "Manually triggers Editorial\u2019s Dropbox sync action and calls the native `Bleep` notification sound when the sync has completed.", "title": "Dropbox Sync"}, {"url": "http://editorial-app.appspot.com/workflow/6362016277069824/me-8dVTz2XA", "workflow_data": {"username": "David Blue", "description": "Retrieves the definition of the selected term using the native system dictionary, displays native definition dialog, and then speaks the term.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionShowDictionary"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"waitUntilDone": true, "text": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "rate": 2}, "class": "WorkflowActionTextToSpeech"}], "version": "120003", "device": {"userInterfaceIdiom": 0, "model": "iPhone4,1", "systemVersion": "8.4.1"}, "icon": "minicons-icons-content-book-6.png", "type": "wkflw", "public": true, "name": "Define Selection"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22David%20Blue%22%2C%20%22description%22%3A%20%22Retrieves%20the%20definition%20of%20the%20selected%20term%20using%20the%20native%20system%20dictionary%2C%20displays%20native%20definition%20dialog%2C%20and%20then%20speaks%20the%20term.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionShowDictionary%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22waitUntilDone%22%3A%20true%2C%20%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22rate%22%3A%202%7D%2C%20%22class%22%3A%20%22WorkflowActionTextToSpeech%22%7D%5D%2C%20%22version%22%3A%20%22120003%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone4%2C1%22%2C%20%22systemVersion%22%3A%20%228.4.1%22%7D%2C%20%22icon%22%3A%20%22minicons-icons-content-book-6.png%22%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22name%22%3A%20%22Define%20Selection%22%7D", "description": "Retrieves the definition of the selected term using the native system dictionary, displays native definition dialog, and then speaks the term.", "title": "Define Selection"}, {"url": "http://editorial-app.appspot.com/workflow/6446244142514176/hGYrAgCs34I", "workflow_data": {"username": "David Blue", "description": "Opens the system share sheet locally with the contents of the system clipboard, URL-encoded. Designed primarily to AirDrop Editorial Workflows between devices.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionGetClipboard"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "urx", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "urx"}, "type": "advancedText"}, "shareAs": 1}, "class": "WorkflowActionShowShareSheet"}], "version": "120003", "device": {"userInterfaceIdiom": 0, "model": "iPhone4,1", "systemVersion": "8.4.1"}, "icon": "minicons-icons-discussions-comment-2-add.png", "type": "wkflw", "public": true, "name": "Share WorkFlow"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22David%20Blue%22%2C%20%22description%22%3A%20%22Opens%20the%20system%20share%20sheet%20locally%20with%20the%20contents%20of%20the%20system%20clipboard%2C%20URL-encoded.%20Designed%20primarily%20to%20AirDrop%20Editorial%20Workflows%20between%20devices.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionGetClipboard%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22urx%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22urx%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22shareAs%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionShowShareSheet%22%7D%5D%2C%20%22version%22%3A%20%22120003%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone4%2C1%22%2C%20%22systemVersion%22%3A%20%228.4.1%22%7D%2C%20%22icon%22%3A%20%22minicons-icons-discussions-comment-2-add.png%22%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22name%22%3A%20%22Share%20WorkFlow%22%7D", "description": "Opens the system share sheet locally with the contents of the system clipboard, URL-encoded. Designed primarily to AirDrop Editorial Workflows between devices.", "title": "Share WorkFlow"}, {"url": "http://editorial-app.appspot.com/workflow/6451242947575808/NFTUMOGvBbw", "workflow_data": {"username": "David Blue", "description": "Formats the selected text as an unordered (-) markdown list.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"numberOfSteps": {"text": "1", "tokenRanges": {}, "type": "advancedText"}, "direction": 2, "unit": 1}, "class": "WorkflowActionExtendSelection"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionRepeatWithLines"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 2, "find": {"text": "^(\\d+\\.|\\*)\\s+", "tokenRanges": {}, "type": "advancedText"}, "replace": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "- ?", "tokenRanges": {"{2, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionRepeatWithLinesEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"countOption": 3}, "class": "WorkflowActionCountWords"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"range": {"text": "?-?:?", "tokenRanges": {"{0, 1}": "%editor:selected-range-start", "{4, 1}": "%editor:selected-range-end", "{2, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionSelectRange"}], "version": "120003", "device": {"userInterfaceIdiom": 0, "model": "iPhone4,1", "systemVersion": "8.4.1"}, "icon": "minicons-icons-text-list.png", "type": "wkflw", "public": true, "name": "- List"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22David%20Blue%22%2C%20%22description%22%3A%20%22Formats%20the%20selected%20text%20as%20an%20unordered%20%28-%29%20markdown%20list.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22numberOfSteps%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22direction%22%3A%202%2C%20%22unit%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionExtendSelection%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionRepeatWithLines%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%202%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%5E%28%5C%5Cd%2B%5C%5C.%7C%5C%5C%2A%29%5C%5Cs%2B%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22-%20%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B2%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionRepeatWithLinesEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22countOption%22%3A%203%7D%2C%20%22class%22%3A%20%22WorkflowActionCountWords%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22range%22%3A%20%7B%22text%22%3A%20%22%3F-%3F%3A%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Aselected-range-start%22%2C%20%22%7B4%2C%201%7D%22%3A%20%22%25editor%3Aselected-range-end%22%2C%20%22%7B2%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionSelectRange%22%7D%5D%2C%20%22version%22%3A%20%22120003%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone4%2C1%22%2C%20%22systemVersion%22%3A%20%228.4.1%22%7D%2C%20%22icon%22%3A%20%22minicons-icons-text-list.png%22%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22name%22%3A%20%22-%20List%22%7D", "description": "Formats the selected text as an unordered (-) markdown list.", "title": "- List"}, {"url": "http://editorial-app.appspot.com/workflow/6441302916857856/BraQ_q3ljQE", "workflow_data": {"username": "David Blue", "description": "Transforms the selected text into a markdown-formatted hyperlink using the contents of the clipboard.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionGetClipboard"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "url", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 0, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "title", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "[?](?)", "tokenRanges": {"{1, 1}": "title", "{4, 1}": "url"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}], "version": "120003", "device": {"userInterfaceIdiom": 0, "model": "iPhone4,1", "systemVersion": "8.4.1"}, "icon": "minicons-icons-edition-unlink.png", "type": "wkflw", "public": true, "name": "MD Link"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22David%20Blue%22%2C%20%22description%22%3A%20%22Transforms%20the%20selected%20text%20into%20a%20markdown-formatted%20hyperlink%20using%20the%20contents%20of%20the%20clipboard.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionGetClipboard%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22url%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%200%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22title%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%5B%3F%5D%28%3F%29%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B1%2C%201%7D%22%3A%20%22title%22%2C%20%22%7B4%2C%201%7D%22%3A%20%22url%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%5D%2C%20%22version%22%3A%20%22120003%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone4%2C1%22%2C%20%22systemVersion%22%3A%20%228.4.1%22%7D%2C%20%22icon%22%3A%20%22minicons-icons-edition-unlink.png%22%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22name%22%3A%20%22MD%20Link%22%7D", "description": "Transforms the selected text into a markdown-formatted hyperlink using the contents of the clipboard.", "title": "MD Link"}, {"url": "http://editorial-app.appspot.com/workflow/6453697655603200/vFX-BA4C2zo", "workflow_data": {"username": "David Blue", "description": "Copies the url schemed bookmark url of the current file to the clipboard.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"includeSelection": true}, "class": "WorkflowActionGetBookmarkURL"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "uri", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"includeExtension": false, "includeFolder": false}, "class": "WorkflowActionGetFileName"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "filename", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "[?](?)", "tokenRanges": {"{1, 1}": "filename", "{4, 1}": "uri"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionSetClipboard"}, {"customTitle": "", "parameters": {"effectName": "Coin_1", "waitUntilFinished": false}, "pauseWithoutShowingParameters": false, "colorLabel": 3, "class": "WorkflowActionPlaySoundEffect", "pauseBeforeRunning": false}], "version": "120003", "device": {"userInterfaceIdiom": 0, "model": "iPhone4,1", "systemVersion": "8.4.1"}, "icon": "minicons-icons-navigation-open-1.png", "type": "wkflw", "public": true, "name": "Copy Schemed MD Document URL"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22David%20Blue%22%2C%20%22description%22%3A%20%22Copies%20the%20url%20schemed%20bookmark%20url%20of%20the%20current%20file%20to%20the%20clipboard.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22includeSelection%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionGetBookmarkURL%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22uri%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22includeExtension%22%3A%20false%2C%20%22includeFolder%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetFileName%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22filename%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%5B%3F%5D%28%3F%29%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B1%2C%201%7D%22%3A%20%22filename%22%2C%20%22%7B4%2C%201%7D%22%3A%20%22uri%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionSetClipboard%22%7D%2C%20%7B%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22effectName%22%3A%20%22Coin_1%22%2C%20%22waitUntilFinished%22%3A%20false%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%203%2C%20%22class%22%3A%20%22WorkflowActionPlaySoundEffect%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%5D%2C%20%22version%22%3A%20%22120003%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone4%2C1%22%2C%20%22systemVersion%22%3A%20%228.4.1%22%7D%2C%20%22icon%22%3A%20%22minicons-icons-navigation-open-1.png%22%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22name%22%3A%20%22Copy%20Schemed%20MD%20Document%20URL%22%7D", "description": "Copies the url schemed bookmark url of the current file to the clipboard.", "title": "Copy Schemed MD Document URL"}, {"url": "http://editorial-app.appspot.com/workflow/6443763664683008/uhPTKphZrro", "workflow_data": {"username": "David Blue", "description": "Wraps the selected text with double (*) asterisks.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 0, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "original", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "**?**", "tokenRanges": {"{2, 1}": "original"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}], "version": "120003", "device": {"userInterfaceIdiom": 0, "model": "iPhone4,1", "systemVersion": "8.4.1"}, "icon": "minicons-icons-text-bold.png", "type": "wkflw", "public": true, "name": "Bold Selection"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22David%20Blue%22%2C%20%22description%22%3A%20%22Wraps%20the%20selected%20text%20with%20double%20%28%2A%29%20asterisks.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%200%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22original%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%2A%2A%3F%2A%2A%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B2%2C%201%7D%22%3A%20%22original%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%5D%2C%20%22version%22%3A%20%22120003%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone4%2C1%22%2C%20%22systemVersion%22%3A%20%228.4.1%22%7D%2C%20%22icon%22%3A%20%22minicons-icons-text-bold.png%22%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22name%22%3A%20%22Bold%20Selection%22%7D", "description": "Wraps the selected text with double (*) asterisks.", "title": "Bold Selection"}, {"url": "http://editorial-app.appspot.com/workflow/6448762469744640/B-U2qwccRdg", "workflow_data": {"username": "David Blue", "description": "Opens a tag-filtered search by the current selection in Drafts via x-callback-url.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "selected", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"URL": {"text": "drafts://x-callback-url/search?tag=?", "tokenRanges": {"{35, 1}": "selected"}, "type": "advancedText"}, "URL:__URL_ESCAPE__": 1, "xSuccessURL": ""}, "class": "WorkflowActionOpenXCallbackURL"}], "version": "120003", "device": {"userInterfaceIdiom": 0, "model": "iPhone4,1", "systemVersion": "8.4.1"}, "icon": "minicons-icons-file-view-1.png", "type": "wkflw", "public": true, "name": "Search Drafts by Selected Tag"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22David%20Blue%22%2C%20%22description%22%3A%20%22Opens%20a%20tag-filtered%20search%20by%20the%20current%20selection%20in%20Drafts%20via%20x-callback-url.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22selected%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22URL%22%3A%20%7B%22text%22%3A%20%22drafts%3A%2F%2Fx-callback-url%2Fsearch%3Ftag%3D%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B35%2C%201%7D%22%3A%20%22selected%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22URL%3A__URL_ESCAPE__%22%3A%201%2C%20%22xSuccessURL%22%3A%20%22%22%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenXCallbackURL%22%7D%5D%2C%20%22version%22%3A%20%22120003%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone4%2C1%22%2C%20%22systemVersion%22%3A%20%228.4.1%22%7D%2C%20%22icon%22%3A%20%22minicons-icons-file-view-1.png%22%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22name%22%3A%20%22Search%20Drafts%20by%20Selected%20Tag%22%7D", "description": "Opens a tag-filtered search by the current selection in Drafts via x-callback-url.", "title": "Search Drafts by Selected Tag"}, {"url": "http://editorial-app.appspot.com/workflow/6438841967706112/1g87io-ZLak", "workflow_data": {"username": "David Blue", "description": "Pick a Dot (1-7) in Tot Pocket to replace with the selected text. If no text is selected, the entire document will be passed. ", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"allowMultipleSelection": false, "showInPopover": false, "list": {"text": "1\n2\n3\n4\n5\n6\n7", "tokenRanges": {}, "type": "advancedText"}, "title": "Set Dot"}, "class": "WorkflowActionSelectFromList"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "dot", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"revealBrowserAutomatically": true, "URL:__URL_ESCAPE__": 1, "URL": {"text": "tot://?/replace?text=?", "tokenRanges": {"{6, 1}": "dot", "{21, 1}": "Input"}, "type": "advancedText"}, "openIn": 1, "tabOption": 0, "waitUntilLoaded": false}, "class": "WorkflowActionOpenURL"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}], "version": "120003", "device": {"userInterfaceIdiom": 0, "model": "iPhone4,1", "systemVersion": "8.4.1"}, "icon": "minicons-icons-transfer-upload-2.png", "type": "wkflw", "public": true, "name": "Set Tot Dot"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22David%20Blue%22%2C%20%22description%22%3A%20%22Pick%20a%20Dot%20%281-7%29%20in%20Tot%20Pocket%20to%20replace%20with%20the%20selected%20text.%20If%20no%20text%20is%20selected%2C%20the%20entire%20document%20will%20be%20passed.%20%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22allowMultipleSelection%22%3A%20false%2C%20%22showInPopover%22%3A%20false%2C%20%22list%22%3A%20%7B%22text%22%3A%20%221%5Cn2%5Cn3%5Cn4%5Cn5%5Cn6%5Cn7%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Set%20Dot%22%7D%2C%20%22class%22%3A%20%22WorkflowActionSelectFromList%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22dot%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22revealBrowserAutomatically%22%3A%20true%2C%20%22URL%3A__URL_ESCAPE__%22%3A%201%2C%20%22URL%22%3A%20%7B%22text%22%3A%20%22tot%3A%2F%2F%3F%2Freplace%3Ftext%3D%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B6%2C%201%7D%22%3A%20%22dot%22%2C%20%22%7B21%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22openIn%22%3A%201%2C%20%22tabOption%22%3A%200%2C%20%22waitUntilLoaded%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%5D%2C%20%22version%22%3A%20%22120003%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone4%2C1%22%2C%20%22systemVersion%22%3A%20%228.4.1%22%7D%2C%20%22icon%22%3A%20%22minicons-icons-transfer-upload-2.png%22%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22name%22%3A%20%22Set%20Tot%20Dot%22%7D", "description": "Pick a Dot (1-7) in Tot Pocket to replace with the selected text. If no text is selected, the entire document will be passed. ", "title": "Set Tot Dot"}, {"url": "http://editorial-app.appspot.com/workflow/6455131168047104/ELrK3zhHJlY", "workflow_data": {"username": "David Blue", "description": "Searches the Editorial Workflow Directory by the selected text in the in-app browser.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "query", "value": {"text": "http://editorial-app.appspot.com/workflows/search?q=?", "tokenRanges": {"{52, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"revealBrowserAutomatically": true, "URL:__URL_ESCAPE__": 0, "URL": {"text": "?", "tokenRanges": {"{0, 1}": "query"}, "type": "advancedText"}, "openIn": 0, "tabOption": 0, "waitUntilLoaded": false}, "class": "WorkflowActionOpenURL"}], "version": "120003", "device": {"userInterfaceIdiom": 0, "model": "iPhone4,1", "systemVersion": "8.4.1"}, "icon": "minicons-icons-keys-white-4.png", "type": "wkflw", "public": true, "name": "Search Workflow Directory"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22David%20Blue%22%2C%20%22description%22%3A%20%22Searches%20the%20Editorial%20Workflow%20Directory%20by%20the%20selected%20text%20in%20the%20in-app%20browser.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22query%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22http%3A%2F%2Feditorial-app.appspot.com%2Fworkflows%2Fsearch%3Fq%3D%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B52%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22revealBrowserAutomatically%22%3A%20true%2C%20%22URL%3A__URL_ESCAPE__%22%3A%200%2C%20%22URL%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22query%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22openIn%22%3A%200%2C%20%22tabOption%22%3A%200%2C%20%22waitUntilLoaded%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%5D%2C%20%22version%22%3A%20%22120003%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone4%2C1%22%2C%20%22systemVersion%22%3A%20%228.4.1%22%7D%2C%20%22icon%22%3A%20%22minicons-icons-keys-white-4.png%22%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22name%22%3A%20%22Search%20Workflow%20Directory%22%7D", "description": "Searches the Editorial Workflow Directory by the selected text in the in-app browser.", "title": "Search Workflow Directory"}, {"url": "http://editorial-app.appspot.com/workflow/6364927996461056/GApRE_Z4wXk", "workflow_data": {"username": "David Blue", "description": "Opens the selected URL in a new Safari tab. Best paired with a keyboard shortcut.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"URL": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:selection"}, "type": "advancedText"}, "waitUntilLoaded": false, "revealBrowserAutomatically": true, "openIn": 1, "tabOption": 0}, "class": "WorkflowActionOpenURL"}], "version": "120003", "device": {"userInterfaceIdiom": 0, "model": "iPhone4,1", "systemVersion": "8.4.1"}, "icon": "minicons-icons-size-extend-6.png", "type": "wkflw", "public": true, "name": "OPEN"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22David%20Blue%22%2C%20%22description%22%3A%20%22Opens%20the%20selected%20URL%20in%20a%20new%20Safari%20tab.%20Best%20paired%20with%20a%20keyboard%20shortcut.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22URL%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Aselection%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22waitUntilLoaded%22%3A%20false%2C%20%22revealBrowserAutomatically%22%3A%20true%2C%20%22openIn%22%3A%201%2C%20%22tabOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%5D%2C%20%22version%22%3A%20%22120003%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone4%2C1%22%2C%20%22systemVersion%22%3A%20%228.4.1%22%7D%2C%20%22icon%22%3A%20%22minicons-icons-size-extend-6.png%22%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22name%22%3A%20%22OPEN%22%7D", "description": "Opens the selected URL in a new Safari tab. Best paired with a keyboard shortcut.", "title": "OPEN"}, {"url": "http://editorial-app.appspot.com/workflow/6446859329470464/giWk4JLMKzI", "workflow_data": {"username": "David Blue", "description": "Opens the selected text in Tweetbot for iOS\u2019 compose window. Upon install, you\u2019ll need to enter your own Twitter @ name as the \t`Account` variable in the Tweetbot action.\n\n(Best used with a handy keyboard shortcut.)", "actions": [{"customTitle": "", "parameters": {"effectName": "Boing_1", "waitUntilFinished": false}, "pauseWithoutShowingParameters": false, "colorLabel": 3, "class": "WorkflowActionPlaySoundEffect", "pauseBeforeRunning": false}, {"customTitle": "Post with TweetBot", "parameters": {"DF194431-87BB-4812-80C3-9E5AB43F2C37": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8055E0DF-CD9A-4AD4-99E7-A8D6356360AB": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "57EF61BF-BC84-4C83-B8F1-C2568AB709F6": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "D7738F7B-CE19-455C-BF8C-7B288D8262AA": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "312D5B0A-73FE-4236-A720-7FCB9EF51D81": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"type": "basicText", "placeholder": "(Default Account)", "key": "CEB04CDB-BADD-4409-9B8F-8E073222E446", "title": "Account"}, {"title": "Tweet", "type": "advancedText", "key": "0A5A0AF9-F928-44FC-B995-EC4087050735", "height": 100}, {"type": "switch", "key": "99FAF415-0381-4238-B15F-4D5C50F6B413", "title": "Return to Editorial"}], "149EB9A8-8A7F-424F-9E82-41D02D49FF72": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "118FF898-16DC-4433-8C8A-2CE9043B45E1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "99FAF415-0381-4238-B15F-4D5C50F6B413": true, "CDB2FAE9-2230-4B4B-ABA2-673267CA0166": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3F5656FF-CA7E-42BF-9B5A-56ACD9F7E5A7": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "7ABE0A9A-6749-4C3B-8719-915584215A14": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A54C05D5-7179-4F72-81BF-489D7F4EDF7C": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A494C1C1-6722-401A-ACE9-7A18E4E74E55": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "CEB04CDB-BADD-4409-9B8F-8E073222E446": "NeoYokel", "53EBDE34-739F-4BF0-B827-576CCCE9ABE6": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "534B636B-1D5F-4A10-B4C5-32CBFC0AF3C6": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A3B2161D-4604-43D8-A6B9-18A62C7CA6C9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "EE6DFE6A-3257-42AF-AFA6-C11ADE65559D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "49F9F435-2FDE-463F-BCBB-AE681D4578B2": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "0C4BA658-9E6E-4404-83DE-F909D40CDEF1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "860FB034-DD09-47FD-A976-DE74C8BA3B33": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E511A644-13BE-47B1-9D71-511D750D6BB4": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "156F61D9-0566-48F6-A7B9-4D349BE78AE3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "0A5A0AF9-F928-44FC-B995-EC4087050735": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:selection"}, "type": "advancedText"}, "222622CB-9B38-42A7-847F-43A98BA19764": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "import workflow\nimport webbrowser\nfrom urllib import quote\n\nparams = workflow.get_parameters()\n\naccount = params.get('Account', None)\ntweet = params.get('Tweet', None)\ncallback = params.get('Return to Editorial', False)\n\n#tweetbot://<screenname>/post?text=<text>&callback_url=<url>&in_reply_to_status_id=<tweet_id>\n\nif tweet:\n\turl = 'tweetbot://'\n\tif account:\n\t\turl += quote(account)\n\turl += '/post?text=' + quote(tweet)\n\tif callback:\n\t\turl += '&callback_url=' + quote('editorial://')\n\twebbrowser.open(url)\n", "9D33DF85-092D-445C-952F-5CFA33D56FED": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "5917EFAF-BBF2-49C9-8EA9-FAE148CB0D55": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "D0AB689E-465F-4E6B-A61D-AFED521EE8E9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "674B8A7B-F599-45F0-BAB8-71ED1E45A19E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "36D42353-DB32-4C63-B266-EC5AADA5B00D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "BBFBB27B-6C62-4CD1-B6B8-0F685502DC6F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9EB2C8A0-07D7-436C-92BA-7B74777BBD34": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "B862E68E-2C78-4822-9D93-DA053F9D82B2": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "81A29078-05D8-4975-B647-77E494DBF3BC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3B45B756-57B6-4468-906D-45918C9AAAB3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "204F7CD1-A4FF-41FD-AAA0-DDC598476C04": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "51D1C493-CFCE-44F5-BA52-108C97E54933": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "pauseWithoutShowingParameters": false, "colorLabel": 5, "class": "WorkflowActionCustom", "pauseBeforeRunning": false}], "version": "120003", "device": {"userInterfaceIdiom": 0, "model": "iPhone4,1", "systemVersion": "8.4.1"}, "icon": "minicons-social-twitter_alt.png", "type": "wkflw", "public": true, "name": "Tweetbot Selection"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22David%20Blue%22%2C%20%22description%22%3A%20%22Opens%20the%20selected%20text%20in%20Tweetbot%20for%20iOS%5Cu2019%20compose%20window.%20Upon%20install%2C%20you%5Cu2019ll%20need%20to%20enter%20your%20own%20Twitter%20%40%20name%20as%20the%20%5Ct%60Account%60%20variable%20in%20the%20Tweetbot%20action.%5Cn%5Cn%28Best%20used%20with%20a%20handy%20keyboard%20shortcut.%29%22%2C%20%22actions%22%3A%20%5B%7B%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22effectName%22%3A%20%22Boing_1%22%2C%20%22waitUntilFinished%22%3A%20false%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%203%2C%20%22class%22%3A%20%22WorkflowActionPlaySoundEffect%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%2C%20%7B%22customTitle%22%3A%20%22Post%20with%20TweetBot%22%2C%20%22parameters%22%3A%20%7B%22DF194431-87BB-4812-80C3-9E5AB43F2C37%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228055E0DF-CD9A-4AD4-99E7-A8D6356360AB%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2257EF61BF-BC84-4C83-B8F1-C2568AB709F6%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22D7738F7B-CE19-455C-BF8C-7B288D8262AA%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22312D5B0A-73FE-4236-A720-7FCB9EF51D81%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22type%22%3A%20%22basicText%22%2C%20%22placeholder%22%3A%20%22%28Default%20Account%29%22%2C%20%22key%22%3A%20%22CEB04CDB-BADD-4409-9B8F-8E073222E446%22%2C%20%22title%22%3A%20%22Account%22%7D%2C%20%7B%22title%22%3A%20%22Tweet%22%2C%20%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%220A5A0AF9-F928-44FC-B995-EC4087050735%22%2C%20%22height%22%3A%20100%7D%2C%20%7B%22type%22%3A%20%22switch%22%2C%20%22key%22%3A%20%2299FAF415-0381-4238-B15F-4D5C50F6B413%22%2C%20%22title%22%3A%20%22Return%20to%20Editorial%22%7D%5D%2C%20%22149EB9A8-8A7F-424F-9E82-41D02D49FF72%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22118FF898-16DC-4433-8C8A-2CE9043B45E1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2299FAF415-0381-4238-B15F-4D5C50F6B413%22%3A%20true%2C%20%22CDB2FAE9-2230-4B4B-ABA2-673267CA0166%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223F5656FF-CA7E-42BF-9B5A-56ACD9F7E5A7%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%227ABE0A9A-6749-4C3B-8719-915584215A14%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A54C05D5-7179-4F72-81BF-489D7F4EDF7C%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A494C1C1-6722-401A-ACE9-7A18E4E74E55%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22CEB04CDB-BADD-4409-9B8F-8E073222E446%22%3A%20%22NeoYokel%22%2C%20%2253EBDE34-739F-4BF0-B827-576CCCE9ABE6%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22534B636B-1D5F-4A10-B4C5-32CBFC0AF3C6%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A3B2161D-4604-43D8-A6B9-18A62C7CA6C9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22EE6DFE6A-3257-42AF-AFA6-C11ADE65559D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2249F9F435-2FDE-463F-BCBB-AE681D4578B2%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%220C4BA658-9E6E-4404-83DE-F909D40CDEF1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22860FB034-DD09-47FD-A976-DE74C8BA3B33%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E511A644-13BE-47B1-9D71-511D750D6BB4%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22156F61D9-0566-48F6-A7B9-4D349BE78AE3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%220A5A0AF9-F928-44FC-B995-EC4087050735%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Aselection%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22222622CB-9B38-42A7-847F-43A98BA19764%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22import%20workflow%5Cnimport%20webbrowser%5Cnfrom%20urllib%20import%20quote%5Cn%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cn%5Cnaccount%20%3D%20params.get%28%27Account%27%2C%20None%29%5Cntweet%20%3D%20params.get%28%27Tweet%27%2C%20None%29%5Cncallback%20%3D%20params.get%28%27Return%20to%20Editorial%27%2C%20False%29%5Cn%5Cn%23tweetbot%3A%2F%2F%3Cscreenname%3E%2Fpost%3Ftext%3D%3Ctext%3E%26callback_url%3D%3Curl%3E%26in_reply_to_status_id%3D%3Ctweet_id%3E%5Cn%5Cnif%20tweet%3A%5Cn%5Cturl%20%3D%20%27tweetbot%3A%2F%2F%27%5Cn%5Ctif%20account%3A%5Cn%5Ct%5Cturl%20%2B%3D%20quote%28account%29%5Cn%5Cturl%20%2B%3D%20%27%2Fpost%3Ftext%3D%27%20%2B%20quote%28tweet%29%5Cn%5Ctif%20callback%3A%5Cn%5Ct%5Cturl%20%2B%3D%20%27%26callback_url%3D%27%20%2B%20quote%28%27editorial%3A%2F%2F%27%29%5Cn%5Ctwebbrowser.open%28url%29%5Cn%22%2C%20%229D33DF85-092D-445C-952F-5CFA33D56FED%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225917EFAF-BBF2-49C9-8EA9-FAE148CB0D55%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22D0AB689E-465F-4E6B-A61D-AFED521EE8E9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22674B8A7B-F599-45F0-BAB8-71ED1E45A19E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2236D42353-DB32-4C63-B266-EC5AADA5B00D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22BBFBB27B-6C62-4CD1-B6B8-0F685502DC6F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229EB2C8A0-07D7-436C-92BA-7B74777BBD34%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22B862E68E-2C78-4822-9D93-DA053F9D82B2%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2281A29078-05D8-4975-B647-77E494DBF3BC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223B45B756-57B6-4468-906D-45918C9AAAB3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22204F7CD1-A4FF-41FD-AAA0-DDC598476C04%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2251D1C493-CFCE-44F5-BA52-108C97E54933%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%205%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%5D%2C%20%22version%22%3A%20%22120003%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone4%2C1%22%2C%20%22systemVersion%22%3A%20%228.4.1%22%7D%2C%20%22icon%22%3A%20%22minicons-social-twitter_alt.png%22%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22name%22%3A%20%22Tweetbot%20Selection%22%7D", "description": "Opens the selected text in Tweetbot for iOS\u2019 compose window. Upon install, you\u2019ll need to enter your own Twitter @ name as the \t`Account` variable in the Tweetbot action.\n\n(Best used with a handy keyboard shortcut.)", "title": "Tweetbot Selection"}, {"url": "http://editorial-app.appspot.com/workflow/6450208867090432/4maxhAKGONg", "workflow_data": {"username": "David Blue", "description": "Clears the system clipboard by copying nothing.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "null", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionSetClipboard"}, {"customTitle": "", "parameters": {"effectName": "Woosh_1", "waitUntilFinished": false}, "pauseWithoutShowingParameters": false, "colorLabel": 3, "class": "WorkflowActionPlaySoundEffect", "pauseBeforeRunning": false}], "version": "120003", "device": {"userInterfaceIdiom": 0, "model": "iPhone4,1", "systemVersion": "8.4.1"}, "icon": "minicons-icons-actions-square-delete.png", "type": "wkflw", "public": true, "name": "Clear Clipboard"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22David%20Blue%22%2C%20%22description%22%3A%20%22Clears%20the%20system%20clipboard%20by%20copying%20nothing.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22null%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionSetClipboard%22%7D%2C%20%7B%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22effectName%22%3A%20%22Woosh_1%22%2C%20%22waitUntilFinished%22%3A%20false%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%203%2C%20%22class%22%3A%20%22WorkflowActionPlaySoundEffect%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%5D%2C%20%22version%22%3A%20%22120003%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone4%2C1%22%2C%20%22systemVersion%22%3A%20%228.4.1%22%7D%2C%20%22icon%22%3A%20%22minicons-icons-actions-square-delete.png%22%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22name%22%3A%20%22Clear%20Clipboard%22%7D", "description": "Clears the system clipboard by copying nothing.", "title": "Clear Clipboard"}, {"url": "http://editorial-app.appspot.com/workflow/5792363410620416/gT3xjLfoOho", "workflow_data": {"username": "@macdhuibh", "name": "URL to Markdown Link", "description": "This action makes a link in Markdown from a selected URL.\n\nThe link\u2019s text is the Title of the page fetched from the URL.\n\nFor example:\n\n    http://dobyfriday.com\n\nBecomes:\n\n    [Do By Friday](http://dobyfriday.com)\n", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 0, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\n\nimport re\nfrom HTMLParser import HTMLParser\nimport requests\nimport workflow\n\ntitle = ''\nurl = workflow.get_input()\n\nif url.startswith('http'):\n  page = requests.get(url)\n  pattern = re.compile(r'<title>.*\\s*.*\\s*<\\/title>')\n  title = pattern.findall(page.text)\n\t\n\nif title:\n\ttitle = title[0]\n\thtml = HTMLParser()\n\ttitle = html.unescape(title)\n\nlink = \"[{}]({})\".format(title, url)\n\nworkflow.set_output(link)\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}], "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone11,8", "systemVersion": "13.3"}, "type": "wkflw", "public": true, "icon": "minicons-icons-edition-link.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%40macdhuibh%22%2C%20%22name%22%3A%20%22URL%20to%20Markdown%20Link%22%2C%20%22description%22%3A%20%22This%20action%20makes%20a%20link%20in%20Markdown%20from%20a%20selected%20URL.%5Cn%5CnThe%20link%5Cu2019s%20text%20is%20the%20Title%20of%20the%20page%20fetched%20from%20the%20URL.%5Cn%5CnFor%20example%3A%5Cn%5Cn%20%20%20%20http%3A%2F%2Fdobyfriday.com%5Cn%5CnBecomes%3A%5Cn%5Cn%20%20%20%20%5BDo%20By%20Friday%5D%28http%3A%2F%2Fdobyfriday.com%29%5Cn%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%200%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cn%5Cnimport%20re%5Cnfrom%20HTMLParser%20import%20HTMLParser%5Cnimport%20requests%5Cnimport%20workflow%5Cn%5Cntitle%20%3D%20%27%27%5Cnurl%20%3D%20workflow.get_input%28%29%5Cn%5Cnif%20url.startswith%28%27http%27%29%3A%5Cn%20%20page%20%3D%20requests.get%28url%29%5Cn%20%20pattern%20%3D%20re.compile%28r%27%3Ctitle%3E.%2A%5C%5Cs%2A.%2A%5C%5Cs%2A%3C%5C%5C%2Ftitle%3E%27%29%5Cn%20%20title%20%3D%20pattern.findall%28page.text%29%5Cn%5Ct%5Cn%5Cnif%20title%3A%5Cn%5Cttitle%20%3D%20title%5B0%5D%5Cn%5Cthtml%20%3D%20HTMLParser%28%29%5Cn%5Cttitle%20%3D%20html.unescape%28title%29%5Cn%5Cnlink%20%3D%20%5C%22%5B%7B%7D%5D%28%7B%7D%29%5C%22.format%28title%2C%20url%29%5Cn%5Cnworkflow.set_output%28link%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%5D%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone11%2C8%22%2C%20%22systemVersion%22%3A%20%2213.3%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-edition-link.png%22%7D", "description": "This action makes a link in Markdown from a selected URL.\n\nThe link\u2019s text is the Title of the page fetched from the URL.\n\nFor example:\n\n    http://dobyfriday.com\n\nBecomes:\n\n    [Do By Friday](http://dobyfriday.com)\n", "title": "URL to Markdown Link"}, {"url": "http://editorial-app.appspot.com/workflow/5881127713636352/5qz7ZV08nRg", "workflow_data": {"username": "Shane Bolton", "name": "View Not Done", "description": "Show only TaskPaper tasks that are not marked Done. ", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"pattern": {"text": "- ", "tokenRanges": {}, "type": "advancedText"}, "invert": true}, "class": "WorkflowActionFoldLinesMatchingPattern"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"pattern": {"text": "done", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFoldLinesMatchingPattern"}], "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone11,8", "systemVersion": "12.4.1"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22Shane%20Bolton%22%2C%20%22name%22%3A%20%22View%20Not%20Done%22%2C%20%22description%22%3A%20%22Show%20only%20TaskPaper%20tasks%20that%20are%20not%20marked%20Done.%20%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22pattern%22%3A%20%7B%22text%22%3A%20%22-%20%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22invert%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionFoldLinesMatchingPattern%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22pattern%22%3A%20%7B%22text%22%3A%20%22done%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFoldLinesMatchingPattern%22%7D%5D%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone11%2C8%22%2C%20%22systemVersion%22%3A%20%2212.4.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "Show only TaskPaper tasks that are not marked Done. ", "title": "View Not Done"}, {"url": "http://editorial-app.appspot.com/workflow/5820410822131712/za_cEbbV8B0", "workflow_data": {"username": "Sameh tv channel ", "name": "List URLs...", "description": "Shows a list of URLs in the current document. Selecting one of the URLs opens it in the browser panel.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionExtractURLs"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "If no URLs are found...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"showHUD": true, "HUDTitle": "No URLs found", "stopOption": 0}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"list": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "", "showInPopover": true, "allowMultipleSelection": false}, "class": "WorkflowActionSelectFromList"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "If URL is selected...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"URL": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "waitUntilLoaded": false, "revealBrowserAutomatically": true, "openIn": 0, "tabOption": 0}, "class": "WorkflowActionOpenURL"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"__custom_action_parameters__": [{"type": "advancedText", "key": "BF05608B-9AD2-49E5-BF32-2C90DD851926", "title": "Info"}], "BF05608B-9AD2-49E5-BF32-2C90DD851926": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the ?parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {"{132, 1}": "Input"}, "type": "advancedText"}, "__custom_action_script__": "#coding: utf-8\nimport workflow\n\n# Get the custom parameters as a dictionary (titles are keys):\nparams = workflow.get_parameters()\n# Get the action's input (a string):\naction_in = workflow.get_input()\n\n#...\n\nworkflow.set_output(action_in)\n", "21A4629A-4270-486B-9F73-7B808D1CC00E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "33A60F6D-5B3A-4E80-BA83-F57B412D4267": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}], "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone10,5", "systemVersion": "13.3.1"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_ARCHIVE.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22Sameh%20tv%20channel%20%22%2C%20%22name%22%3A%20%22List%20URLs...%22%2C%20%22description%22%3A%20%22Shows%20a%20list%20of%20URLs%20in%20the%20current%20document.%20Selecting%20one%20of%20the%20URLs%20opens%20it%20in%20the%20browser%20panel.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionExtractURLs%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22If%20no%20URLs%20are%20found...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20true%2C%20%22HUDTitle%22%3A%20%22No%20URLs%20found%22%2C%20%22stopOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22list%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22%22%2C%20%22showInPopover%22%3A%20true%2C%20%22allowMultipleSelection%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionSelectFromList%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22If%20URL%20is%20selected...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22URL%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22waitUntilLoaded%22%3A%20false%2C%20%22revealBrowserAutomatically%22%3A%20true%2C%20%22openIn%22%3A%200%2C%20%22tabOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22__custom_action_parameters__%22%3A%20%5B%7B%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%22BF05608B-9AD2-49E5-BF32-2C90DD851926%22%2C%20%22title%22%3A%20%22Info%22%7D%5D%2C%20%22BF05608B-9AD2-49E5-BF32-2C90DD851926%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20%3Fparameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B132%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cn%5Cn%23%20Get%20the%20custom%20parameters%20as%20a%20dictionary%20%28titles%20are%20keys%29%3A%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cn%23%20Get%20the%20action%27s%20input%20%28a%20string%29%3A%5Cnaction_in%20%3D%20workflow.get_input%28%29%5Cn%5Cn%23...%5Cn%5Cnworkflow.set_output%28action_in%29%5Cn%22%2C%20%2221A4629A-4270-486B-9F73-7B808D1CC00E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2233A60F6D-5B3A-4E80-BA83-F57B412D4267%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%5D%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone10%2C5%22%2C%20%22systemVersion%22%3A%20%2213.3.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_ARCHIVE.png%22%7D", "description": "Shows a list of URLs in the current document. Selecting one of the URLs opens it in the browser panel.", "title": "List URLs..."}, {"url": "http://editorial-app.appspot.com/workflow/5852708976197632/EiGLFTji9HE", "workflow_data": {"username": "arkadyan", "description": "This Workflow accepts TaskPaper text with \u00abplaceholder\u00bb tokens and prompts for you to enter final values, then creates a project in OmniFocus 2.14 for iOS using those tokens.\n\nFor example, given this input:\n\n- \u00abproject_name\u00bb @parallel(false) @due(\u00abdue\u00bb)\n        - This task needs to be done at least 1 week before \u00abproject_name\u00bb is due @due(\u00abdue\u00bb -1w)\n        - This task needs to be done at least 2 days before \u00abproject_name\u00bb is due @due(\u00abdue\u00bb -2d)\n\nYou'll be prompted to enter values for \u00abproject_name\u00bb and \u00abdue\u00bb. If you enter \"Phonewave 1.2\" and \"next Thursday\", it will create a new \"Phonewave 1.2\" project in OmniFocus that is due next Thursday, and has two tasks already filled with due dates of this Thursday and next Tuesday.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport dialogs\nimport re\n\naction_in = workflow.get_input()\n\n# Find placeholders\nknown_placeholders = set()\nplaceholders = []\nfields = []\nfor placeholder_match in re.finditer(u\"\u00ab(.+?)\u00bb\", action_in):\n\tplaceholder = placeholder_match.group(1)\n\tif placeholder not in known_placeholders:\n\t\tknown_placeholders.add(placeholder)\n\t\tplaceholders.append(placeholder)\n\t\tfields.append({'type': 'text', 'title': placeholder, 'key': placeholder})\n\naction_out = action_in\n\n# Substitute the placeholders\nif len(placeholders) == 0:\n\tif dialogs.alert(u\"No template placeholders were found.\", u\"\"\"\nIf your project text has placeholders (that look like \u00abthis\u00bb), this script will prompt for values you'd like to substitute for them.\n\"\"\", u\"Continue\") != 1:\n\t  workflow.stop()\n\nelse:\n\tvalues = dialogs.form_dialog(title='', fields=fields, sections=None)\n\tif values:\n\t\tfor key in values:\n\t\t\taction_out = re.sub(u\"\u00ab\" + key + \"\u00bb\", values[key], action_out)\n\nworkflow.set_output(action_out)\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionURLEscape"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "encodedContent", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"URL": {"text": "omnifocus://x-callback-url/paste?target=projects&content=?", "tokenRanges": {"{57, 1}": "encodedContent"}, "type": "advancedText"}, "waitUntilLoaded": false, "revealBrowserAutomatically": true, "openIn": 0, "tabOption": 0}, "class": "WorkflowActionOpenURL"}], "name": "New OmniFocus Project", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone12,1", "systemVersion": "13.3"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_CHECK.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22arkadyan%22%2C%20%22description%22%3A%20%22This%20Workflow%20accepts%20TaskPaper%20text%20with%20%5Cu00abplaceholder%5Cu00bb%20tokens%20and%20prompts%20for%20you%20to%20enter%20final%20values%2C%20then%20creates%20a%20project%20in%20OmniFocus%202.14%20for%20iOS%20using%20those%20tokens.%5Cn%5CnFor%20example%2C%20given%20this%20input%3A%5Cn%5Cn-%20%5Cu00abproject_name%5Cu00bb%20%40parallel%28false%29%20%40due%28%5Cu00abdue%5Cu00bb%29%5Cn%20%20%20%20%20%20%20%20-%20This%20task%20needs%20to%20be%20done%20at%20least%201%20week%20before%20%5Cu00abproject_name%5Cu00bb%20is%20due%20%40due%28%5Cu00abdue%5Cu00bb%20-1w%29%5Cn%20%20%20%20%20%20%20%20-%20This%20task%20needs%20to%20be%20done%20at%20least%202%20days%20before%20%5Cu00abproject_name%5Cu00bb%20is%20due%20%40due%28%5Cu00abdue%5Cu00bb%20-2d%29%5Cn%5CnYou%27ll%20be%20prompted%20to%20enter%20values%20for%20%5Cu00abproject_name%5Cu00bb%20and%20%5Cu00abdue%5Cu00bb.%20If%20you%20enter%20%5C%22Phonewave%201.2%5C%22%20and%20%5C%22next%20Thursday%5C%22%2C%20it%20will%20create%20a%20new%20%5C%22Phonewave%201.2%5C%22%20project%20in%20OmniFocus%20that%20is%20due%20next%20Thursday%2C%20and%20has%20two%20tasks%20already%20filled%20with%20due%20dates%20of%20this%20Thursday%20and%20next%20Tuesday.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20dialogs%5Cnimport%20re%5Cn%5Cnaction_in%20%3D%20workflow.get_input%28%29%5Cn%5Cn%23%20Find%20placeholders%5Cnknown_placeholders%20%3D%20set%28%29%5Cnplaceholders%20%3D%20%5B%5D%5Cnfields%20%3D%20%5B%5D%5Cnfor%20placeholder_match%20in%20re.finditer%28u%5C%22%5Cu00ab%28.%2B%3F%29%5Cu00bb%5C%22%2C%20action_in%29%3A%5Cn%5Ctplaceholder%20%3D%20placeholder_match.group%281%29%5Cn%5Ctif%20placeholder%20not%20in%20known_placeholders%3A%5Cn%5Ct%5Ctknown_placeholders.add%28placeholder%29%5Cn%5Ct%5Ctplaceholders.append%28placeholder%29%5Cn%5Ct%5Ctfields.append%28%7B%27type%27%3A%20%27text%27%2C%20%27title%27%3A%20placeholder%2C%20%27key%27%3A%20placeholder%7D%29%5Cn%5Cnaction_out%20%3D%20action_in%5Cn%5Cn%23%20Substitute%20the%20placeholders%5Cnif%20len%28placeholders%29%20%3D%3D%200%3A%5Cn%5Ctif%20dialogs.alert%28u%5C%22No%20template%20placeholders%20were%20found.%5C%22%2C%20u%5C%22%5C%22%5C%22%5CnIf%20your%20project%20text%20has%20placeholders%20%28that%20look%20like%20%5Cu00abthis%5Cu00bb%29%2C%20this%20script%20will%20prompt%20for%20values%20you%27d%20like%20to%20substitute%20for%20them.%5Cn%5C%22%5C%22%5C%22%2C%20u%5C%22Continue%5C%22%29%20%21%3D%201%3A%5Cn%5Ct%20%20workflow.stop%28%29%5Cn%5Cnelse%3A%5Cn%5Ctvalues%20%3D%20dialogs.form_dialog%28title%3D%27%27%2C%20fields%3Dfields%2C%20sections%3DNone%29%5Cn%5Ctif%20values%3A%5Cn%5Ct%5Ctfor%20key%20in%20values%3A%5Cn%5Ct%5Ct%5Ctaction_out%20%3D%20re.sub%28u%5C%22%5Cu00ab%5C%22%20%2B%20key%20%2B%20%5C%22%5Cu00bb%5C%22%2C%20values%5Bkey%5D%2C%20action_out%29%5Cn%5Cnworkflow.set_output%28action_out%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionURLEscape%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22encodedContent%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22URL%22%3A%20%7B%22text%22%3A%20%22omnifocus%3A%2F%2Fx-callback-url%2Fpaste%3Ftarget%3Dprojects%26content%3D%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B57%2C%201%7D%22%3A%20%22encodedContent%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22waitUntilLoaded%22%3A%20false%2C%20%22revealBrowserAutomatically%22%3A%20true%2C%20%22openIn%22%3A%200%2C%20%22tabOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%5D%2C%20%22name%22%3A%20%22New%20OmniFocus%20Project%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone12%2C1%22%2C%20%22systemVersion%22%3A%20%2213.3%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_CHECK.png%22%7D", "description": "This Workflow accepts TaskPaper text with \u00abplaceholder\u00bb tokens and prompts for you to enter final values, then creates a project in OmniFocus 2.14 for iOS using those tokens.\n\nFor example, given this input:\n\n- \u00abproject_name\u00bb @parallel(false) @due(\u00abdue\u00bb)\n        - This task needs to be done at least 1 week before \u00abproject_name\u00bb is due @due(\u00abdue\u00bb -1w)\n        - This task needs to be done at least 2 days before \u00abproject_name\u00bb is due @due(\u00abdue\u00bb -2d)\n\nYou'll be prompted to enter values for \u00abproject_name\u00bb and \u00abdue\u00bb. If you enter \"Phonewave 1.2\" and \"next Thursday\", it will create a new \"Phonewave 1.2\" project in OmniFocus that is due next Thursday, and has two tasks already filled with due dates of this Thursday and next Tuesday.", "title": "New OmniFocus Project"}, {"url": "http://editorial-app.appspot.com/workflow/5854738818007040/DN4OvMvq-xc", "workflow_data": {"username": "Get your Cat or Cats with pussy \ud83c\udf39 to Ambj\u00f6rn Sk\u00f6ld - \u0f3a\u0fc7AMB\ud83d\udd25RI\u0fc8EL\u0f7c\u0fc7\u0f3b\u26a1\ufe0f", "description": "Shows the iOS share sheet with the selected text as input. If nothing is selected, the entire document is shared. In a Markdown document, the text can optionally be converted to HTML first.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:syntax-mode"}, "type": "advancedText"}, "expression2": {"text": "markdown", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"button1Value": {"text": "[[html]]", "tokenRanges": {}, "type": "advancedText"}, "button3Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button2Value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "Share Document Text...", "button3Title": "", "button2Title": "Use Plain Text", "button1Title": "Convert to HTML", "message": {"text": "Do you want to convert this Markdown document to HTML for sharing?", "tokenRanges": {}, "type": "advancedText"}, "showCancelButton": true}, "class": "WorkflowActionShowAlert"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "[[html]]", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"tables": true, "autolinks": true, "smartypants": true, "strikethrough": true, "footnotes": true, "metadata": false, "superscript": true}, "class": "WorkflowActionConvertMarkdown"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\"/></head>\n<body>\n?\n</body>\n</html>", "tokenRanges": {"{67, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionShowShareSheet"}], "name": "Share...", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone9,3", "systemVersion": "13.3"}, "type": "wkflw", "public": true, "icon": "minicons-icons-navigation-log-out-2.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22Get%20your%20Cat%20or%20Cats%20with%20pussy%20%5Cud83c%5Cudf39%20to%20Ambj%5Cu00f6rn%20Sk%5Cu00f6ld%20-%20%5Cu0f3a%5Cu0fc7AMB%5Cud83d%5Cudd25RI%5Cu0fc8EL%5Cu0f7c%5Cu0fc7%5Cu0f3b%5Cu26a1%5Cufe0f%22%2C%20%22description%22%3A%20%22Shows%20the%20iOS%20share%20sheet%20with%20the%20selected%20text%20as%20input.%20If%20nothing%20is%20selected%2C%20the%20entire%20document%20is%20shared.%20In%20a%20Markdown%20document%2C%20the%20text%20can%20optionally%20be%20converted%20to%20HTML%20first.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Asyntax-mode%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22markdown%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22button1Value%22%3A%20%7B%22text%22%3A%20%22%5B%5Bhtml%5D%5D%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button3Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button2Value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Share%20Document%20Text...%22%2C%20%22button3Title%22%3A%20%22%22%2C%20%22button2Title%22%3A%20%22Use%20Plain%20Text%22%2C%20%22button1Title%22%3A%20%22Convert%20to%20HTML%22%2C%20%22message%22%3A%20%7B%22text%22%3A%20%22Do%20you%20want%20to%20convert%20this%20Markdown%20document%20to%20HTML%20for%20sharing%3F%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22showCancelButton%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionShowAlert%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%5B%5Bhtml%5D%5D%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22tables%22%3A%20true%2C%20%22autolinks%22%3A%20true%2C%20%22smartypants%22%3A%20true%2C%20%22strikethrough%22%3A%20true%2C%20%22footnotes%22%3A%20true%2C%20%22metadata%22%3A%20false%2C%20%22superscript%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionConvertMarkdown%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3C%21DOCTYPE%20html%3E%5Cn%3Chtml%3E%5Cn%3Chead%3E%3Cmeta%20charset%3D%5C%22utf-8%5C%22%2F%3E%3C%2Fhead%3E%5Cn%3Cbody%3E%5Cn%3F%5Cn%3C%2Fbody%3E%5Cn%3C%2Fhtml%3E%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B67%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionShowShareSheet%22%7D%5D%2C%20%22name%22%3A%20%22Share...%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone9%2C3%22%2C%20%22systemVersion%22%3A%20%2213.3%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-navigation-log-out-2.png%22%7D", "description": "Shows the iOS share sheet with the selected text as input. If nothing is selected, the entire document is shared. In a Markdown document, the text can optionally be converted to HTML first.", "title": "Share..."}, {"url": "http://editorial-app.appspot.com/workflow/5311796902625280/kBoj7nVm5qI", "workflow_data": {"username": "Get your Cat or Cats with pussy \ud83c\udf39 to Ambj\u00f6rn Sk\u00f6ld - \u0f3a\u0fc7AMB\ud83d\udd25RI\u0fc8EL\u0f7c\u0fc7\u0f3b\u26a1\ufe0f", "description": "Converts a Markdown or plain text document to PDF. The result is shown in a browser tab.", "actions": [{"customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:filename"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "pauseWithoutShowingParameters": false, "subActions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"showHUD": true, "HUDTitle": "No Document Open"}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}], "class": "WorkflowActionCondition", "pauseBeforeRunning": false}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "PDF Filename", "value": {"text": "?.pdf", "tokenRanges": {"{0, 1}": "%editor:filename"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:syntax-mode"}, "type": "advancedText"}, "expression2": {"text": "markdown", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"tables": true, "autolinks": true, "smartypants": true, "strikethrough": true, "footnotes": true, "metadata": false, "superscript": true}, "class": "WorkflowActionConvertMarkdown"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:syntax-mode"}, "type": "advancedText"}, "expression2": {"text": "markdown", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "<pre>?</pre>", "tokenRanges": {"{5, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"margins": "2cm 2.5cm 2cm 2.5cm", "html": {"text": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\"/>\n<style>\nbody {\n  font-family: helvetica;\n  font-size: 12pt;\n}\nh1 {\n  font-size: 18pt;\n}\nh2 {\n  font-size: 16pt;\n}\nh3 {\n  font-size: 14pt;\n}\nh4, h5, h6 {\n  font-size: 12pt;\n}\na {\n  color: black;\n}\n\n</style>\n</head>\n<body>\n?\n</body>\n</html>", "tokenRanges": {"{274, 1}": "Input"}, "type": "advancedText"}, "overwriteFile": true, "filename": "%var:PDF Filename"}, "class": "WorkflowActionHTMLToPDF"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"revealBrowserAutomatically": true, "tabID": "PDFOutput", "URL": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "openIn": 0, "tabOption": 2, "waitUntilLoaded": false}, "class": "WorkflowActionOpenURL"}], "name": "Convert to PDF", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone9,3", "systemVersion": "13.3"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_ANCHOR.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22Get%20your%20Cat%20or%20Cats%20with%20pussy%20%5Cud83c%5Cudf39%20to%20Ambj%5Cu00f6rn%20Sk%5Cu00f6ld%20-%20%5Cu0f3a%5Cu0fc7AMB%5Cud83d%5Cudd25RI%5Cu0fc8EL%5Cu0f7c%5Cu0fc7%5Cu0f3b%5Cu26a1%5Cufe0f%22%2C%20%22description%22%3A%20%22Converts%20a%20Markdown%20or%20plain%20text%20document%20to%20PDF.%20The%20result%20is%20shown%20in%20a%20browser%20tab.%22%2C%20%22actions%22%3A%20%5B%7B%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Afilename%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22subActions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20true%2C%20%22HUDTitle%22%3A%20%22No%20Document%20Open%22%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%5D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22PDF%20Filename%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F.pdf%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Afilename%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Asyntax-mode%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22markdown%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22tables%22%3A%20true%2C%20%22autolinks%22%3A%20true%2C%20%22smartypants%22%3A%20true%2C%20%22strikethrough%22%3A%20true%2C%20%22footnotes%22%3A%20true%2C%20%22metadata%22%3A%20false%2C%20%22superscript%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionConvertMarkdown%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Asyntax-mode%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22markdown%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3Cpre%3E%3F%3C%2Fpre%3E%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B5%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22margins%22%3A%20%222cm%202.5cm%202cm%202.5cm%22%2C%20%22html%22%3A%20%7B%22text%22%3A%20%22%3C%21DOCTYPE%20html%3E%5Cn%3Chtml%3E%5Cn%3Chead%3E%3Cmeta%20charset%3D%5C%22utf-8%5C%22%2F%3E%5Cn%3Cstyle%3E%5Cnbody%20%7B%5Cn%20%20font-family%3A%20helvetica%3B%5Cn%20%20font-size%3A%2012pt%3B%5Cn%7D%5Cnh1%20%7B%5Cn%20%20font-size%3A%2018pt%3B%5Cn%7D%5Cnh2%20%7B%5Cn%20%20font-size%3A%2016pt%3B%5Cn%7D%5Cnh3%20%7B%5Cn%20%20font-size%3A%2014pt%3B%5Cn%7D%5Cnh4%2C%20h5%2C%20h6%20%7B%5Cn%20%20font-size%3A%2012pt%3B%5Cn%7D%5Cna%20%7B%5Cn%20%20color%3A%20black%3B%5Cn%7D%5Cn%5Cn%3C%2Fstyle%3E%5Cn%3C%2Fhead%3E%5Cn%3Cbody%3E%5Cn%3F%5Cn%3C%2Fbody%3E%5Cn%3C%2Fhtml%3E%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B274%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22overwriteFile%22%3A%20true%2C%20%22filename%22%3A%20%22%25var%3APDF%20Filename%22%7D%2C%20%22class%22%3A%20%22WorkflowActionHTMLToPDF%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22revealBrowserAutomatically%22%3A%20true%2C%20%22tabID%22%3A%20%22PDFOutput%22%2C%20%22URL%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22openIn%22%3A%200%2C%20%22tabOption%22%3A%202%2C%20%22waitUntilLoaded%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%5D%2C%20%22name%22%3A%20%22Convert%20to%20PDF%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone9%2C3%22%2C%20%22systemVersion%22%3A%20%2213.3%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_ANCHOR.png%22%7D", "description": "Converts a Markdown or plain text document to PDF. The result is shown in a browser tab.", "title": "Convert to PDF"}, {"url": "http://editorial-app.appspot.com/workflow/5874746856046592/H2ZjBpnTWaU", "workflow_data": {"username": "Get your Cat or Cats with pussy \ud83c\udf39 to Ambj\u00f6rn Sk\u00f6ld - \u0f3a\u0fc7AMB\ud83d\udd25RI\u0fc8EL\u0f7c\u0fc7\u0f3b\u26a1\ufe0f", "description": "Replaces the selected word(s) with a Markdown link, pointing to the first Google result. E.g. when you select \"Markdown\", it is replaced with \"[Markdown](http://daringfireball.net/projects/markdown)\".", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport editor\nimport console\n\ndef main():\n\ttext = editor.get_selected_text()\n\tif not text:\n\t\tconsole.hud_alert('Nothing Selected', 'error')\n\t\treturn\n\timport requests\n\timport urllib\n\turl = 'https://www.google.com/search?q=%s&btnI' % (urllib.quote(text, ''),)\n\ttry:\n\t\tr = requests.head(url)\n\t\tlink_url = r.headers['location']\n\t\tmd_link = '[%s](%s)' % (text, link_url)\n\t\teditor.insert_text(md_link)\n\texcept:\n\t\tconsole.hud_alert('Something went wrong', 'error')\n\nmain()\n"}, "class": "WorkflowActionRunScript"}], "name": "Lucky Link", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone9,3", "systemVersion": "13.3"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_HEART.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22Get%20your%20Cat%20or%20Cats%20with%20pussy%20%5Cud83c%5Cudf39%20to%20Ambj%5Cu00f6rn%20Sk%5Cu00f6ld%20-%20%5Cu0f3a%5Cu0fc7AMB%5Cud83d%5Cudd25RI%5Cu0fc8EL%5Cu0f7c%5Cu0fc7%5Cu0f3b%5Cu26a1%5Cufe0f%22%2C%20%22description%22%3A%20%22Replaces%20the%20selected%20word%28s%29%20with%20a%20Markdown%20link%2C%20pointing%20to%20the%20first%20Google%20result.%20E.g.%20when%20you%20select%20%5C%22Markdown%5C%22%2C%20it%20is%20replaced%20with%20%5C%22%5BMarkdown%5D%28http%3A%2F%2Fdaringfireball.net%2Fprojects%2Fmarkdown%29%5C%22.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20editor%5Cnimport%20console%5Cn%5Cndef%20main%28%29%3A%5Cn%5Cttext%20%3D%20editor.get_selected_text%28%29%5Cn%5Ctif%20not%20text%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27Nothing%20Selected%27%2C%20%27error%27%29%5Cn%5Ct%5Ctreturn%5Cn%5Ctimport%20requests%5Cn%5Ctimport%20urllib%5Cn%5Cturl%20%3D%20%27https%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3D%25s%26btnI%27%20%25%20%28urllib.quote%28text%2C%20%27%27%29%2C%29%5Cn%5Cttry%3A%5Cn%5Ct%5Ctr%20%3D%20requests.head%28url%29%5Cn%5Ct%5Ctlink_url%20%3D%20r.headers%5B%27location%27%5D%5Cn%5Ct%5Ctmd_link%20%3D%20%27%5B%25s%5D%28%25s%29%27%20%25%20%28text%2C%20link_url%29%5Cn%5Ct%5Cteditor.insert_text%28md_link%29%5Cn%5Ctexcept%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27Something%20went%20wrong%27%2C%20%27error%27%29%5Cn%5Cnmain%28%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%5D%2C%20%22name%22%3A%20%22Lucky%20Link%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone9%2C3%22%2C%20%22systemVersion%22%3A%20%2213.3%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_HEART.png%22%7D", "description": "Replaces the selected word(s) with a Markdown link, pointing to the first Google result. E.g. when you select \"Markdown\", it is replaced with \"[Markdown](http://daringfireball.net/projects/markdown)\".", "title": "Lucky Link"}, {"url": "http://editorial-app.appspot.com/workflow/5787687466303488/nmy-pxH4-Jk", "workflow_data": {"username": "@therealtomasjay", "description": "TP Focus on Tag \u2026\n\nthis workflow is based on the original \"Focus on Tag\u2026\"* with two improvements for the use with TaskPaper documents. \n\t\n1. added a step at the beginning to expand the entire document before looking for @tags to find all of them. the original \"Focus on Tags\u2026\" would only find @tags in the currently filtered text.\n\n2. adjusted the last step to show TaskPaper project headlines (ending with \":\") in addition to @tags. this helps to keep an overview on the structure of the document.\n\nenjoy!\n||| tomas jay\n\n@therealtomasjay \n\n* what the original \"Focus on Tag\u2026\" does:\nAfter picking a tag from the list of tags in the current document, only tasks that contain this tag are shown, everything else is hidden (folded).", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\n\n#. Focus on Tag (for TaskPaper)\n\n#. this workflow is based on the original \"Focus on Tag\u2026\"\n#. with two improvements for the use with TaskPaper documents. \n\t\n#.   1. added a step at the beginning\n#.      to expand the entire document before looking for @tags \n#.      to find all of them.\n#.      the original \"Focus on Tags\u2026\" would only find \n#.      @tags in the currently filtered text.\n\n#.   2. adjusted the last step\n#.      to show TaskPaper project headlines (ending with \":\")\n#.      in addition to @tags. \n#.      this helps to keep an overview \n#.      on the structure of the document.\n\n#. enjoy!\n#. ||| tomas jay\n#. @therealtomasjay\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionUnfoldText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport editor\nimport re\n\ntext = editor.get_text()\ntags = sorted(set(re.findall('@\\w+', text)))\nif len(tags) == 0:\n\timport console\n\tconsole.hud_alert('No Tags Found', 'error')\n\tworkflow.stop()\nelse:\n\tworkflow.set_output('\\n'.join(tags))\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"list": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "Select Tag", "showInPopover": false, "allowMultipleSelection": false}, "class": "WorkflowActionSelectFromList"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionRegexEscape"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"pattern": {"text": "(:$|?\\b)", "tokenRanges": {"{4, 1}": "Input"}, "type": "advancedText"}, "invert": true}, "class": "WorkflowActionFoldLinesMatchingPattern"}], "name": "TP Focus on Tag...", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad8,3", "systemVersion": "13.2.3"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_TAG.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%40therealtomasjay%22%2C%20%22description%22%3A%20%22TP%20Focus%20on%20Tag%20%5Cu2026%5Cn%5Cnthis%20workflow%20is%20based%20on%20the%20original%20%5C%22Focus%20on%20Tag%5Cu2026%5C%22%2A%20with%20two%20improvements%20for%20the%20use%20with%20TaskPaper%20documents.%20%5Cn%5Ct%5Cn1.%20added%20a%20step%20at%20the%20beginning%20to%20expand%20the%20entire%20document%20before%20looking%20for%20%40tags%20to%20find%20all%20of%20them.%20the%20original%20%5C%22Focus%20on%20Tags%5Cu2026%5C%22%20would%20only%20find%20%40tags%20in%20the%20currently%20filtered%20text.%5Cn%5Cn2.%20adjusted%20the%20last%20step%20to%20show%20TaskPaper%20project%20headlines%20%28ending%20with%20%5C%22%3A%5C%22%29%20in%20addition%20to%20%40tags.%20this%20helps%20to%20keep%20an%20overview%20on%20the%20structure%20of%20the%20document.%5Cn%5Cnenjoy%21%5Cn%7C%7C%7C%20tomas%20jay%5Cn%5Cn%40therealtomasjay%20%5Cn%5Cn%2A%20what%20the%20original%20%5C%22Focus%20on%20Tag%5Cu2026%5C%22%20does%3A%5CnAfter%20picking%20a%20tag%20from%20the%20list%20of%20tags%20in%20the%20current%20document%2C%20only%20tasks%20that%20contain%20this%20tag%20are%20shown%2C%20everything%20else%20is%20hidden%20%28folded%29.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cn%5Cn%23.%20Focus%20on%20Tag%20%28for%20TaskPaper%29%5Cn%5Cn%23.%20this%20workflow%20is%20based%20on%20the%20original%20%5C%22Focus%20on%20Tag%5Cu2026%5C%22%5Cn%23.%20with%20two%20improvements%20for%20the%20use%20with%20TaskPaper%20documents.%20%5Cn%5Ct%5Cn%23.%20%20%201.%20added%20a%20step%20at%20the%20beginning%5Cn%23.%20%20%20%20%20%20to%20expand%20the%20entire%20document%20before%20looking%20for%20%40tags%20%5Cn%23.%20%20%20%20%20%20to%20find%20all%20of%20them.%5Cn%23.%20%20%20%20%20%20the%20original%20%5C%22Focus%20on%20Tags%5Cu2026%5C%22%20would%20only%20find%20%5Cn%23.%20%20%20%20%20%20%40tags%20in%20the%20currently%20filtered%20text.%5Cn%5Cn%23.%20%20%202.%20adjusted%20the%20last%20step%5Cn%23.%20%20%20%20%20%20to%20show%20TaskPaper%20project%20headlines%20%28ending%20with%20%5C%22%3A%5C%22%29%5Cn%23.%20%20%20%20%20%20in%20addition%20to%20%40tags.%20%5Cn%23.%20%20%20%20%20%20this%20helps%20to%20keep%20an%20overview%20%5Cn%23.%20%20%20%20%20%20on%20the%20structure%20of%20the%20document.%5Cn%5Cn%23.%20enjoy%21%5Cn%23.%20%7C%7C%7C%20tomas%20jay%5Cn%23.%20%40therealtomasjay%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionUnfoldText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20editor%5Cnimport%20re%5Cn%5Cntext%20%3D%20editor.get_text%28%29%5Cntags%20%3D%20sorted%28set%28re.findall%28%27%40%5C%5Cw%2B%27%2C%20text%29%29%29%5Cnif%20len%28tags%29%20%3D%3D%200%3A%5Cn%5Ctimport%20console%5Cn%5Ctconsole.hud_alert%28%27No%20Tags%20Found%27%2C%20%27error%27%29%5Cn%5Ctworkflow.stop%28%29%5Cnelse%3A%5Cn%5Ctworkflow.set_output%28%27%5C%5Cn%27.join%28tags%29%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22list%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Select%20Tag%22%2C%20%22showInPopover%22%3A%20false%2C%20%22allowMultipleSelection%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionSelectFromList%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionRegexEscape%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22pattern%22%3A%20%7B%22text%22%3A%20%22%28%3A%24%7C%3F%5C%5Cb%29%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B4%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22invert%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionFoldLinesMatchingPattern%22%7D%5D%2C%20%22name%22%3A%20%22TP%20Focus%20on%20Tag...%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad8%2C3%22%2C%20%22systemVersion%22%3A%20%2213.2.3%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_TAG.png%22%7D", "description": "TP Focus on Tag \u2026\n\nthis workflow is based on the original \"Focus on Tag\u2026\"* with two improvements for the use with TaskPaper documents. \n\t\n1. added a step at the beginning to expand the entire document before looking for @tags to find all of them. the original \"Focus on Tags\u2026\" would only find @tags in the currently filtered text.\n\n2. adjusted the last step to show TaskPaper project headlines (ending with \":\") in addition to @tags. this helps to keep an overview on the structure of the document.\n\nenjoy!\n||| tomas jay\n\n@therealtomasjay \n\n* what the original \"Focus on Tag\u2026\" does:\nAfter picking a tag from the list of tags in the current document, only tasks that contain this tag are shown, everything else is hidden (folded).", "title": "TP Focus on Tag..."}, {"url": "http://editorial-app.appspot.com/workflow/5815788028035072/Tx7Vz5ax8tk", "workflow_data": {"username": "sameh", "description": "Shows a list of URLs in the current document. Selecting one of the URLs opens it in the browser panel.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionExtractURLs"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "If no URLs are found...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"showHUD": true, "HUDTitle": "No URLs found", "stopOption": 0}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"list": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "", "showInPopover": true, "allowMultipleSelection": false}, "class": "WorkflowActionSelectFromList"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "If URL is selected...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"URL": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "waitUntilLoaded": false, "revealBrowserAutomatically": true, "openIn": 0, "tabOption": 0}, "class": "WorkflowActionOpenURL"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}], "name": "List URLs...", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone10,5", "systemVersion": "13.2.3"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_ANCHOR.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22sameh%22%2C%20%22description%22%3A%20%22Shows%20a%20list%20of%20URLs%20in%20the%20current%20document.%20Selecting%20one%20of%20the%20URLs%20opens%20it%20in%20the%20browser%20panel.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionExtractURLs%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22If%20no%20URLs%20are%20found...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20true%2C%20%22HUDTitle%22%3A%20%22No%20URLs%20found%22%2C%20%22stopOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22list%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22%22%2C%20%22showInPopover%22%3A%20true%2C%20%22allowMultipleSelection%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionSelectFromList%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22If%20URL%20is%20selected...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22URL%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22waitUntilLoaded%22%3A%20false%2C%20%22revealBrowserAutomatically%22%3A%20true%2C%20%22openIn%22%3A%200%2C%20%22tabOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%5D%2C%20%22name%22%3A%20%22List%20URLs...%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone10%2C5%22%2C%20%22systemVersion%22%3A%20%2213.2.3%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_ANCHOR.png%22%7D", "description": "Shows a list of URLs in the current document. Selecting one of the URLs opens it in the browser panel.", "title": "List URLs..."}, {"url": "http://editorial-app.appspot.com/workflow/5772780440125440/aR5JpABd1dI", "workflow_data": {"username": "osx", "description": "", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "//This sets the output of the workflow action:\nwindow.output = document.title;\n"}, "class": "WorkflowActionEvaluateJavascript"}], "name": "My Workflow", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone10,5", "systemVersion": "13.1.2"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22osx%22%2C%20%22description%22%3A%20%22%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%2F%2FThis%20sets%20the%20output%20of%20the%20workflow%20action%3A%5Cnwindow.output%20%3D%20document.title%3B%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionEvaluateJavascript%22%7D%5D%2C%20%22name%22%3A%20%22My%20Workflow%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone10%2C5%22%2C%20%22systemVersion%22%3A%20%2213.1.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "", "title": "My Workflow"}, {"url": "http://editorial-app.appspot.com/workflow/5827560801828864/jpNIhm57ZG4", "workflow_data": {"username": "", "description": "", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"content": {"text": "om bhur bhuvah svaha                                tat savitur varenyam                    bhargo devasya dhimahi                  dhyo yonah prachodayat", "tokenRanges": {}, "type": "advancedText"}, "open": true, "filename": {"text": "Gayatr\u012b mantra", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCreateNewDocument"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"E750F183-C9BA-4398-AE2C-2D15F3E738ED": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "#coding: utf-8\nimport workflow\n\n# Get the custom parameters as a dictionary (titles are keys):\nparams = workflow.get_parameters()\n# Get the action's input (a string):\naction_in = workflow.get_input()\n\n#...\n\nworkflow.set_output(action_in)\n", "__custom_action_parameters__": [{"type": "advancedText", "key": "E750F183-C9BA-4398-AE2C-2D15F3E738ED", "title": "Info"}]}, "class": "WorkflowActionCustom"}], "name": "TaskPaperom", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone9,3", "systemVersion": "13.3"}, "type": "edtpl", "public": true, "icon": "minicons-icons-validation-tick-1.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22content%22%3A%20%7B%22text%22%3A%20%22om%20bhur%20bhuvah%20svaha%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tat%20savitur%20varenyam%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bhargo%20devasya%20dhimahi%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20dhyo%20yonah%20prachodayat%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22open%22%3A%20true%2C%20%22filename%22%3A%20%7B%22text%22%3A%20%22Gayatr%5Cu012b%20mantra%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCreateNewDocument%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22E750F183-C9BA-4398-AE2C-2D15F3E738ED%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cn%5Cn%23%20Get%20the%20custom%20parameters%20as%20a%20dictionary%20%28titles%20are%20keys%29%3A%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cn%23%20Get%20the%20action%27s%20input%20%28a%20string%29%3A%5Cnaction_in%20%3D%20workflow.get_input%28%29%5Cn%5Cn%23...%5Cn%5Cnworkflow.set_output%28action_in%29%5Cn%22%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%22E750F183-C9BA-4398-AE2C-2D15F3E738ED%22%2C%20%22title%22%3A%20%22Info%22%7D%5D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%5D%2C%20%22name%22%3A%20%22TaskPaperom%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone9%2C3%22%2C%20%22systemVersion%22%3A%20%2213.3%22%7D%2C%20%22type%22%3A%20%22edtpl%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-validation-tick-1.png%22%7D", "description": "", "title": "TaskPaperom"}, {"url": "http://editorial-app.appspot.com/workflow/5809317592694784/99yGY7K09_0", "workflow_data": {"username": "", "description": "This workflow uses the UI module to allow you to do a find & replace throughout your selected text or the entire document if no text is selected. The UI was designed to work on both the iPhone and the iPad.\n\nOptions include:\n* Text or Regular Expression\n* Case-sensitive searches\n* Preview panel to make sure you're replacing what you want to replace (especially helpful for regex). This was adapted from the built-in Diff with Clipboard workflow.\n\nIf you have any suggestions, find any bugs, or want to see my other workflows for Editorial, please visit http://sweetnessoffreedom.wordpress.com/projects", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "doctext", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "visual find", "parameters": {"useEditorTheme": false, "ui": "[{\"class\":\"View\",\"attributes\":{\"tint_color\":\"RGBA(0.000000,0.328767,0.571429,1.000000)\",\"enabled\":true,\"flex\":\"\",\"action_workflow\":\"{\\\"actions\\\":[]}\",\"name\":\"Find & Replace\",\"border_color\":\"RGBA(0.000000,0.000000,0.000000,1.000000)\",\"background_color\":\"RGBA(1.000000,1.000000,1.000000,1.000000)\"},\"frame\":\"{{0, 0}, {238, 248}}\",\"nodes\":[{\"class\":\"TextField\",\"attributes\":{\"alignment\":\"left\",\"border_color\":\"RGBA(0.000000,0.000000,0.000000,1.000000)\",\"font_size\":17,\"enabled\":true,\"flex\":\"W\",\"autosave_enabled\":true,\"action_workflow\":\"{\\\"actions\\\":[]}\",\"placeholder\":\"Find...\",\"text_color\":\"RGBA(0.000000,0.000000,0.000000,1.000000)\",\"name\":\"find_text\",\"border_style\":3,\"uuid\":\"D534C067-27C1-4872-8C88-A63497FDF5F6\"},\"frame\":\"{{14, 14}, {210, 31}}\",\"nodes\":[]},{\"class\":\"TextField\",\"attributes\":{\"font_size\":17,\"enabled\":true,\"flex\":\"W\",\"name\":\"replace_text\",\"autosave_enabled\":true,\"border_style\":3,\"text_color\":\"RGBA(0.000000,0.000000,0.000000,1.000000)\",\"alignment\":\"left\",\"border_color\":\"RGBA(0.000000,0.000000,0.000000,1.000000)\",\"placeholder\":\"Replace...\",\"uuid\":\"35D7D6E7-4552-4468-8A7C-2DBFB746F946\"},\"frame\":\"{{14, 52}, {210, 31}}\",\"nodes\":[]},{\"class\":\"SegmentedControl\",\"attributes\":{\"tint_color\":\"RGBA(0.000000,0.328767,0.571429,1.000000)\",\"enabled\":true,\"flex\":\"W\",\"segments\":\"Text|Regex\",\"name\":\"find_type\",\"autosave_enabled\":true,\"border_color\":\"RGBA(0.000000,0.000000,0.000000,1.000000)\",\"uuid\":\"FA657B59-3557-4D72-83F0-3B8BD7FA96F0\"},\"frame\":\"{{14, 90}, {210, 31}}\",\"nodes\":[]},{\"class\":\"Switch\",\"attributes\":{\"tint_color\":\"RGBA(0.000000,0.328767,0.571429,1.000000)\",\"enabled\":true,\"flex\":\"W\",\"action_workflow\":\"{\\\"actions\\\":[]}\",\"name\":\"case_switch\",\"autosave_enabled\":true,\"value\":true,\"border_color\":\"RGBA(0.000000,0.000000,0.000000,1.000000)\",\"uuid\":\"DF33DA91-0361-4EFE-B705-A4CAC5B0C895\"},\"frame\":\"{{14, 128}, {51, 31}}\",\"nodes\":[]},{\"class\":\"Button\",\"attributes\":{\"image_name\":\"ionicons-eye-32\",\"border_color\":\"RGBA(0.000000,0.328768,0.571429,1.000000)\",\"font_size\":15,\"title\":\"Preview\",\"enabled\":true,\"tint_color\":\"RGBA(0.000000,0.328767,0.571429,1.000000)\",\"flex\":\"W\",\"action_workflow\":\"{\\\"actions\\\":[{\\\"class\\\":\\\"WorkflowActionStoreVariable\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"name\\\":\\\"find-text-variable\\\",\\\"value\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"%ui:find_text\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"}},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionStoreVariable\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"name\\\":\\\"replace-text-variable\\\",\\\"value\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"%ui:replace_text\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"}},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionStoreVariable\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"name\\\":\\\"case-type\\\",\\\"value\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"%ui:case_switch\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"}},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionFormatString\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"text\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"doctext\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"}},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionCondition\\\",\\\"pauseBeforeRunning\\\":false,\\\"subActions\\\":[{\\\"class\\\":\\\"WorkflowActionCondition\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"case-sensitive\\\",\\\"parameters\\\":{\\\"expression1\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"%ui:case_switch\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"},\\\"expression2\\\":{\\\"tokenRanges\\\":{},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"ON\\\"},\\\"comparisonType\\\":0},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionFindReplace\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"find\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"find-text-variable\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"},\\\"findOption\\\":1,\\\"replace\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"replace-text-variable\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"}},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionConditionEnd\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionCondition\\\",\\\"pauseBeforeRunning\\\":false,\\\"subActions\\\":[{\\\"class\\\":\\\"WorkflowActionFindReplace\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"find\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"find-text-variable\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"},\\\"findOption\\\":0,\\\"replace\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"replace-text-variable\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"}},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionConditionEnd\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{},\\\"pauseWithoutShowingParameters\\\":false}],\\\"customTitle\\\":\\\"case-insensitive\\\",\\\"parameters\\\":{\\\"expression1\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"%ui:case_switch\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"},\\\"expression2\\\":{\\\"tokenRanges\\\":{},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"OFF\\\"},\\\"comparisonType\\\":0},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionConditionEnd\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{},\\\"pauseWithoutShowingParameters\\\":false}],\\\"customTitle\\\":\\\"run text replace\\\",\\\"parameters\\\":{\\\"expression1\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"%ui:find_type\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"},\\\"expression2\\\":{\\\"tokenRanges\\\":{},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"Text\\\"},\\\"comparisonType\\\":0},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionCondition\\\",\\\"pauseBeforeRunning\\\":false,\\\"subActions\\\":[{\\\"class\\\":\\\"WorkflowActionFindReplace\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"find\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"find-text-variable\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"},\\\"findOption\\\":2,\\\"replace\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"replace-text-variable\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"}},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionConditionEnd\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{},\\\"pauseWithoutShowingParameters\\\":false}],\\\"customTitle\\\":\\\"run regex replace\\\",\\\"parameters\\\":{\\\"expression1\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"%ui:find_type\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"},\\\"expression2\\\":{\\\"tokenRanges\\\":{},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"Regex\\\"},\\\"comparisonType\\\":0},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionStoreVariable\\\",\\\"pauseBeforeRunning\\\":true,\\\"colorLabel\\\":3,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"name\\\":\\\"replacedtext\\\",\\\"value\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"Input\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"}},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionStoreVariable\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"name\\\":\\\"CSS Light\\\",\\\"value\\\":{\\\"tokenRanges\\\":{},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"body {\\\\n\\\\tbackground-color: #f6f6f6;\\\\n\\\\tcolor: #333;\\\\n\\\\tfont-family: \\\\\\\"Source Sans Pro\\\\\\\";\\\\n\\\\tmargin:40px;\\\\n}\\\\ndel {\\\\n\\\\tcolor: #820e03;\\\\n\\\\tbackground-color: #ffb5af;\\\\n\\\\t-webkit-border-radius: 3px;\\\\n}\\\\nins {\\\\n\\\\ttext-decoration: none;\\\\n\\\\tcolor: #50792c;\\\\n\\\\tbackground-color: #e0edd5;\\\\n\\\\t-webkit-border-radius: 3px;\\\\n}\\\\npre {\\\\n\\\\twhite-space: pre-wrap;\\\\n\\\\tfont-family: \\\\\\\"DejaVuSansMono\\\\\\\";\\\\n\\\\tfont-size: 17px;\\\\n}\\\\n@media only screen and (max-device-width: 568px) {\\\\n\\\\tbody {\\\\n\\\\t\\\\tmargin: 10px;\\\\n\\\\t}\\\\n\\\\th1 {\\\\n\\\\t\\\\tfont-size: 18px;\\\\n\\\\t}\\\\n\\\\tpre {\\\\n\\\\t\\\\tfont-size: 15px;\\\\n\\\\t}\\\\n\\\\t* {\\\\n\\\\t\\\\t-webkit-text-size-adjust: none;\\\\n\\\\t}\\\\n}\\\"}},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionStoreVariable\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"name\\\":\\\"CSS Dark\\\",\\\"value\\\":{\\\"tokenRanges\\\":{},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"body {\\\\n\\\\tbackground-color: #262b30;\\\\n\\\\tcolor: #ebebeb;\\\\n\\\\tfont-family: \\\\\\\"Source Sans Pro\\\\\\\";\\\\n\\\\tmargin:40px;\\\\n}\\\\ndel {\\\\n\\\\tcolor: #ffdad8;\\\\n\\\\tbackground-color: #5c0700;\\\\n\\\\t-webkit-border-radius: 3px;\\\\n}\\\\nins {\\\\n\\\\ttext-decoration: none;\\\\n\\\\tcolor: #cce8b5;\\\\n\\\\tbackground-color: #263e0f;\\\\n\\\\t-webkit-border-radius: 3px;\\\\n}\\\\npre {\\\\n\\\\twhite-space: pre-wrap;\\\\n\\\\tfont-family: \\\\\\\"DejaVuSansMono\\\\\\\";\\\\n\\\\tfont-size: 17px;\\\\n}\\\\n@media only screen and (max-device-width: 568px) {\\\\n\\\\tbody {\\\\n\\\\t\\\\tmargin: 10px;\\\\n\\\\t}\\\\n\\\\th1 {\\\\n\\\\t\\\\tfont-size: 18px;\\\\n\\\\t}\\\\n\\\\tpre {\\\\n\\\\t\\\\tfont-size: 15px;\\\\n\\\\t}\\\\n\\\\t* {\\\\n\\\\t\\\\t-webkit-text-size-adjust: none;\\\\n\\\\t}\\\\n}\\\"}},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionStoreVariable\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"name\\\":\\\"CSS\\\",\\\"value\\\":{\\\"tokenRanges\\\":{},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"This is set from the script, depending on the currently selected theme.\\\"}},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionRunScript\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"startNewInterpreter\\\":false,\\\"script\\\":\\\"#coding: utf-8\\\\nimport workflow\\\\nimport editor\\\\nimport clipboard\\\\nimport difflib\\\\nfrom StringIO import StringIO\\\\nimport cgi\\\\n\\\\ndef html_diff(a, b):\\\\n\\\\tseq = difflib.SequenceMatcher(None, a, b)\\\\n\\\\topcodes = seq.get_opcodes()\\\\n\\\\tout = StringIO()\\\\n\\\\tfor op, a0, a1, b0, b1 in opcodes:\\\\n\\\\t\\\\tif op == 'equal':\\\\n\\\\t\\\\t\\\\tout.write(a[a0:a1])\\\\n\\\\t\\\\tif op == 'insert' or op == 'replace':\\\\n\\\\t\\\\t\\\\tout.write('<ins>' + b[b0:b1] + '<\\\\\\/ins>')\\\\n\\\\t\\\\tif op == 'delete' or op == 'replace':\\\\n\\\\t\\\\t\\\\tout.write('<del>' + a[a0:a1] + '<\\\\\\/del>')\\\\n\\\\treturn out.getvalue()\\\\n\\\\ndef main():\\\\n\\\\ttheme = editor.get_theme()\\\\n\\\\tworkflow.set_variable('CSS', workflow.get_variable('CSS Dark' if theme == 'Dark' else 'CSS Light'))\\\\n\\\\ta = cgi.escape(editor.get_text())\\\\n\\\\tb = cgi.escape(workflow.get_variable('replacedtext'))\\\\n\\\\thtml = html_diff(a, b)\\\\n\\\\tworkflow.set_output(html)\\\\n\\\\nif __name__ == '__main__':\\\\n\\\\tmain()\\\\n\\\"},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionShowHTMLPreview\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"title\\\":\\\"Diff\\\",\\\"baseURL\\\":\\\"\\\",\\\"html\\\":{\\\"tokenRanges\\\":{\\\"{117, 1}\\\":\\\"Input\\\",\\\"{59, 1}\\\":\\\"CSS\\\",\\\"{87, 1}\\\":\\\"%editor:filename\\\",\\\"{89, 1}\\\":\\\"%editor:file-extension\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"<!DOCTYPE html><html>\\\\n<head><meta charset=\\\\\\\"utf-8\\\\\\\"\\\\\\/>\\\\n<style>?<\\\\\\/style><\\\\\\/head>\\\\n<body>\\\\n<h1>?.? \u27a1 Regex Replace<\\\\\\/h1>\\\\n<pre>?<\\\\\\/pre>\\\\n<\\\\\\/body><\\\\\\/html>\\\"}},\\\"pauseWithoutShowingParameters\\\":false}]}\",\"font_bold\":false,\"alpha\":1,\"name\":\"Preview Button\",\"border_width\":1,\"uuid\":\"AE7F0B29-C7EB-43B7-8225-35C98BFB7986\",\"corner_radius\":4},\"frame\":\"{{14, 166}, {210, 31}}\",\"nodes\":[]},{\"class\":\"Label\",\"attributes\":{\"font_size\":17,\"enabled\":true,\"text\":\"Case-sensitive\",\"numberOfLines\":0,\"name\":\"label3\",\"flex\":\"W\",\"border_color\":\"RGBA(0.000000,0.000000,0.000000,1.000000)\",\"text_color\":\"RGBA(0.000000,0.328767,0.571429,1.000000)\",\"alignment\":\"center\",\"action_workflow\":\"{\\\"actions\\\":[]}\",\"uuid\":\"A9D67E1E-AD5F-4525-B2B7-67626B6A394B\"},\"frame\":\"{{73, 128}, {151.5, 31}}\",\"nodes\":[]},{\"class\":\"Button\",\"attributes\":{\"image_name\":\"ionicons-shuffle-32\",\"border_color\":\"RGBA(0.000000,0.328767,0.571429,1.000000)\",\"font_size\":15,\"title\":\"Replace\",\"enabled\":true,\"tint_color\":\"RGBA(0.000000,0.328767,0.571429,1.000000)\",\"flex\":\"W\",\"action_workflow\":\"{\\\"actions\\\":[{\\\"class\\\":\\\"WorkflowActionShowAlert\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"button1Value\\\":{\\\"tokenRanges\\\":{},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"replace\\\"},\\\"showCancelButton\\\":true,\\\"button1Title\\\":\\\"\\\",\\\"button3Value\\\":{\\\"tokenRanges\\\":{},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"\\\"},\\\"message\\\":{\\\"tokenRanges\\\":{},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"Are you sure you want to replace?\\\"},\\\"button3Title\\\":\\\"\\\",\\\"button2Value\\\":{\\\"tokenRanges\\\":{},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"\\\"},\\\"button2Title\\\":\\\"\\\",\\\"title\\\":\\\"'Replace' Selected.\\\"},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionCondition\\\",\\\"pauseBeforeRunning\\\":false,\\\"colorLabel\\\":4,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"expression1\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"Input\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"},\\\"expression2\\\":{\\\"tokenRanges\\\":{},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"replace\\\"},\\\"comparisonType\\\":0},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionStoreVariable\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"name\\\":\\\"find-type-variable\\\",\\\"value\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"%ui:find_type\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"}},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionStoreVariable\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"name\\\":\\\"find-text-variable\\\",\\\"value\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"%ui:find_text\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"}},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionStoreVariable\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"name\\\":\\\"replace-text-variable\\\",\\\"value\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"%ui:replace_text\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"}},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionCondition\\\",\\\"pauseBeforeRunning\\\":false,\\\"colorLabel\\\":4,\\\"customTitle\\\":\\\"run text replace\\\",\\\"parameters\\\":{\\\"expression1\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"find-type-variable\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"},\\\"expression2\\\":{\\\"tokenRanges\\\":{},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"Text\\\"},\\\"comparisonType\\\":0},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionCondition\\\",\\\"pauseBeforeRunning\\\":false,\\\"subActions\\\":[{\\\"class\\\":\\\"WorkflowActionGetSelectedText\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"emptySelectionOption\\\":0,\\\"selectEntireLines\\\":false},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionFindReplace\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"find\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"find-text-variable\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"},\\\"findOption\\\":1,\\\"replace\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"replace-text-variable\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"}},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionReplaceSelectedText\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"replacement\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"Input\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"}},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionConditionEnd\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{},\\\"pauseWithoutShowingParameters\\\":false}],\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"expression1\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"%ui:case_switch\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"},\\\"expression2\\\":{\\\"tokenRanges\\\":{},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"ON\\\"},\\\"comparisonType\\\":0},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionConditionEnd\\\",\\\"pauseBeforeRunning\\\":false,\\\"colorLabel\\\":4,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{},\\\"pauseWithoutShowingParameters\\\":false},{\\\"customTitle\\\":\\\"run regex replace\\\",\\\"parameters\\\":{\\\"expression1\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"find-type-variable\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"},\\\"expression2\\\":{\\\"tokenRanges\\\":{},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"Regex\\\"},\\\"comparisonType\\\":0},\\\"class\\\":\\\"WorkflowActionCondition\\\",\\\"pauseBeforeRunning\\\":false,\\\"colorLabel\\\":4,\\\"subActions\\\":[{\\\"class\\\":\\\"WorkflowActionGetSelectedText\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"emptySelectionOption\\\":0,\\\"selectEntireLines\\\":false},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionFindReplace\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"find\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"find-text-variable\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"},\\\"findOption\\\":2,\\\"replace\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"replace-text-variable\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"}},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionReplaceSelectedText\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"replacement\\\":{\\\"tokenRanges\\\":{\\\"{0, 1}\\\":\\\"Input\\\"},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"?\\\"}},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionConditionEnd\\\",\\\"pauseBeforeRunning\\\":false,\\\"colorLabel\\\":4,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{},\\\"pauseWithoutShowingParameters\\\":false}],\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionConditionEnd\\\",\\\"pauseBeforeRunning\\\":false,\\\"colorLabel\\\":4,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{},\\\"pauseWithoutShowingParameters\\\":false},{\\\"class\\\":\\\"WorkflowActionShowHUD\\\",\\\"pauseBeforeRunning\\\":false,\\\"customTitle\\\":\\\"\\\",\\\"parameters\\\":{\\\"icon\\\":0,\\\"duration\\\":0,\\\"HUDText\\\":{\\\"tokenRanges\\\":{},\\\"type\\\":\\\"advancedText\\\",\\\"text\\\":\\\"Text replaced!\\\"}},\\\"pauseWithoutShowingParameters\\\":false}]}\",\"font_bold\":false,\"name\":\"Replace Button\",\"corner_radius\":4,\"uuid\":\"95CCBD75-0048-432A-A151-4F30704239E7\",\"border_width\":1},\"frame\":\"{{14, 204}, {210, 31}}\",\"nodes\":[]}]}]", "presentationStyle": 2}, "class": "WorkflowActionCustomUI"}], "name": "Visual Find & Replace", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone11,6", "systemVersion": "13.3"}, "type": "wkflw", "public": true, "icon": "minicons-icons-attribute-alert.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22This%20workflow%20uses%20the%20UI%20module%20to%20allow%20you%20to%20do%20a%20find%20%26%20replace%20throughout%20your%20selected%20text%20or%20the%20entire%20document%20if%20no%20text%20is%20selected.%20The%20UI%20was%20designed%20to%20work%20on%20both%20the%20iPhone%20and%20the%20iPad.%5Cn%5CnOptions%20include%3A%5Cn%2A%20Text%20or%20Regular%20Expression%5Cn%2A%20Case-sensitive%20searches%5Cn%2A%20Preview%20panel%20to%20make%20sure%20you%27re%20replacing%20what%20you%20want%20to%20replace%20%28especially%20helpful%20for%20regex%29.%20This%20was%20adapted%20from%20the%20built-in%20Diff%20with%20Clipboard%20workflow.%5Cn%5CnIf%20you%20have%20any%20suggestions%2C%20find%20any%20bugs%2C%20or%20want%20to%20see%20my%20other%20workflows%20for%20Editorial%2C%20please%20visit%20http%3A%2F%2Fsweetnessoffreedom.wordpress.com%2Fprojects%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22doctext%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22visual%20find%22%2C%20%22parameters%22%3A%20%7B%22useEditorTheme%22%3A%20false%2C%20%22ui%22%3A%20%22%5B%7B%5C%22class%5C%22%3A%5C%22View%5C%22%2C%5C%22attributes%5C%22%3A%7B%5C%22tint_color%5C%22%3A%5C%22RGBA%280.000000%2C0.328767%2C0.571429%2C1.000000%29%5C%22%2C%5C%22enabled%5C%22%3Atrue%2C%5C%22flex%5C%22%3A%5C%22%5C%22%2C%5C%22action_workflow%5C%22%3A%5C%22%7B%5C%5C%5C%22actions%5C%5C%5C%22%3A%5B%5D%7D%5C%22%2C%5C%22name%5C%22%3A%5C%22Find%20%26%20Replace%5C%22%2C%5C%22border_color%5C%22%3A%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5C%22background_color%5C%22%3A%5C%22RGBA%281.000000%2C1.000000%2C1.000000%2C1.000000%29%5C%22%7D%2C%5C%22frame%5C%22%3A%5C%22%7B%7B0%2C%200%7D%2C%20%7B238%2C%20248%7D%7D%5C%22%2C%5C%22nodes%5C%22%3A%5B%7B%5C%22class%5C%22%3A%5C%22TextField%5C%22%2C%5C%22attributes%5C%22%3A%7B%5C%22alignment%5C%22%3A%5C%22left%5C%22%2C%5C%22border_color%5C%22%3A%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5C%22font_size%5C%22%3A17%2C%5C%22enabled%5C%22%3Atrue%2C%5C%22flex%5C%22%3A%5C%22W%5C%22%2C%5C%22autosave_enabled%5C%22%3Atrue%2C%5C%22action_workflow%5C%22%3A%5C%22%7B%5C%5C%5C%22actions%5C%5C%5C%22%3A%5B%5D%7D%5C%22%2C%5C%22placeholder%5C%22%3A%5C%22Find...%5C%22%2C%5C%22text_color%5C%22%3A%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5C%22name%5C%22%3A%5C%22find_text%5C%22%2C%5C%22border_style%5C%22%3A3%2C%5C%22uuid%5C%22%3A%5C%22D534C067-27C1-4872-8C88-A63497FDF5F6%5C%22%7D%2C%5C%22frame%5C%22%3A%5C%22%7B%7B14%2C%2014%7D%2C%20%7B210%2C%2031%7D%7D%5C%22%2C%5C%22nodes%5C%22%3A%5B%5D%7D%2C%7B%5C%22class%5C%22%3A%5C%22TextField%5C%22%2C%5C%22attributes%5C%22%3A%7B%5C%22font_size%5C%22%3A17%2C%5C%22enabled%5C%22%3Atrue%2C%5C%22flex%5C%22%3A%5C%22W%5C%22%2C%5C%22name%5C%22%3A%5C%22replace_text%5C%22%2C%5C%22autosave_enabled%5C%22%3Atrue%2C%5C%22border_style%5C%22%3A3%2C%5C%22text_color%5C%22%3A%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5C%22alignment%5C%22%3A%5C%22left%5C%22%2C%5C%22border_color%5C%22%3A%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5C%22placeholder%5C%22%3A%5C%22Replace...%5C%22%2C%5C%22uuid%5C%22%3A%5C%2235D7D6E7-4552-4468-8A7C-2DBFB746F946%5C%22%7D%2C%5C%22frame%5C%22%3A%5C%22%7B%7B14%2C%2052%7D%2C%20%7B210%2C%2031%7D%7D%5C%22%2C%5C%22nodes%5C%22%3A%5B%5D%7D%2C%7B%5C%22class%5C%22%3A%5C%22SegmentedControl%5C%22%2C%5C%22attributes%5C%22%3A%7B%5C%22tint_color%5C%22%3A%5C%22RGBA%280.000000%2C0.328767%2C0.571429%2C1.000000%29%5C%22%2C%5C%22enabled%5C%22%3Atrue%2C%5C%22flex%5C%22%3A%5C%22W%5C%22%2C%5C%22segments%5C%22%3A%5C%22Text%7CRegex%5C%22%2C%5C%22name%5C%22%3A%5C%22find_type%5C%22%2C%5C%22autosave_enabled%5C%22%3Atrue%2C%5C%22border_color%5C%22%3A%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5C%22uuid%5C%22%3A%5C%22FA657B59-3557-4D72-83F0-3B8BD7FA96F0%5C%22%7D%2C%5C%22frame%5C%22%3A%5C%22%7B%7B14%2C%2090%7D%2C%20%7B210%2C%2031%7D%7D%5C%22%2C%5C%22nodes%5C%22%3A%5B%5D%7D%2C%7B%5C%22class%5C%22%3A%5C%22Switch%5C%22%2C%5C%22attributes%5C%22%3A%7B%5C%22tint_color%5C%22%3A%5C%22RGBA%280.000000%2C0.328767%2C0.571429%2C1.000000%29%5C%22%2C%5C%22enabled%5C%22%3Atrue%2C%5C%22flex%5C%22%3A%5C%22W%5C%22%2C%5C%22action_workflow%5C%22%3A%5C%22%7B%5C%5C%5C%22actions%5C%5C%5C%22%3A%5B%5D%7D%5C%22%2C%5C%22name%5C%22%3A%5C%22case_switch%5C%22%2C%5C%22autosave_enabled%5C%22%3Atrue%2C%5C%22value%5C%22%3Atrue%2C%5C%22border_color%5C%22%3A%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5C%22uuid%5C%22%3A%5C%22DF33DA91-0361-4EFE-B705-A4CAC5B0C895%5C%22%7D%2C%5C%22frame%5C%22%3A%5C%22%7B%7B14%2C%20128%7D%2C%20%7B51%2C%2031%7D%7D%5C%22%2C%5C%22nodes%5C%22%3A%5B%5D%7D%2C%7B%5C%22class%5C%22%3A%5C%22Button%5C%22%2C%5C%22attributes%5C%22%3A%7B%5C%22image_name%5C%22%3A%5C%22ionicons-eye-32%5C%22%2C%5C%22border_color%5C%22%3A%5C%22RGBA%280.000000%2C0.328768%2C0.571429%2C1.000000%29%5C%22%2C%5C%22font_size%5C%22%3A15%2C%5C%22title%5C%22%3A%5C%22Preview%5C%22%2C%5C%22enabled%5C%22%3Atrue%2C%5C%22tint_color%5C%22%3A%5C%22RGBA%280.000000%2C0.328767%2C0.571429%2C1.000000%29%5C%22%2C%5C%22flex%5C%22%3A%5C%22W%5C%22%2C%5C%22action_workflow%5C%22%3A%5C%22%7B%5C%5C%5C%22actions%5C%5C%5C%22%3A%5B%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionStoreVariable%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22name%5C%5C%5C%22%3A%5C%5C%5C%22find-text-variable%5C%5C%5C%22%2C%5C%5C%5C%22value%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22%25ui%3Afind_text%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionStoreVariable%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22name%5C%5C%5C%22%3A%5C%5C%5C%22replace-text-variable%5C%5C%5C%22%2C%5C%5C%5C%22value%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22%25ui%3Areplace_text%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionStoreVariable%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22name%5C%5C%5C%22%3A%5C%5C%5C%22case-type%5C%5C%5C%22%2C%5C%5C%5C%22value%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22%25ui%3Acase_switch%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionFormatString%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22text%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22doctext%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionCondition%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22subActions%5C%5C%5C%22%3A%5B%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionCondition%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22case-sensitive%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22expression1%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22%25ui%3Acase_switch%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%2C%5C%5C%5C%22expression2%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22ON%5C%5C%5C%22%7D%2C%5C%5C%5C%22comparisonType%5C%5C%5C%22%3A0%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionFindReplace%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22find%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22find-text-variable%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%2C%5C%5C%5C%22findOption%5C%5C%5C%22%3A1%2C%5C%5C%5C%22replace%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22replace-text-variable%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionConditionEnd%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionCondition%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22subActions%5C%5C%5C%22%3A%5B%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionFindReplace%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22find%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22find-text-variable%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%2C%5C%5C%5C%22findOption%5C%5C%5C%22%3A0%2C%5C%5C%5C%22replace%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22replace-text-variable%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionConditionEnd%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%5D%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22case-insensitive%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22expression1%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22%25ui%3Acase_switch%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%2C%5C%5C%5C%22expression2%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22OFF%5C%5C%5C%22%7D%2C%5C%5C%5C%22comparisonType%5C%5C%5C%22%3A0%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionConditionEnd%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%5D%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22run%20text%20replace%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22expression1%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22%25ui%3Afind_type%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%2C%5C%5C%5C%22expression2%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22Text%5C%5C%5C%22%7D%2C%5C%5C%5C%22comparisonType%5C%5C%5C%22%3A0%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionCondition%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22subActions%5C%5C%5C%22%3A%5B%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionFindReplace%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22find%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22find-text-variable%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%2C%5C%5C%5C%22findOption%5C%5C%5C%22%3A2%2C%5C%5C%5C%22replace%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22replace-text-variable%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionConditionEnd%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%5D%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22run%20regex%20replace%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22expression1%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22%25ui%3Afind_type%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%2C%5C%5C%5C%22expression2%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22Regex%5C%5C%5C%22%7D%2C%5C%5C%5C%22comparisonType%5C%5C%5C%22%3A0%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionStoreVariable%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Atrue%2C%5C%5C%5C%22colorLabel%5C%5C%5C%22%3A3%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22name%5C%5C%5C%22%3A%5C%5C%5C%22replacedtext%5C%5C%5C%22%2C%5C%5C%5C%22value%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22Input%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionStoreVariable%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22name%5C%5C%5C%22%3A%5C%5C%5C%22CSS%20Light%5C%5C%5C%22%2C%5C%5C%5C%22value%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22body%20%7B%5C%5C%5C%5Cn%5C%5C%5C%5Ctbackground-color%3A%20%23f6f6f6%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ctcolor%3A%20%23333%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ctfont-family%3A%20%5C%5C%5C%5C%5C%5C%5C%22Source%20Sans%20Pro%5C%5C%5C%5C%5C%5C%5C%22%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ctmargin%3A40px%3B%5C%5C%5C%5Cn%7D%5C%5C%5C%5Cndel%20%7B%5C%5C%5C%5Cn%5C%5C%5C%5Ctcolor%3A%20%23820e03%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ctbackground-color%3A%20%23ffb5af%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ct-webkit-border-radius%3A%203px%3B%5C%5C%5C%5Cn%7D%5C%5C%5C%5Cnins%20%7B%5C%5C%5C%5Cn%5C%5C%5C%5Cttext-decoration%3A%20none%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ctcolor%3A%20%2350792c%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ctbackground-color%3A%20%23e0edd5%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ct-webkit-border-radius%3A%203px%3B%5C%5C%5C%5Cn%7D%5C%5C%5C%5Cnpre%20%7B%5C%5C%5C%5Cn%5C%5C%5C%5Ctwhite-space%3A%20pre-wrap%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ctfont-family%3A%20%5C%5C%5C%5C%5C%5C%5C%22DejaVuSansMono%5C%5C%5C%5C%5C%5C%5C%22%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ctfont-size%3A%2017px%3B%5C%5C%5C%5Cn%7D%5C%5C%5C%5Cn%40media%20only%20screen%20and%20%28max-device-width%3A%20568px%29%20%7B%5C%5C%5C%5Cn%5C%5C%5C%5Ctbody%20%7B%5C%5C%5C%5Cn%5C%5C%5C%5Ct%5C%5C%5C%5Ctmargin%3A%2010px%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ct%7D%5C%5C%5C%5Cn%5C%5C%5C%5Cth1%20%7B%5C%5C%5C%5Cn%5C%5C%5C%5Ct%5C%5C%5C%5Ctfont-size%3A%2018px%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ct%7D%5C%5C%5C%5Cn%5C%5C%5C%5Ctpre%20%7B%5C%5C%5C%5Cn%5C%5C%5C%5Ct%5C%5C%5C%5Ctfont-size%3A%2015px%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ct%7D%5C%5C%5C%5Cn%5C%5C%5C%5Ct%2A%20%7B%5C%5C%5C%5Cn%5C%5C%5C%5Ct%5C%5C%5C%5Ct-webkit-text-size-adjust%3A%20none%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ct%7D%5C%5C%5C%5Cn%7D%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionStoreVariable%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22name%5C%5C%5C%22%3A%5C%5C%5C%22CSS%20Dark%5C%5C%5C%22%2C%5C%5C%5C%22value%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22body%20%7B%5C%5C%5C%5Cn%5C%5C%5C%5Ctbackground-color%3A%20%23262b30%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ctcolor%3A%20%23ebebeb%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ctfont-family%3A%20%5C%5C%5C%5C%5C%5C%5C%22Source%20Sans%20Pro%5C%5C%5C%5C%5C%5C%5C%22%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ctmargin%3A40px%3B%5C%5C%5C%5Cn%7D%5C%5C%5C%5Cndel%20%7B%5C%5C%5C%5Cn%5C%5C%5C%5Ctcolor%3A%20%23ffdad8%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ctbackground-color%3A%20%235c0700%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ct-webkit-border-radius%3A%203px%3B%5C%5C%5C%5Cn%7D%5C%5C%5C%5Cnins%20%7B%5C%5C%5C%5Cn%5C%5C%5C%5Cttext-decoration%3A%20none%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ctcolor%3A%20%23cce8b5%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ctbackground-color%3A%20%23263e0f%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ct-webkit-border-radius%3A%203px%3B%5C%5C%5C%5Cn%7D%5C%5C%5C%5Cnpre%20%7B%5C%5C%5C%5Cn%5C%5C%5C%5Ctwhite-space%3A%20pre-wrap%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ctfont-family%3A%20%5C%5C%5C%5C%5C%5C%5C%22DejaVuSansMono%5C%5C%5C%5C%5C%5C%5C%22%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ctfont-size%3A%2017px%3B%5C%5C%5C%5Cn%7D%5C%5C%5C%5Cn%40media%20only%20screen%20and%20%28max-device-width%3A%20568px%29%20%7B%5C%5C%5C%5Cn%5C%5C%5C%5Ctbody%20%7B%5C%5C%5C%5Cn%5C%5C%5C%5Ct%5C%5C%5C%5Ctmargin%3A%2010px%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ct%7D%5C%5C%5C%5Cn%5C%5C%5C%5Cth1%20%7B%5C%5C%5C%5Cn%5C%5C%5C%5Ct%5C%5C%5C%5Ctfont-size%3A%2018px%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ct%7D%5C%5C%5C%5Cn%5C%5C%5C%5Ctpre%20%7B%5C%5C%5C%5Cn%5C%5C%5C%5Ct%5C%5C%5C%5Ctfont-size%3A%2015px%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ct%7D%5C%5C%5C%5Cn%5C%5C%5C%5Ct%2A%20%7B%5C%5C%5C%5Cn%5C%5C%5C%5Ct%5C%5C%5C%5Ct-webkit-text-size-adjust%3A%20none%3B%5C%5C%5C%5Cn%5C%5C%5C%5Ct%7D%5C%5C%5C%5Cn%7D%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionStoreVariable%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22name%5C%5C%5C%22%3A%5C%5C%5C%22CSS%5C%5C%5C%22%2C%5C%5C%5C%22value%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22This%20is%20set%20from%20the%20script%2C%20depending%20on%20the%20currently%20selected%20theme.%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionRunScript%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22startNewInterpreter%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22script%5C%5C%5C%22%3A%5C%5C%5C%22%23coding%3A%20utf-8%5C%5C%5C%5Cnimport%20workflow%5C%5C%5C%5Cnimport%20editor%5C%5C%5C%5Cnimport%20clipboard%5C%5C%5C%5Cnimport%20difflib%5C%5C%5C%5Cnfrom%20StringIO%20import%20StringIO%5C%5C%5C%5Cnimport%20cgi%5C%5C%5C%5Cn%5C%5C%5C%5Cndef%20html_diff%28a%2C%20b%29%3A%5C%5C%5C%5Cn%5C%5C%5C%5Ctseq%20%3D%20difflib.SequenceMatcher%28None%2C%20a%2C%20b%29%5C%5C%5C%5Cn%5C%5C%5C%5Ctopcodes%20%3D%20seq.get_opcodes%28%29%5C%5C%5C%5Cn%5C%5C%5C%5Ctout%20%3D%20StringIO%28%29%5C%5C%5C%5Cn%5C%5C%5C%5Ctfor%20op%2C%20a0%2C%20a1%2C%20b0%2C%20b1%20in%20opcodes%3A%5C%5C%5C%5Cn%5C%5C%5C%5Ct%5C%5C%5C%5Ctif%20op%20%3D%3D%20%27equal%27%3A%5C%5C%5C%5Cn%5C%5C%5C%5Ct%5C%5C%5C%5Ct%5C%5C%5C%5Ctout.write%28a%5Ba0%3Aa1%5D%29%5C%5C%5C%5Cn%5C%5C%5C%5Ct%5C%5C%5C%5Ctif%20op%20%3D%3D%20%27insert%27%20or%20op%20%3D%3D%20%27replace%27%3A%5C%5C%5C%5Cn%5C%5C%5C%5Ct%5C%5C%5C%5Ct%5C%5C%5C%5Ctout.write%28%27%3Cins%3E%27%20%2B%20b%5Bb0%3Ab1%5D%20%2B%20%27%3C%5C%5C%5C%5C%5C%5C%2Fins%3E%27%29%5C%5C%5C%5Cn%5C%5C%5C%5Ct%5C%5C%5C%5Ctif%20op%20%3D%3D%20%27delete%27%20or%20op%20%3D%3D%20%27replace%27%3A%5C%5C%5C%5Cn%5C%5C%5C%5Ct%5C%5C%5C%5Ct%5C%5C%5C%5Ctout.write%28%27%3Cdel%3E%27%20%2B%20a%5Ba0%3Aa1%5D%20%2B%20%27%3C%5C%5C%5C%5C%5C%5C%2Fdel%3E%27%29%5C%5C%5C%5Cn%5C%5C%5C%5Ctreturn%20out.getvalue%28%29%5C%5C%5C%5Cn%5C%5C%5C%5Cndef%20main%28%29%3A%5C%5C%5C%5Cn%5C%5C%5C%5Cttheme%20%3D%20editor.get_theme%28%29%5C%5C%5C%5Cn%5C%5C%5C%5Ctworkflow.set_variable%28%27CSS%27%2C%20workflow.get_variable%28%27CSS%20Dark%27%20if%20theme%20%3D%3D%20%27Dark%27%20else%20%27CSS%20Light%27%29%29%5C%5C%5C%5Cn%5C%5C%5C%5Cta%20%3D%20cgi.escape%28editor.get_text%28%29%29%5C%5C%5C%5Cn%5C%5C%5C%5Ctb%20%3D%20cgi.escape%28workflow.get_variable%28%27replacedtext%27%29%29%5C%5C%5C%5Cn%5C%5C%5C%5Cthtml%20%3D%20html_diff%28a%2C%20b%29%5C%5C%5C%5Cn%5C%5C%5C%5Ctworkflow.set_output%28html%29%5C%5C%5C%5Cn%5C%5C%5C%5Cnif%20__name__%20%3D%3D%20%27__main__%27%3A%5C%5C%5C%5Cn%5C%5C%5C%5Ctmain%28%29%5C%5C%5C%5Cn%5C%5C%5C%22%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionShowHTMLPreview%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22title%5C%5C%5C%22%3A%5C%5C%5C%22Diff%5C%5C%5C%22%2C%5C%5C%5C%22baseURL%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22html%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B117%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22Input%5C%5C%5C%22%2C%5C%5C%5C%22%7B59%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22CSS%5C%5C%5C%22%2C%5C%5C%5C%22%7B87%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22%25editor%3Afilename%5C%5C%5C%22%2C%5C%5C%5C%22%7B89%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22%25editor%3Afile-extension%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3C%21DOCTYPE%20html%3E%3Chtml%3E%5C%5C%5C%5Cn%3Chead%3E%3Cmeta%20charset%3D%5C%5C%5C%5C%5C%5C%5C%22utf-8%5C%5C%5C%5C%5C%5C%5C%22%5C%5C%5C%5C%5C%5C%2F%3E%5C%5C%5C%5Cn%3Cstyle%3E%3F%3C%5C%5C%5C%5C%5C%5C%2Fstyle%3E%3C%5C%5C%5C%5C%5C%5C%2Fhead%3E%5C%5C%5C%5Cn%3Cbody%3E%5C%5C%5C%5Cn%3Ch1%3E%3F.%3F%20%5Cu27a1%20Regex%20Replace%3C%5C%5C%5C%5C%5C%5C%2Fh1%3E%5C%5C%5C%5Cn%3Cpre%3E%3F%3C%5C%5C%5C%5C%5C%5C%2Fpre%3E%5C%5C%5C%5Cn%3C%5C%5C%5C%5C%5C%5C%2Fbody%3E%3C%5C%5C%5C%5C%5C%5C%2Fhtml%3E%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%5D%7D%5C%22%2C%5C%22font_bold%5C%22%3Afalse%2C%5C%22alpha%5C%22%3A1%2C%5C%22name%5C%22%3A%5C%22Preview%20Button%5C%22%2C%5C%22border_width%5C%22%3A1%2C%5C%22uuid%5C%22%3A%5C%22AE7F0B29-C7EB-43B7-8225-35C98BFB7986%5C%22%2C%5C%22corner_radius%5C%22%3A4%7D%2C%5C%22frame%5C%22%3A%5C%22%7B%7B14%2C%20166%7D%2C%20%7B210%2C%2031%7D%7D%5C%22%2C%5C%22nodes%5C%22%3A%5B%5D%7D%2C%7B%5C%22class%5C%22%3A%5C%22Label%5C%22%2C%5C%22attributes%5C%22%3A%7B%5C%22font_size%5C%22%3A17%2C%5C%22enabled%5C%22%3Atrue%2C%5C%22text%5C%22%3A%5C%22Case-sensitive%5C%22%2C%5C%22numberOfLines%5C%22%3A0%2C%5C%22name%5C%22%3A%5C%22label3%5C%22%2C%5C%22flex%5C%22%3A%5C%22W%5C%22%2C%5C%22border_color%5C%22%3A%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5C%22text_color%5C%22%3A%5C%22RGBA%280.000000%2C0.328767%2C0.571429%2C1.000000%29%5C%22%2C%5C%22alignment%5C%22%3A%5C%22center%5C%22%2C%5C%22action_workflow%5C%22%3A%5C%22%7B%5C%5C%5C%22actions%5C%5C%5C%22%3A%5B%5D%7D%5C%22%2C%5C%22uuid%5C%22%3A%5C%22A9D67E1E-AD5F-4525-B2B7-67626B6A394B%5C%22%7D%2C%5C%22frame%5C%22%3A%5C%22%7B%7B73%2C%20128%7D%2C%20%7B151.5%2C%2031%7D%7D%5C%22%2C%5C%22nodes%5C%22%3A%5B%5D%7D%2C%7B%5C%22class%5C%22%3A%5C%22Button%5C%22%2C%5C%22attributes%5C%22%3A%7B%5C%22image_name%5C%22%3A%5C%22ionicons-shuffle-32%5C%22%2C%5C%22border_color%5C%22%3A%5C%22RGBA%280.000000%2C0.328767%2C0.571429%2C1.000000%29%5C%22%2C%5C%22font_size%5C%22%3A15%2C%5C%22title%5C%22%3A%5C%22Replace%5C%22%2C%5C%22enabled%5C%22%3Atrue%2C%5C%22tint_color%5C%22%3A%5C%22RGBA%280.000000%2C0.328767%2C0.571429%2C1.000000%29%5C%22%2C%5C%22flex%5C%22%3A%5C%22W%5C%22%2C%5C%22action_workflow%5C%22%3A%5C%22%7B%5C%5C%5C%22actions%5C%5C%5C%22%3A%5B%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionShowAlert%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22button1Value%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22replace%5C%5C%5C%22%7D%2C%5C%5C%5C%22showCancelButton%5C%5C%5C%22%3Atrue%2C%5C%5C%5C%22button1Title%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22button3Value%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%7D%2C%5C%5C%5C%22message%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22Are%20you%20sure%20you%20want%20to%20replace%3F%5C%5C%5C%22%7D%2C%5C%5C%5C%22button3Title%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22button2Value%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%7D%2C%5C%5C%5C%22button2Title%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22title%5C%5C%5C%22%3A%5C%5C%5C%22%27Replace%27%20Selected.%5C%5C%5C%22%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionCondition%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22colorLabel%5C%5C%5C%22%3A4%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22expression1%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22Input%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%2C%5C%5C%5C%22expression2%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22replace%5C%5C%5C%22%7D%2C%5C%5C%5C%22comparisonType%5C%5C%5C%22%3A0%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionStoreVariable%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22name%5C%5C%5C%22%3A%5C%5C%5C%22find-type-variable%5C%5C%5C%22%2C%5C%5C%5C%22value%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22%25ui%3Afind_type%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionStoreVariable%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22name%5C%5C%5C%22%3A%5C%5C%5C%22find-text-variable%5C%5C%5C%22%2C%5C%5C%5C%22value%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22%25ui%3Afind_text%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionStoreVariable%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22name%5C%5C%5C%22%3A%5C%5C%5C%22replace-text-variable%5C%5C%5C%22%2C%5C%5C%5C%22value%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22%25ui%3Areplace_text%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionCondition%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22colorLabel%5C%5C%5C%22%3A4%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22run%20text%20replace%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22expression1%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22find-type-variable%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%2C%5C%5C%5C%22expression2%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22Text%5C%5C%5C%22%7D%2C%5C%5C%5C%22comparisonType%5C%5C%5C%22%3A0%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionCondition%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22subActions%5C%5C%5C%22%3A%5B%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionGetSelectedText%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22emptySelectionOption%5C%5C%5C%22%3A0%2C%5C%5C%5C%22selectEntireLines%5C%5C%5C%22%3Afalse%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionFindReplace%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22find%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22find-text-variable%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%2C%5C%5C%5C%22findOption%5C%5C%5C%22%3A1%2C%5C%5C%5C%22replace%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22replace-text-variable%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionReplaceSelectedText%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22replacement%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22Input%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionConditionEnd%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%5D%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22expression1%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22%25ui%3Acase_switch%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%2C%5C%5C%5C%22expression2%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22ON%5C%5C%5C%22%7D%2C%5C%5C%5C%22comparisonType%5C%5C%5C%22%3A0%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionConditionEnd%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22colorLabel%5C%5C%5C%22%3A4%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22run%20regex%20replace%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22expression1%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22find-type-variable%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%2C%5C%5C%5C%22expression2%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22Regex%5C%5C%5C%22%7D%2C%5C%5C%5C%22comparisonType%5C%5C%5C%22%3A0%7D%2C%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionCondition%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22colorLabel%5C%5C%5C%22%3A4%2C%5C%5C%5C%22subActions%5C%5C%5C%22%3A%5B%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionGetSelectedText%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22emptySelectionOption%5C%5C%5C%22%3A0%2C%5C%5C%5C%22selectEntireLines%5C%5C%5C%22%3Afalse%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionFindReplace%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22find%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22find-text-variable%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%2C%5C%5C%5C%22findOption%5C%5C%5C%22%3A2%2C%5C%5C%5C%22replace%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22replace-text-variable%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionReplaceSelectedText%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22replacement%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%5C%5C%5C%22%7B0%2C%201%7D%5C%5C%5C%22%3A%5C%5C%5C%22Input%5C%5C%5C%22%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22%3F%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionConditionEnd%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22colorLabel%5C%5C%5C%22%3A4%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%5D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionConditionEnd%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22colorLabel%5C%5C%5C%22%3A4%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%2C%7B%5C%5C%5C%22class%5C%5C%5C%22%3A%5C%5C%5C%22WorkflowActionShowHUD%5C%5C%5C%22%2C%5C%5C%5C%22pauseBeforeRunning%5C%5C%5C%22%3Afalse%2C%5C%5C%5C%22customTitle%5C%5C%5C%22%3A%5C%5C%5C%22%5C%5C%5C%22%2C%5C%5C%5C%22parameters%5C%5C%5C%22%3A%7B%5C%5C%5C%22icon%5C%5C%5C%22%3A0%2C%5C%5C%5C%22duration%5C%5C%5C%22%3A0%2C%5C%5C%5C%22HUDText%5C%5C%5C%22%3A%7B%5C%5C%5C%22tokenRanges%5C%5C%5C%22%3A%7B%7D%2C%5C%5C%5C%22type%5C%5C%5C%22%3A%5C%5C%5C%22advancedText%5C%5C%5C%22%2C%5C%5C%5C%22text%5C%5C%5C%22%3A%5C%5C%5C%22Text%20replaced%21%5C%5C%5C%22%7D%7D%2C%5C%5C%5C%22pauseWithoutShowingParameters%5C%5C%5C%22%3Afalse%7D%5D%7D%5C%22%2C%5C%22font_bold%5C%22%3Afalse%2C%5C%22name%5C%22%3A%5C%22Replace%20Button%5C%22%2C%5C%22corner_radius%5C%22%3A4%2C%5C%22uuid%5C%22%3A%5C%2295CCBD75-0048-432A-A151-4F30704239E7%5C%22%2C%5C%22border_width%5C%22%3A1%7D%2C%5C%22frame%5C%22%3A%5C%22%7B%7B14%2C%20204%7D%2C%20%7B210%2C%2031%7D%7D%5C%22%2C%5C%22nodes%5C%22%3A%5B%5D%7D%5D%7D%5D%22%2C%20%22presentationStyle%22%3A%202%7D%2C%20%22class%22%3A%20%22WorkflowActionCustomUI%22%7D%5D%2C%20%22name%22%3A%20%22Visual%20Find%20%26%20Replace%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone11%2C6%22%2C%20%22systemVersion%22%3A%20%2213.3%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-attribute-alert.png%22%7D", "description": "This workflow uses the UI module to allow you to do a find & replace throughout your selected text or the entire document if no text is selected. The UI was designed to work on both the iPhone and the iPad.\n\nOptions include:\n* Text or Regular Expression\n* Case-sensitive searches\n* Preview panel to make sure you're replacing what you want to replace (especially helpful for regex). This was adapted from the built-in Diff with Clipboard workflow.\n\nIf you have any suggestions, find any bugs, or want to see my other workflows for Editorial, please visit http://sweetnessoffreedom.wordpress.com/projects", "title": "Visual Find & Replace"}, {"url": "http://editorial-app.appspot.com/workflow/5905065432842240/L8MawNZOOFw", "workflow_data": {"username": "moha", "description": "Shows the iOS share sheet with the selected text as input. If nothing is selected, the entire document is shared. In a Markdown document, the text can optionally be converted to HTML first.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:syntax-mode"}, "type": "advancedText"}, "expression2": {"text": "markdown", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"button1Value": {"text": "[[html]]", "tokenRanges": {}, "type": "advancedText"}, "button3Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button2Value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "Share Document Text...", "button3Title": "", "button2Title": "Use Plain Text", "button1Title": "Convert to HTML", "message": {"text": "Do you want to convert this Markdown document to HTML for sharing?", "tokenRanges": {}, "type": "advancedText"}, "showCancelButton": true}, "class": "WorkflowActionShowAlert"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "[[html]]", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"tables": true, "autolinks": true, "smartypants": true, "strikethrough": true, "footnotes": true, "metadata": false, "superscript": true}, "class": "WorkflowActionConvertMarkdown"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\"/></head>\n<body>\n?\n</body>\n</html>", "tokenRanges": {"{67, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionShowShareSheet"}], "name": "Share...", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone10,5", "systemVersion": "13.2.3"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_ARCHIVE.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22moha%22%2C%20%22description%22%3A%20%22Shows%20the%20iOS%20share%20sheet%20with%20the%20selected%20text%20as%20input.%20If%20nothing%20is%20selected%2C%20the%20entire%20document%20is%20shared.%20In%20a%20Markdown%20document%2C%20the%20text%20can%20optionally%20be%20converted%20to%20HTML%20first.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Asyntax-mode%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22markdown%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22button1Value%22%3A%20%7B%22text%22%3A%20%22%5B%5Bhtml%5D%5D%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button3Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button2Value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Share%20Document%20Text...%22%2C%20%22button3Title%22%3A%20%22%22%2C%20%22button2Title%22%3A%20%22Use%20Plain%20Text%22%2C%20%22button1Title%22%3A%20%22Convert%20to%20HTML%22%2C%20%22message%22%3A%20%7B%22text%22%3A%20%22Do%20you%20want%20to%20convert%20this%20Markdown%20document%20to%20HTML%20for%20sharing%3F%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22showCancelButton%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionShowAlert%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%5B%5Bhtml%5D%5D%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22tables%22%3A%20true%2C%20%22autolinks%22%3A%20true%2C%20%22smartypants%22%3A%20true%2C%20%22strikethrough%22%3A%20true%2C%20%22footnotes%22%3A%20true%2C%20%22metadata%22%3A%20false%2C%20%22superscript%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionConvertMarkdown%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3C%21DOCTYPE%20html%3E%5Cn%3Chtml%3E%5Cn%3Chead%3E%3Cmeta%20charset%3D%5C%22utf-8%5C%22%2F%3E%3C%2Fhead%3E%5Cn%3Cbody%3E%5Cn%3F%5Cn%3C%2Fbody%3E%5Cn%3C%2Fhtml%3E%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B67%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionShowShareSheet%22%7D%5D%2C%20%22name%22%3A%20%22Share...%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone10%2C5%22%2C%20%22systemVersion%22%3A%20%2213.2.3%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_ARCHIVE.png%22%7D", "description": "Shows the iOS share sheet with the selected text as input. If nothing is selected, the entire document is shared. In a Markdown document, the text can optionally be converted to HTML first.", "title": "Share..."}, {"url": "http://editorial-app.appspot.com/workflow/5781690014236672/VURRRRkx3hE", "workflow_data": {"username": "List URLs", "name": "List URLs...", "description": "Shows a list of URLs in the current document. Selecting one of the URLs opens it in the browser panel.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionExtractURLs"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "If no URLs are found...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"showHUD": true, "HUDTitle": "No URLs found", "stopOption": 0}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"list": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "", "showInPopover": true, "allowMultipleSelection": false}, "class": "WorkflowActionSelectFromList"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "If URL is selected...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"URL": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "waitUntilLoaded": false, "revealBrowserAutomatically": true, "openIn": 0, "tabOption": 0}, "class": "WorkflowActionOpenURL"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}], "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone9,1", "systemVersion": "12.4"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_ANCHOR.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22List%20URLs%22%2C%20%22name%22%3A%20%22List%20URLs...%22%2C%20%22description%22%3A%20%22Shows%20a%20list%20of%20URLs%20in%20the%20current%20document.%20Selecting%20one%20of%20the%20URLs%20opens%20it%20in%20the%20browser%20panel.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionExtractURLs%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22If%20no%20URLs%20are%20found...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20true%2C%20%22HUDTitle%22%3A%20%22No%20URLs%20found%22%2C%20%22stopOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22list%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22%22%2C%20%22showInPopover%22%3A%20true%2C%20%22allowMultipleSelection%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionSelectFromList%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22If%20URL%20is%20selected...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22URL%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22waitUntilLoaded%22%3A%20false%2C%20%22revealBrowserAutomatically%22%3A%20true%2C%20%22openIn%22%3A%200%2C%20%22tabOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%5D%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone9%2C1%22%2C%20%22systemVersion%22%3A%20%2212.4%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_ANCHOR.png%22%7D", "description": "Shows a list of URLs in the current document. Selecting one of the URLs opens it in the browser panel.", "title": "List URLs..."}, {"url": "http://editorial-app.appspot.com/workflow/5822453280407552/A58S1Ed21xo", "workflow_data": {"username": "catlegsworktoo", "description": "Replaces the selected word(s) with a Markdown link, pointing to the first Google result. E.g. when you select \"Markdown\", it is replaced with \"[Markdown](http://daringfireball.net/projects/markdown)\".", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport editor\nimport console\n\ndef main():\n\ttext = editor.get_selected_text()\n\tif not text:\n\t\tconsole.hud_alert('Nothing Selected', 'error')\n\t\treturn\n\timport requests\n\timport urllib\n\turl = 'https://www.google.com/search?q=%s&btnI' % (urllib.quote(text, ''),)\n\ttry:\n\t\tr = requests.head(url)\n\t\tlink_url = r.headers['location']\n\t\tmd_link = '[%s](%s)' % (text, link_url)\n\t\teditor.insert_text(md_link)\n\texcept:\n\t\tconsole.hud_alert('Something went wrong', 'error')\n\nmain()\n"}, "class": "WorkflowActionRunScript"}], "name": "Lucky Link", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone11,8", "systemVersion": "12.4"}, "type": "wkflw", "public": true, "icon": "minicons-icons-entertainment-dices.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22catlegsworktoo%22%2C%20%22description%22%3A%20%22Replaces%20the%20selected%20word%28s%29%20with%20a%20Markdown%20link%2C%20pointing%20to%20the%20first%20Google%20result.%20E.g.%20when%20you%20select%20%5C%22Markdown%5C%22%2C%20it%20is%20replaced%20with%20%5C%22%5BMarkdown%5D%28http%3A%2F%2Fdaringfireball.net%2Fprojects%2Fmarkdown%29%5C%22.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20editor%5Cnimport%20console%5Cn%5Cndef%20main%28%29%3A%5Cn%5Cttext%20%3D%20editor.get_selected_text%28%29%5Cn%5Ctif%20not%20text%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27Nothing%20Selected%27%2C%20%27error%27%29%5Cn%5Ct%5Ctreturn%5Cn%5Ctimport%20requests%5Cn%5Ctimport%20urllib%5Cn%5Cturl%20%3D%20%27https%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3D%25s%26btnI%27%20%25%20%28urllib.quote%28text%2C%20%27%27%29%2C%29%5Cn%5Cttry%3A%5Cn%5Ct%5Ctr%20%3D%20requests.head%28url%29%5Cn%5Ct%5Ctlink_url%20%3D%20r.headers%5B%27location%27%5D%5Cn%5Ct%5Ctmd_link%20%3D%20%27%5B%25s%5D%28%25s%29%27%20%25%20%28text%2C%20link_url%29%5Cn%5Ct%5Cteditor.insert_text%28md_link%29%5Cn%5Ctexcept%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27Something%20went%20wrong%27%2C%20%27error%27%29%5Cn%5Cnmain%28%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%5D%2C%20%22name%22%3A%20%22Lucky%20Link%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone11%2C8%22%2C%20%22systemVersion%22%3A%20%2212.4%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-entertainment-dices.png%22%7D", "description": "Replaces the selected word(s) with a Markdown link, pointing to the first Google result. E.g. when you select \"Markdown\", it is replaced with \"[Markdown](http://daringfireball.net/projects/markdown)\".", "title": "Lucky Link"}, {"url": "http://editorial-app.appspot.com/workflow/5808078909865984/3OSmK0mEpvE", "workflow_data": {"username": "JStarkman", "description": "Very simple workflow to collapse all the Headings (single #) in the current document. \n\nThe format to match is that the # must be at the beginning of a line followed by a single space. ", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"pattern": {"text": "^# ", "tokenRanges": {}, "type": "advancedText"}, "invert": true}, "class": "WorkflowActionFoldLinesMatchingPattern"}], "name": "Fold Headings", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone7,2", "systemVersion": "12.4.1"}, "type": "wkflw", "public": true, "icon": "minicons-icons-actions-square-remove.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22JStarkman%22%2C%20%22description%22%3A%20%22Very%20simple%20workflow%20to%20collapse%20all%20the%20Headings%20%28single%20%23%29%20in%20the%20current%20document.%20%5Cn%5CnThe%20format%20to%20match%20is%20that%20the%20%23%20must%20be%20at%20the%20beginning%20of%20a%20line%20followed%20by%20a%20single%20space.%20%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22pattern%22%3A%20%7B%22text%22%3A%20%22%5E%23%20%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22invert%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionFoldLinesMatchingPattern%22%7D%5D%2C%20%22name%22%3A%20%22Fold%20Headings%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone7%2C2%22%2C%20%22systemVersion%22%3A%20%2212.4.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-actions-square-remove.png%22%7D", "description": "Very simple workflow to collapse all the Headings (single #) in the current document. \n\nThe format to match is that the # must be at the beginning of a line followed by a single space. ", "title": "Fold Headings"}, {"url": "http://editorial-app.appspot.com/workflow/5889968220143616/CawwPjPNBL0", "workflow_data": {"username": "Scott Larson", "description": "This workflow creates a markdown document with a file name and Markdown Frontmatter  generated from a UI form fields. It creates an out put file name and frontmatter title from fields that are specific to creating a document that a  screen writer would use to make a scene document.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Scene File UI", "parameters": {"outputText": {"text": "?-?-?-?", "tokenRanges": {"{0, 1}": "%ui:Scene Title Field", "{6, 1}": "%ui:Environment Title Field", "{4, 1}": "%ui:Location Title Field", "{2, 1}": "%ui:Setting Title Field"}, "type": "advancedText"}, "ui": "[\n  {\n    \"nodes\" : [\n      {\n        \"nodes\" : [\n\n        ],\n        \"frame\" : \"{{143, 32}, {143, 32}}\",\n        \"class\" : \"TextField\",\n        \"attributes\" : {\n          \"uuid\" : \"63291FBC-497C-4755-B29C-61367FB01A29\",\n          \"font_size\" : 17,\n          \"frame\" : \"{{170, 254}, {200, 32}}\",\n          \"secure\" : false,\n          \"editWorkflow\" : true,\n          \"alignment\" : \"left\",\n          \"autocorrection_type\" : \"default\",\n          \"font_name\" : \"<System>\",\n          \"action_workflow\" : \"{\\\"actions\\\":[]}\",\n          \"class\" : \"TextField\",\n          \"name\" : \"Scene Title Field\",\n          \"spellchecking_type\" : \"default\"\n        },\n        \"selected\" : false\n      },\n      {\n        \"nodes\" : [\n\n        ],\n        \"frame\" : \"{{143, 98}, {142, 32}}\",\n        \"class\" : \"TextField\",\n        \"attributes\" : {\n          \"uuid\" : \"E989A04B-A439-4B52-932B-36ACB4F0E408\",\n          \"name\" : \"Setting Title Field\",\n          \"frame\" : \"{{170, 254}, {200, 32}}\",\n          \"secure\" : false,\n          \"editWorkflow\" : true,\n          \"alignment\" : \"left\",\n          \"autocorrection_type\" : \"default\",\n          \"font_name\" : \"<System>\",\n          \"action_workflow\" : \"{\\\"actions\\\":[]}\",\n          \"class\" : \"TextField\",\n          \"spellchecking_type\" : \"default\",\n          \"font_size\" : 17\n        },\n        \"selected\" : false\n      },\n      {\n        \"nodes\" : [\n\n        ],\n        \"frame\" : \"{{143, 162}, {142, 32}}\",\n        \"class\" : \"TextField\",\n        \"attributes\" : {\n          \"uuid\" : \"77C08DCA-BF3B-4BB7-9230-0EAD1A11EAFF\",\n          \"name\" : \"Location Title Field\",\n          \"frame\" : \"{{170, 254}, {200, 32}}\",\n          \"secure\" : false,\n          \"editWorkflow\" : true,\n          \"alignment\" : \"left\",\n          \"autocorrection_type\" : \"default\",\n          \"font_name\" : \"<System>\",\n          \"action_workflow\" : \"{\\\"actions\\\":[]}\",\n          \"class\" : \"TextField\",\n          \"spellchecking_type\" : \"default\",\n          \"font_size\" : 17\n        },\n        \"selected\" : false\n      },\n      {\n        \"nodes\" : [\n\n        ],\n        \"frame\" : \"{{143, 226}, {143, 32}}\",\n        \"class\" : \"TextField\",\n        \"attributes\" : {\n          \"uuid\" : \"0C8371B0-E61A-4C38-95AB-E9E2A12856F5\",\n          \"name\" : \"Environment Title Field\",\n          \"frame\" : \"{{170, 254}, {200, 32}}\",\n          \"secure\" : false,\n          \"editWorkflow\" : true,\n          \"alignment\" : \"left\",\n          \"autocorrection_type\" : \"default\",\n          \"font_name\" : \"<System>\",\n          \"action_workflow\" : \"{\\\"actions\\\":[]}\",\n          \"class\" : \"TextField\",\n          \"spellchecking_type\" : \"default\",\n          \"font_size\" : 17\n        },\n        \"selected\" : false\n      },\n      {\n        \"nodes\" : [\n\n        ],\n        \"frame\" : \"{{31, 32}, {97, 32}}\",\n        \"class\" : \"Label\",\n        \"attributes\" : {\n          \"name\" : \"Scene Title Label\",\n          \"frame\" : \"{{195, 254}, {150, 32}}\",\n          \"uuid\" : \"05C38341-4356-420C-B4A6-4877D1CE41D4\",\n          \"class\" : \"Label\",\n          \"alignment\" : \"left\",\n          \"text\" : \"Scene Title\",\n          \"font_size\" : 18,\n          \"font_name\" : \"<System>\"\n        },\n        \"selected\" : false\n      },\n      {\n        \"nodes\" : [\n\n        ],\n        \"frame\" : \"{{31, 98}, {97, 32}}\",\n        \"class\" : \"Label\",\n        \"attributes\" : {\n          \"name\" : \"Setting Title Label\",\n          \"frame\" : \"{{195, 254}, {150, 32}}\",\n          \"uuid\" : \"EC1840B3-EF37-4386-8A0B-D5CAA68B63E1\",\n          \"class\" : \"Label\",\n          \"alignment\" : \"left\",\n          \"text\" : \"Setting Title\",\n          \"font_size\" : 18,\n          \"font_name\" : \"<System>\"\n        },\n        \"selected\" : false\n      },\n      {\n        \"nodes\" : [\n\n        ],\n        \"frame\" : \"{{31, 162}, {97, 32}}\",\n        \"class\" : \"Label\",\n        \"attributes\" : {\n          \"name\" : \"Location Title Label\",\n          \"frame\" : \"{{195, 254}, {150, 32}}\",\n          \"uuid\" : \"EA2689E0-9178-450F-932C-1E84E48028CF\",\n          \"class\" : \"Label\",\n          \"alignment\" : \"left\",\n          \"text\" : \"Loc Title\",\n          \"font_size\" : 18,\n          \"font_name\" : \"<System>\"\n        },\n        \"selected\" : false\n      },\n      {\n        \"nodes\" : [\n\n        ],\n        \"frame\" : \"{{31, 226}, {97, 32}}\",\n        \"class\" : \"Label\",\n        \"attributes\" : {\n          \"name\" : \"Environment Title Label\",\n          \"frame\" : \"{{195, 254}, {150, 32}}\",\n          \"uuid\" : \"ADF3ED51-4FBE-4210-8903-C04120C52778\",\n          \"class\" : \"Label\",\n          \"alignment\" : \"left\",\n          \"text\" : \"Env Title\",\n          \"font_size\" : 18,\n          \"font_name\" : \"<System>\"\n        },\n        \"selected\" : false\n      }\n    ],\n    \"frame\" : \"{{0, 0}, {320, 320}}\",\n    \"class\" : \"View\",\n    \"attributes\" : {\n      \"flex\" : \"\",\n      \"editWorkflow\" : true,\n      \"action_workflow\" : \"{\\\"actions\\\":[]}\",\n      \"enabled\" : true,\n      \"tint_color\" : \"RGBA(0.000000,0.478000,1.000000,1.000000)\",\n      \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n      \"background_color\" : \"RGBA(1.000000,1.000000,1.000000,1.000000)\",\n      \"name\" : \"\"\n    },\n    \"selected\" : false\n  }\n]", "presentationStyle": 0}, "class": "WorkflowActionCustomUI"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"caseOption": 1}, "class": "WorkflowActionChangeCase"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "scene-file-name", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "scene-front-matter-title", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "scene-front-matter-title"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"caseOption": 2}, "class": "WorkflowActionChangeCase"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 0, "find": {"text": "-", "tokenRanges": {}, "type": "advancedText"}, "replace": {"text": ". ", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "scene-front-matter-title-update", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Create Markdown Scene Entry", "parameters": {"content": {"text": "---\ntitle: ?\nsubtitle:\nauthor: Scott Larson\ndate: ?/?/? ?:?\n---\n\n## Previously\n## Main Objective\n## Main Obstacle\n## Up Next\n\n?\n", "tokenRanges": {"{50, 1}": "%date:yyyy", "{126, 1}": "%cursor", "{54, 1}": "%date:dd", "{11, 1}": "scene-front-matter-title-update", "{56, 1}": "%date:hh", "{58, 1}": "%date:mm", "{52, 1}": "%date:MM"}, "type": "advancedText"}, "open": true, "filename": {"text": "?.md", "tokenRanges": {"{0, 1}": "scene-file-name"}, "type": "advancedText"}}, "class": "WorkflowActionCreateNewDocument"}], "name": "Markdown (Scene)", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad4,1", "systemVersion": "12.4.1"}, "type": "edtpl", "public": true, "icon": "minicons-icons-text-left-align.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22Scott%20Larson%22%2C%20%22description%22%3A%20%22This%20workflow%20creates%20a%20markdown%20document%20with%20a%20file%20name%20and%20Markdown%20Frontmatter%20%20generated%20from%20a%20UI%20form%20fields.%20It%20creates%20an%20out%20put%20file%20name%20and%20frontmatter%20title%20from%20fields%20that%20are%20specific%20to%20creating%20a%20document%20that%20a%20%20screen%20writer%20would%20use%20to%20make%20a%20scene%20document.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Scene%20File%20UI%22%2C%20%22parameters%22%3A%20%7B%22outputText%22%3A%20%7B%22text%22%3A%20%22%3F-%3F-%3F-%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25ui%3AScene%20Title%20Field%22%2C%20%22%7B6%2C%201%7D%22%3A%20%22%25ui%3AEnvironment%20Title%20Field%22%2C%20%22%7B4%2C%201%7D%22%3A%20%22%25ui%3ALocation%20Title%20Field%22%2C%20%22%7B2%2C%201%7D%22%3A%20%22%25ui%3ASetting%20Title%20Field%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ui%22%3A%20%22%5B%5Cn%20%20%7B%5Cn%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B143%2C%2032%7D%2C%20%7B143%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%2263291FBC-497C-4755-B29C-61367FB01A29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2017%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B170%2C%20254%7D%2C%20%7B200%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22secure%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22editWorkflow%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22autocorrection_type%5C%22%20%3A%20%5C%22default%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_name%5C%22%20%3A%20%5C%22%3CSystem%3E%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22action_workflow%5C%22%20%3A%20%5C%22%7B%5C%5C%5C%22actions%5C%5C%5C%22%3A%5B%5D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22Scene%20Title%20Field%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22spellchecking_type%5C%22%20%3A%20%5C%22default%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B143%2C%2098%7D%2C%20%7B142%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22E989A04B-A439-4B52-932B-36ACB4F0E408%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22Setting%20Title%20Field%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B170%2C%20254%7D%2C%20%7B200%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22secure%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22editWorkflow%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22autocorrection_type%5C%22%20%3A%20%5C%22default%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_name%5C%22%20%3A%20%5C%22%3CSystem%3E%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22action_workflow%5C%22%20%3A%20%5C%22%7B%5C%5C%5C%22actions%5C%5C%5C%22%3A%5B%5D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22spellchecking_type%5C%22%20%3A%20%5C%22default%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2017%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B143%2C%20162%7D%2C%20%7B142%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%2277C08DCA-BF3B-4BB7-9230-0EAD1A11EAFF%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22Location%20Title%20Field%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B170%2C%20254%7D%2C%20%7B200%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22secure%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22editWorkflow%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22autocorrection_type%5C%22%20%3A%20%5C%22default%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_name%5C%22%20%3A%20%5C%22%3CSystem%3E%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22action_workflow%5C%22%20%3A%20%5C%22%7B%5C%5C%5C%22actions%5C%5C%5C%22%3A%5B%5D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22spellchecking_type%5C%22%20%3A%20%5C%22default%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2017%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B143%2C%20226%7D%2C%20%7B143%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%220C8371B0-E61A-4C38-95AB-E9E2A12856F5%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22Environment%20Title%20Field%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B170%2C%20254%7D%2C%20%7B200%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22secure%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22editWorkflow%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22autocorrection_type%5C%22%20%3A%20%5C%22default%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_name%5C%22%20%3A%20%5C%22%3CSystem%3E%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22action_workflow%5C%22%20%3A%20%5C%22%7B%5C%5C%5C%22actions%5C%5C%5C%22%3A%5B%5D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22spellchecking_type%5C%22%20%3A%20%5C%22default%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2017%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B31%2C%2032%7D%2C%20%7B97%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22Scene%20Title%20Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B195%2C%20254%7D%2C%20%7B150%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%2205C38341-4356-420C-B4A6-4877D1CE41D4%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22Scene%20Title%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2018%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_name%5C%22%20%3A%20%5C%22%3CSystem%3E%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B31%2C%2098%7D%2C%20%7B97%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22Setting%20Title%20Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B195%2C%20254%7D%2C%20%7B150%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22EC1840B3-EF37-4386-8A0B-D5CAA68B63E1%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22Setting%20Title%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2018%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_name%5C%22%20%3A%20%5C%22%3CSystem%3E%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B31%2C%20162%7D%2C%20%7B97%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22Location%20Title%20Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B195%2C%20254%7D%2C%20%7B150%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22EA2689E0-9178-450F-932C-1E84E48028CF%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22Loc%20Title%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2018%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_name%5C%22%20%3A%20%5C%22%3CSystem%3E%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B31%2C%20226%7D%2C%20%7B97%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22Environment%20Title%20Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B195%2C%20254%7D%2C%20%7B150%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22ADF3ED51-4FBE-4210-8903-C04120C52778%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22Env%20Title%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2018%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_name%5C%22%20%3A%20%5C%22%3CSystem%3E%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%5D%2C%5Cn%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B0%2C%200%7D%2C%20%7B320%2C%20320%7D%7D%5C%22%2C%5Cn%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22View%5C%22%2C%5Cn%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%5C%22editWorkflow%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%5C%22action_workflow%5C%22%20%3A%20%5C%22%7B%5C%5C%5C%22actions%5C%5C%5C%22%3A%5B%5D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%5C%22tint_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.478000%2C1.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%281.000000%2C1.000000%2C1.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22%5C%22%5Cn%20%20%20%20%7D%2C%5Cn%20%20%20%20%5C%22selected%5C%22%20%3A%20false%5Cn%20%20%7D%5Cn%5D%22%2C%20%22presentationStyle%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCustomUI%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22caseOption%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionChangeCase%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22scene-file-name%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22scene-front-matter-title%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22scene-front-matter-title%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22caseOption%22%3A%202%7D%2C%20%22class%22%3A%20%22WorkflowActionChangeCase%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%200%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22-%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22.%20%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22scene-front-matter-title-update%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Create%20Markdown%20Scene%20Entry%22%2C%20%22parameters%22%3A%20%7B%22content%22%3A%20%7B%22text%22%3A%20%22---%5Cntitle%3A%20%3F%5Cnsubtitle%3A%5Cnauthor%3A%20Scott%20Larson%5Cndate%3A%20%3F%2F%3F%2F%3F%20%3F%3A%3F%5Cn---%5Cn%5Cn%23%23%20Previously%5Cn%23%23%20Main%20Objective%5Cn%23%23%20Main%20Obstacle%5Cn%23%23%20Up%20Next%5Cn%5Cn%3F%5Cn%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B50%2C%201%7D%22%3A%20%22%25date%3Ayyyy%22%2C%20%22%7B126%2C%201%7D%22%3A%20%22%25cursor%22%2C%20%22%7B54%2C%201%7D%22%3A%20%22%25date%3Add%22%2C%20%22%7B11%2C%201%7D%22%3A%20%22scene-front-matter-title-update%22%2C%20%22%7B56%2C%201%7D%22%3A%20%22%25date%3Ahh%22%2C%20%22%7B58%2C%201%7D%22%3A%20%22%25date%3Amm%22%2C%20%22%7B52%2C%201%7D%22%3A%20%22%25date%3AMM%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22open%22%3A%20true%2C%20%22filename%22%3A%20%7B%22text%22%3A%20%22%3F.md%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22scene-file-name%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCreateNewDocument%22%7D%5D%2C%20%22name%22%3A%20%22Markdown%20%28Scene%29%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad4%2C1%22%2C%20%22systemVersion%22%3A%20%2212.4.1%22%7D%2C%20%22type%22%3A%20%22edtpl%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-text-left-align.png%22%7D", "description": "This workflow creates a markdown document with a file name and Markdown Frontmatter  generated from a UI form fields. It creates an out put file name and frontmatter title from fields that are specific to creating a document that a  screen writer would use to make a scene document.", "title": "Markdown (Scene)"}, {"url": "http://editorial-app.appspot.com/workflow/5842356829945856/CkWuC7VA-3A", "workflow_data": {"username": "", "description": "This is a collection of several unrelated custom actions.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "READ ME\u2757", "parameters": {"text": {"text": "This is not an actual workflow, it just contains a collection of custom actions that are meant to be saved as presets.\n\nRunning this won't do anything because of the following 'Stop' action.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "---------------------------------------------------------------------------------------", "parameters": {"showHUD": false, "HUDTitle": ""}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Send to Drafts", "parameters": {"0217F8EB-80EF-4A2C-A9E5-7E18DC6C3248": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "1C841272-0445-4065-853D-785C8DBE61D3": true, "143D755D-53CA-4286-B024-A20A1578BF3B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "47E71F88-8D67-4E22-8E06-6EF4DA6D1626": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"title": "Text", "type": "advancedText", "key": "EC988DCA-5C83-43C2-9CD6-1DF50A0A448D", "height": 120}, {"type": "switch", "key": "1C841272-0445-4065-853D-785C8DBE61D3", "title": "Return to Editorial"}], "30D112E0-6074-4B9E-9F59-5EFA908FC9A1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "AECCCF4E-41A4-4C07-ABB0-45DF485AFD2D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9A5C7E4F-0E3F-4918-A7B2-A9F790F8BF54": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A035F565-D7EA-4F35-86F2-74B8B91721C2": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F19F7720-C188-42BA-B4F7-8A94251CBB62": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "2C1B952C-CBC1-4E7E-A1D5-1ADB1D3160A0": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "291DA446-1159-45ED-AE69-FB0F73E3CB04": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "7EC41E5D-8181-43D3-90A6-BA7A729AD37A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E05EB8C4-3C06-48D4-91C9-E5EA271879E5": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "D890C0A9-6A00-4D3F-A997-40B6614EB9E2": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "FD8A2171-5D14-4E7B-BEE4-4440DBA53C6C": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "EC988DCA-5C83-43C2-9CD6-1DF50A0A448D": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "39FDFB9D-8D85-4A8B-A546-D7451F978EDC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "6091BAEA-7008-4A83-BC09-8B5515F8E323": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "30B1D86A-AC53-4145-8ABB-481688A09E30": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "#NOTE: Drafts doesn't support a 'success' callback URL when no action is triggered, so if 'Return to Editorial' is on, the text is also copied to the clipboard.\n\nimport workflow\nimport webbrowser\nfrom urllib import quote\n\nparams = workflow.get_parameters()\ntext = params.get('Text', None)\ncallback = params.get('Return to Editorial', False)\n\nif text:\n\turl = 'drafts://x-callback-url/create?text=' + quote(text)\n\tif callback:\n\t\turl += '&action=' + quote('Copy to Clipboard')\n\t\turl += '&x-success=' + quote('editorial://')\n\tsuccess = webbrowser.open(url)\n\tif not success:\n\t\timport console\n\t\tconsole.hud_alert('Drafts not installed', 'error', 1.5)\n", "7A90A31B-EC7D-44F5-89B5-63A8CB4C207F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A0980BAA-E704-49D7-962E-DAB627E9F402": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Post with TweetBot", "parameters": {"DF194431-87BB-4812-80C3-9E5AB43F2C37": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8055E0DF-CD9A-4AD4-99E7-A8D6356360AB": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "222622CB-9B38-42A7-847F-43A98BA19764": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "312D5B0A-73FE-4236-A720-7FCB9EF51D81": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"placeholder": "(Default Account)", "type": "basicText", "key": "CEB04CDB-BADD-4409-9B8F-8E073222E446", "title": "Account"}, {"title": "Tweet", "type": "advancedText", "key": "0A5A0AF9-F928-44FC-B995-EC4087050735", "height": 100}, {"type": "switch", "key": "99FAF415-0381-4238-B15F-4D5C50F6B413", "title": "Return to Editorial"}], "EE6DFE6A-3257-42AF-AFA6-C11ADE65559D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "99FAF415-0381-4238-B15F-4D5C50F6B413": true, "CDB2FAE9-2230-4B4B-ABA2-673267CA0166": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3F5656FF-CA7E-42BF-9B5A-56ACD9F7E5A7": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "7ABE0A9A-6749-4C3B-8719-915584215A14": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A494C1C1-6722-401A-ACE9-7A18E4E74E55": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "CEB04CDB-BADD-4409-9B8F-8E073222E446": "", "53EBDE34-739F-4BF0-B827-576CCCE9ABE6": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "534B636B-1D5F-4A10-B4C5-32CBFC0AF3C6": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A3B2161D-4604-43D8-A6B9-18A62C7CA6C9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "D0AB689E-465F-4E6B-A61D-AFED521EE8E9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "49F9F435-2FDE-463F-BCBB-AE681D4578B2": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "0C4BA658-9E6E-4404-83DE-F909D40CDEF1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E511A644-13BE-47B1-9D71-511D750D6BB4": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "0A5A0AF9-F928-44FC-B995-EC4087050735": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "__custom_action_script__": "import workflow\nimport webbrowser\nfrom urllib import quote\n\nparams = workflow.get_parameters()\n\naccount = params.get('Account', None)\ntweet = params.get('Tweet', None)\ncallback = params.get('Return to Editorial', False)\n\n#tweetbot://<screenname>/post?text=<text>&callback_url=<url>&in_reply_to_status_id=<tweet_id>\n\nif tweet:\n\turl = 'tweetbot://'\n\tif account:\n\t\turl += quote(account)\n\turl += '/post?text=' + quote(tweet)\n\tif callback:\n\t\turl += '&callback_url=' + quote('editorial://')\n\twebbrowser.open(url)\n\n", "156F61D9-0566-48F6-A7B9-4D349BE78AE3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "674B8A7B-F599-45F0-BAB8-71ED1E45A19E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "36D42353-DB32-4C63-B266-EC5AADA5B00D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9EB2C8A0-07D7-436C-92BA-7B74777BBD34": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "81A29078-05D8-4975-B647-77E494DBF3BC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "51D1C493-CFCE-44F5-BA52-108C97E54933": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "204F7CD1-A4FF-41FD-AAA0-DDC598476C04": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Add to Evernote", "parameters": {"0352C55C-3F35-44FA-AB29-7E6A904A0613": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "456E0613-00B2-48DC-B291-21B2EC27D75A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "82720418-3940-4B9C-A2D1-3B70204D2304": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9631D935-B88F-4C69-8BCC-3F049AF483F0": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "AE2F6C40-53E2-404F-A846-8A29D40E6CF7": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "EB421585-1A18-45FD-8ABC-1DBE5E8619B6": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"type": "basicText", "key": "B2C9A8F4-4F8A-401E-B133-BC44EEEEF2AE", "title": "Title"}, {"title": "Content", "type": "advancedText", "key": "D59D3667-23C6-4ABB-B75F-0B13990D775B", "height": 120}, {"placeholder": "(Get your token here: www.evernote.com/api/DeveloperToken.action)", "type": "basicText", "key": "10BB6296-7848-4280-ADB5-635C64224DE9", "title": "Dev Token"}], "7ACA768E-8A89-4415-B07C-B31BCE83FA3D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "04457BA2-8D74-4741-A93D-0B6D5205BF49": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "69F42725-4A73-4167-8B1E-A09D2BA9E24F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F54B0353-898D-4DCA-B92D-1BEB3BF7758D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "DAF66F40-F705-43B9-92AB-D5A92CEFA442": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "EEC5B36C-C818-4F5C-82D5-41AC5A6E1BA9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "CFC86F37-AB60-42D5-B646-80E6FE691A77": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C57AA5DE-33C8-4B45-AE6E-6064A62F742C": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A32EA424-A040-4AE5-84E9-591A2D1FF2B4": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "796C9ABC-17C4-4F6C-8AC5-279AFE86D058": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "10BB6296-7848-4280-ADB5-635C64224DE9": "", "1B77F140-097C-4127-BEE2-BB01184FC14E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "679ED8AF-7896-4C04-AC9F-E9461ABDB007": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "774B128A-6DC2-476C-B440-F3758AA39A78": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "B2C9A8F4-4F8A-401E-B133-BC44EEEEF2AE": "", "A3719759-62CC-4C4B-9AB5-4BCD38B0F3C7": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "EBA59274-B1ED-4393-BFE8-E98ED9128A25": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "4C710287-CB44-471C-AD45-433C9EC90D02": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "# To get a developer token, visit\n# https://www.evernote.com/api/DeveloperToken.action\nimport workflow\nimport console\n\nparams = workflow.get_parameters()\nauth_token = params.get('Dev Token', None)\nnote_title = params.get('Title', '')\nnote_content = params.get('Content', '')\n\nif not auth_token:\n\tconsole.hud_alert('Evernote Dev Token Missing', 'error', 2.0)\n\tworkflow.stop()\nelif note_title or note_content:\n\timport evernote.edam.userstore.constants as UserStoreConstants\n\timport evernote.edam.type.ttypes as Types\n\tfrom evernote.api.client import EvernoteClient\n\tfrom xml.sax.saxutils import escape\n\t\n\tclient = EvernoteClient(token=auth_token, sandbox=False)\n\tnote_store = client.get_note_store()\n\t\n\t# To create a new note, simply create a new Note object and fill in\n\t# attributes such as the note's title.\n\tnote = Types.Note()\n\tnote.title = note_title\n\tnote.content = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>'\n\tnote.content += '<!DOCTYPE en-note SYSTEM ' \\\n    '\"http://xml.evernote.com/pub/enml2.dtd\">'\n\tnote.content += '<en-note>'\n\tnote.content += escape(note_content)\n\tnote.content += '</en-note>'\n\t\n\t# Finally, send the new note to Evernote using the createNote method\n\t# The new Note object that is returned will contain server-generated\n\t# attributes such as the new note's unique GUID.\n\tcreated_note = note_store.createNote(note)\n\tconsole.hud_alert('Note Created', 'success', 1.5)\n", "D59D3667-23C6-4ABB-B75F-0B13990D775B": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "5FEE6EFC-7BE6-4708-84A3-B3182767177D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3BE8EFF8-FBD7-4DF8-B567-518194D148BA": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "29EB2687-683D-4A58-AB6B-A941402DAEF1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "85840AA5-5C07-4FA1-8692-53694FB83B2C": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3DECDA1F-D3D2-4E90-AB8C-D12C08B58373": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "CDF9DE95-858F-4647-A126-AEF9625125A9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "4C4D6EA0-A549-47FA-80A6-C5B6A19785BD": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "510DBD6D-2689-4417-AC04-9553B9272267": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8F6FDF93-1B6C-4FA6-95B7-A6C477D5FFFE": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F053FE50-E285-4077-B111-325A769238C3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "06F181C0-7013-4DD7-B09D-CBFD9334B4C7": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Define with DuckDuckGo", "parameters": {"BE534FC3-F6BA-481E-B1D8-8E62D34EFD66": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A0C2918D-A916-40BB-92FE-6A44E2D5B045": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "575D606B-7F49-4DD6-8C1D-DD3B46840316": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8E6B3440-584F-4C2E-BA50-C11A313DB63B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C6CB5F0F-C999-4888-9B56-541AECEC2E8B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3B1B9207-645B-4CAD-9608-25DA4A317BC5": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "684BBA4F-E350-4D8E-8DF3-89378A91D452": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "# http://api.duckduckgo.com/?q=define+ostensibly&format=json&pretty=1\n\nimport workflow\nimport console\nimport requests\nimport json\nfrom urllib import quote\nparams = workflow.get_parameters()\nterm = params.get('Define', '')\nif term:\n\ttry:\n\t\turl = 'http://api.duckduckgo.com/?q=define+' + quote(term) + '&format=json'\n\t\tr = requests.get(url)\n\t\td = json.loads(r.text)\n\t\tdefinition = d.get('Definition', None)\n\t\tif definition:\n\t\t\tworkflow.set_output(definition)\n\t\telse:\n\t\t\tconsole.hud_alert('No Definition Found', 'error', 1.5)\n\texcept:\n\t\tconsole.hud_alert('Definition Request Failed', 'error', 1.5)\n", "7B7E9CFE-C687-4170-B46D-161A1EACA0C8": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A807F7DF-164C-446F-B977-F49A20A0C26E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "611C3E36-88E4-4F6C-9AD7-2F063DC8B71D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E1202951-73CE-4C09-8DCD-D0E79D2A61C9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F917E5C7-E300-4EF2-ABDB-2A508DCCF365": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"title": "Define", "type": "advancedText", "key": "8B8F3A1E-B83C-4B67-B3EC-87B36AB458E3", "height": 60}], "8B8F3A1E-B83C-4B67-B3EC-87B36AB458E3": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "479BBA56-96B7-4BD5-A5F1-21EF22E5AF0F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8E8129E4-FC24-40FE-B647-CF0B8362FB8B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "67C57B94-3E46-49FC-8FB3-27A942833489": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "729287BB-4E46-4A54-85D1-ADAC5D25480F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "5B74E06E-E622-4F10-A7BD-EBE753AB7A86": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "EE1CF495-4B2D-4D8B-9061-18E0E5B0DBA4": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Get RSS Feed Titles", "parameters": {"BACDC10E-897F-4EAE-8278-8C34EE88DCA2": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "D110DEC1-2DF8-43F4-8A6F-2AE932CE4AF1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "12ABF778-3390-4340-9E21-38453DC6C783": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"placeholder": "http://example.com/rss.xml", "type": "basicText", "key": "B15FA92A-12FC-4B68-B520-420DC4E4D595", "title": "Feed URL"}], "AF9E2606-3AE4-41A1-A840-EC9453370702": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "5D8F6E03-6800-4D06-803A-A97C9908D48B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "5A07BA4D-C17C-4CF0-B30E-21A06F44DA92": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "4DE980FD-DA6B-4143-8809-9556986C511C": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C3EF5455-F439-436B-9FE8-E5A7FAF86233": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "BDDBB8C4-EBD9-473A-B51A-A28DA62A88C4": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "74CEF61F-4266-4770-A855-48937BD16B15": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C0F90D6C-DFBA-446A-A233-535E4B3B32B9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "BB25125C-D24B-493F-A340-D1A962600596": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8B14AE50-B0C9-4B1B-A2E8-447B307D5EF1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "1EAA574A-64DB-4C69-8787-4D173A7480C0": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "import workflow\nimport console\n\nparams = workflow.get_parameters()\nurl = params.get('Feed URL', None)\n\nif url:\n\tconsole.show_activity()\n\timport feedparser\n\tfeed = feedparser.parse(url)\n\tentries = feed.get('entries', None)\n\tif not entries:\n\t\tentries = feed.get('articles', None)\n\toutput_list = []\n\tif entries:\n\t\tfor entry in entries:\n\t\t\toutput_list.append(entry['title'])\n\tconsole.hide_activity()\n\toutput = '\\n'.join(output_list)\n\tworkflow.set_output(output)\n", "C841B051-92A1-47B6-959B-C899CB1991ED": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "B15FA92A-12FC-4B68-B520-420DC4E4D595": "", "A51B78B1-A5EA-48D3-861D-ECC8F00B8831": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "0B04F212-0ABC-4886-B065-6BC2181E1AC9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3AFE1DCB-DF5E-46D9-8633-9D9563578386": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3788EDC6-BB26-462B-9260-352157C6005A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Select Next Occurrence", "parameters": {"37C9A579-02C9-4D10-AD20-6C47D4031448": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9F407BE1-E65A-47B7-BA64-505855FDB3E8": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "B35A3AA0-A70C-4EDD-AFCC-76DEB2187D16": false, "D3C6CFF4-1AC1-4ABA-B0FE-B42FC65988B2": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F39BBD2E-F3A5-429E-BA3A-ABBFFB6D2659": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "6AAB6208-3B16-438C-893E-AC46A8A92D39": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "5384BC3A-0FD7-45EC-8CA5-61320688D0B1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3D67FEDB-7684-4231-971F-6D15190B7D02": true, "775CB321-0094-41DE-B86E-1C11AC3E3085": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "82159FC6-A7C5-4049-8215-773BBB1D33EA": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "D92825A3-4B7D-470E-9226-E7E77652EA77": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "7D5686AE-7498-48AA-8E47-330E4379FFCA": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C39223D9-340E-49BB-90C4-745703A27A1A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "2ABF039F-CBC9-43DE-AF52-6ECFE0674BAE": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "217C9D51-D748-459F-A3E8-C9F39A07CE5B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "import workflow\nimport editor\nimport re\n\nstart, end = editor.get_selection()\ntext = editor.get_text()\nparams = workflow.get_parameters()\nterm = params.get('Select Next Occurrence of', '')\nwrap = params.get('Wrap Around', False)\nregex = params.get('Regular Expression', False)\npattern = term if regex else re.escape(term)\n\nif term and text:\n\tmatch = re.search(pattern, text[end:])\n\toffset = end\n\tif not match and wrap:\n\t\tmatch = re.search(pattern, text)\n\t\toffset = 0\n\tif match:\n\t\teditor.set_selection(match.start(0) + offset, match.end(0) + offset)\n\n", "9D596A84-F9A6-464A-90C1-756CE9A9FBFC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"title": "Select Next Occurrence of", "type": "advancedText", "key": "6AAB6208-3B16-438C-893E-AC46A8A92D39", "height": 60}, {"type": "switch", "key": "B35A3AA0-A70C-4EDD-AFCC-76DEB2187D16", "title": "Regular Expression"}, {"type": "switch", "key": "3D67FEDB-7684-4231-971F-6D15190B7D02", "title": "Wrap Around"}]}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Get Stock Price", "parameters": {"8DD4E127-9BC3-4E71-9906-8183EB22A71E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "75483700-A12C-4CD9-B353-28B7ABD689C1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C6323715-08C9-43ED-A293-7B33AB24D6A2": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "6B2B9D39-6707-4DF6-8D26-9B7D41C58784": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8206FDA1-3695-44AD-8815-96DB8FD43C52": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "0D20CE31-7551-4856-9C94-BC7A3244BEFD": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "7C69D060-532E-489D-ADA1-C835CC9E6175": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"placeholder": "Example: AAPL", "type": "basicText", "key": "61E0B385-F668-463D-B0F8-1C6447815C44", "title": "Symbol"}], "20AFA058-634C-4681-BEDB-0959D4D853BC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F7F44F24-B811-4091-B706-2524D9641317": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "591C26D4-766E-4427-AB5D-D3D6E0E55328": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "import workflow\nimport urllib\ns = workflow.get_parameters().get('Symbol')\nif s:\n\ttry:\n\t\turl = 'http://finance.yahoo.com/d/quotes.csv?s=' + s + '&f=l1'\n\t\tf = urllib.urlopen(url)\n\t\tprice = f.read()\n\t\tworkflow.set_output(price)\n\texcept IOError:\n\t\timport console\n\t\tconsole.hud_alert('Could not get stock price', 'error', 1.5)\n", "61E0B385-F668-463D-B0F8-1C6447815C44": "AAPL", "E4D83CC2-C054-4003-AD92-2AEE7C6C0435": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Create Short URL (is.gd)", "parameters": {"10B1B7A9-80C5-4F95-9EAA-F07972B0EBFC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "5E93090E-6437-4C55-B094-83DE96B52703": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C567E82B-ACB7-405D-970E-72C0A2B441E3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "40E9FF24-8C64-4229-B981-2D8D82260D7D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E2106D1B-D7C6-4F6D-9B3B-537CA72CE811": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "81075EBD-B31E-4298-9FC4-48D5A674EE46": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F9FFC76E-0679-475D-AA09-FF2CD72EF00B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "1C90F8A2-BE1A-4A55-8233-DF038A895A06": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "4FF30A71-E12D-4EBD-8123-1F53728EC2CF": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "__custom_action_parameters__": [{"type": "advancedText", "key": "4FF30A71-E12D-4EBD-8123-1F53728EC2CF", "title": "URL"}], "76F230D3-33FD-450E-A16B-0E5E56EDE069": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "import workflow\nimport clipboard\nimport re\nimport console\n\nlong_url = workflow.get_parameters()['URL']\nif re.match('http(s)?://.*', long_url):\n\timport urllib\n\ttry:\n\t\tshort_url = urllib.urlopen('http://is.gd/create.php?format=simple&url=' + urllib.quote(long_url, '')).read()\n\t\tif re.match('http://is.gd.*', short_url):\n\t\t\tworkflow.set_output(short_url)\n\t\telse:\n\t\t\tconsole.hud_alert('Failed to shorten URL', 'error', 1.5)\n\texcept IOError:\n\t\tconsole.hud_alert('Failed to shorten URL', 'error', 1.5)\nelse:\n\tconsole.hud_alert('Invalid URL', 'error', 1.5)\n"}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Schedule Notification", "parameters": {"__custom_action_parameters__": [{"optionTitles": ["(None)", "Beep", "Bleep", "Coin", "Error", "Spaceship"], "type": "selectOption", "key": "862FB2F6-1EE9-4C29-A300-9CEE71BA9EF0", "title": "Sound"}, {"keyboardType": 2, "type": "basicText", "key": "CE644B5C-69B0-49A0-BF4A-75A36498757C", "title": "Delay (Minutes)"}, {"title": "Text", "type": "advancedText", "key": "7D651A4D-2FB1-40FF-8D5A-BD229BD1932D", "height": 100}, {"title": "Launch URL (optional)", "keyboardType": 3, "type": "advancedText", "key": "359B956D-9411-4CD8-99EF-C0B7B526C83A", "height": 60}], "359B956D-9411-4CD8-99EF-C0B7B526C83A": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "862FB2F6-1EE9-4C29-A300-9CEE71BA9EF0": 2, "CE644B5C-69B0-49A0-BF4A-75A36498757C": "3", "F88F3762-0A14-4093-ACA9-3EFAF15D3E07": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "7D651A4D-2FB1-40FF-8D5A-BD229BD1932D": {"text": "Hello", "tokenRanges": {}, "type": "advancedText"}, "E73307C2-86EA-416F-958C-515B8C50D99E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9045C4C2-C0C2-45F8-94CA-FD67A056FA67": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F5F109B7-E71A-41F6-B18C-7E7CE0F4F407": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "D867DE9C-6751-493F-AB9E-7E3D66073EC2": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "80AB8F76-C78C-43D8-89D3-95DC7089B65C": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "#coding: utf-8\nimport workflow\nimport notification\nimport console\n\nsounds = ['Beep', 'Bleep', 'Coin_1', 'Error', 'Spaceship']\nparams = workflow.get_parameters()\neffect_index = params['Sound']\neffect_name = sounds[effect_index - 1] if effect_index > 0 else None\nmessage = params['Text']\nlaunch_url = params['Launch URL (optional)']\n\ntry:\n\tdelay = float(params['Delay (Minutes)'])\nexcept ValueError:\n\tconsole.hud_alert('Invalid Delay', 'error')\nnotification.schedule(message, delay * 60, effect_name, launch_url)\nconsole.hud_alert('Scheduled', 'success', 1.0)\n\n", "D7F3FA22-DCF5-4A30-A139-B68783ECAD05": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Cancel All Notifications", "parameters": {"E34ED55B-FBEB-4F8F-9D0C-95FFD1DE039A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3A9BEAB2-2B3E-406C-B42B-265D62E483DA": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F4F4B693-ADE6-47A2-B415-E0146DD88F1A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "717F8A2C-28FB-452A-B526-438413AEAE55": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C08D2B9F-763E-4D47-BF3F-E78C29B1DAA4": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [], "EBDA4415-A049-4FE8-9A30-17D5B03C5DA1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "714E0559-7484-49D8-A9DC-6010611669A6": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "#coding: utf-8\nimport workflow\nimport notification\n\nnotification.cancel_all()\n\nworkflow.set_output = workflow.get_input()\n", "85306C9A-B368-4B73-8857-FBE3ECB0922F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "41F5C805-5E66-4A77-BC05-BBA84DC22DC2": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Compare (Diff)", "parameters": {"DD6CA9FD-BFC3-4E2A-9B4C-B00F5B046BA8": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "A25A8AE4-C956-4D2C-BF0D-4C9D247DB7D6": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "8DE8D02F-DCD8-47D0-A6CA-3C608AD98083": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "864F256C-515C-4158-BE3A-86ED61472F36": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "60C613B4-0902-4F5F-9659-6CE06E71E752": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "33A0A4E3-1D89-4418-8A36-1015D59A61D7": 0, "DBAD4725-4CE7-4CD3-8F1D-109B7A1C4056": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9FC62B34-5EB2-4ADC-9F2B-7E187B79F39B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"title": "Text A", "type": "advancedText", "key": "A25A8AE4-C956-4D2C-BF0D-4C9D247DB7D6", "height": 100}, {"title": "Text B", "type": "advancedText", "key": "DD6CA9FD-BFC3-4E2A-9B4C-B00F5B046BA8", "height": 100}, {"optionTitles": ["HTML", "Critic Markup"], "type": "selectOption", "key": "33A0A4E3-1D89-4418-8A36-1015D59A61D7", "title": "Output Format"}], "E97BF5C5-8263-49D2-9A89-007C3D4B57A1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "#coding: utf-8\nimport workflow\nimport difflib\nfrom StringIO import StringIO\n\ndef diff(a, b, del1, del2, ins1, ins2):\n\tseq = difflib.SequenceMatcher(None, a, b)\n\topcodes = seq.get_opcodes()\n\tout = StringIO()\n\tfor op, a0, a1, b0, b1 in opcodes:\n\t\tif op == 'equal':\n\t\t\tout.write(a[a0:a1])\n\t\tif op == 'insert' or op == 'replace':\n\t\t\tout.write(ins1 + b[b0:b1] + ins2)\n\t\tif op == 'delete' or op == 'replace':\n\t\t\tout.write(del1 + a[a0:a1] + del2)\n\treturn out.getvalue()\n\nparams = workflow.get_parameters()\na = params['Text A']\nb = params['Text B']\nif params['Output Format'] == 0:\n\timport cgi\n\ta = cgi.escape(a)\n\tb = cgi.escape(b)\n\thtml = diff(a, b, '<del>', '</del>', '<ins>', '</ins>')\n\tworkflow.set_output(html)\nelse:\n\tcritic_markup = diff(a, b, '{--', '--}', '{++', '++}')\n\tworkflow.set_output(critic_markup)\n"}, "class": "WorkflowActionCustom"}], "name": "Custom Actions Pack", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone10,6", "systemVersion": "13.1.3"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22This%20is%20a%20collection%20of%20several%20unrelated%20custom%20actions.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22READ%20ME%5Cu2757%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22This%20is%20not%20an%20actual%20workflow%2C%20it%20just%20contains%20a%20collection%20of%20custom%20actions%20that%20are%20meant%20to%20be%20saved%20as%20presets.%5Cn%5CnRunning%20this%20won%27t%20do%20anything%20because%20of%20the%20following%20%27Stop%27%20action.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22---------------------------------------------------------------------------------------%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20false%2C%20%22HUDTitle%22%3A%20%22%22%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Send%20to%20Drafts%22%2C%20%22parameters%22%3A%20%7B%220217F8EB-80EF-4A2C-A9E5-7E18DC6C3248%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%221C841272-0445-4065-853D-785C8DBE61D3%22%3A%20true%2C%20%22143D755D-53CA-4286-B024-A20A1578BF3B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2247E71F88-8D67-4E22-8E06-6EF4DA6D1626%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22title%22%3A%20%22Text%22%2C%20%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%22EC988DCA-5C83-43C2-9CD6-1DF50A0A448D%22%2C%20%22height%22%3A%20120%7D%2C%20%7B%22type%22%3A%20%22switch%22%2C%20%22key%22%3A%20%221C841272-0445-4065-853D-785C8DBE61D3%22%2C%20%22title%22%3A%20%22Return%20to%20Editorial%22%7D%5D%2C%20%2230D112E0-6074-4B9E-9F59-5EFA908FC9A1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22AECCCF4E-41A4-4C07-ABB0-45DF485AFD2D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229A5C7E4F-0E3F-4918-A7B2-A9F790F8BF54%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A035F565-D7EA-4F35-86F2-74B8B91721C2%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F19F7720-C188-42BA-B4F7-8A94251CBB62%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%222C1B952C-CBC1-4E7E-A1D5-1ADB1D3160A0%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22291DA446-1159-45ED-AE69-FB0F73E3CB04%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%227EC41E5D-8181-43D3-90A6-BA7A729AD37A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E05EB8C4-3C06-48D4-91C9-E5EA271879E5%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22D890C0A9-6A00-4D3F-A997-40B6614EB9E2%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22FD8A2171-5D14-4E7B-BEE4-4440DBA53C6C%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22EC988DCA-5C83-43C2-9CD6-1DF50A0A448D%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2239FDFB9D-8D85-4A8B-A546-D7451F978EDC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%226091BAEA-7008-4A83-BC09-8B5515F8E323%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2230B1D86A-AC53-4145-8ABB-481688A09E30%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22%23NOTE%3A%20Drafts%20doesn%27t%20support%20a%20%27success%27%20callback%20URL%20when%20no%20action%20is%20triggered%2C%20so%20if%20%27Return%20to%20Editorial%27%20is%20on%2C%20the%20text%20is%20also%20copied%20to%20the%20clipboard.%5Cn%5Cnimport%20workflow%5Cnimport%20webbrowser%5Cnfrom%20urllib%20import%20quote%5Cn%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cntext%20%3D%20params.get%28%27Text%27%2C%20None%29%5Cncallback%20%3D%20params.get%28%27Return%20to%20Editorial%27%2C%20False%29%5Cn%5Cnif%20text%3A%5Cn%5Cturl%20%3D%20%27drafts%3A%2F%2Fx-callback-url%2Fcreate%3Ftext%3D%27%20%2B%20quote%28text%29%5Cn%5Ctif%20callback%3A%5Cn%5Ct%5Cturl%20%2B%3D%20%27%26action%3D%27%20%2B%20quote%28%27Copy%20to%20Clipboard%27%29%5Cn%5Ct%5Cturl%20%2B%3D%20%27%26x-success%3D%27%20%2B%20quote%28%27editorial%3A%2F%2F%27%29%5Cn%5Ctsuccess%20%3D%20webbrowser.open%28url%29%5Cn%5Ctif%20not%20success%3A%5Cn%5Ct%5Ctimport%20console%5Cn%5Ct%5Ctconsole.hud_alert%28%27Drafts%20not%20installed%27%2C%20%27error%27%2C%201.5%29%5Cn%22%2C%20%227A90A31B-EC7D-44F5-89B5-63A8CB4C207F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A0980BAA-E704-49D7-962E-DAB627E9F402%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Post%20with%20TweetBot%22%2C%20%22parameters%22%3A%20%7B%22DF194431-87BB-4812-80C3-9E5AB43F2C37%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228055E0DF-CD9A-4AD4-99E7-A8D6356360AB%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22222622CB-9B38-42A7-847F-43A98BA19764%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22312D5B0A-73FE-4236-A720-7FCB9EF51D81%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22placeholder%22%3A%20%22%28Default%20Account%29%22%2C%20%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%22CEB04CDB-BADD-4409-9B8F-8E073222E446%22%2C%20%22title%22%3A%20%22Account%22%7D%2C%20%7B%22title%22%3A%20%22Tweet%22%2C%20%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%220A5A0AF9-F928-44FC-B995-EC4087050735%22%2C%20%22height%22%3A%20100%7D%2C%20%7B%22type%22%3A%20%22switch%22%2C%20%22key%22%3A%20%2299FAF415-0381-4238-B15F-4D5C50F6B413%22%2C%20%22title%22%3A%20%22Return%20to%20Editorial%22%7D%5D%2C%20%22EE6DFE6A-3257-42AF-AFA6-C11ADE65559D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2299FAF415-0381-4238-B15F-4D5C50F6B413%22%3A%20true%2C%20%22CDB2FAE9-2230-4B4B-ABA2-673267CA0166%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223F5656FF-CA7E-42BF-9B5A-56ACD9F7E5A7%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%227ABE0A9A-6749-4C3B-8719-915584215A14%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A494C1C1-6722-401A-ACE9-7A18E4E74E55%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22CEB04CDB-BADD-4409-9B8F-8E073222E446%22%3A%20%22%22%2C%20%2253EBDE34-739F-4BF0-B827-576CCCE9ABE6%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22534B636B-1D5F-4A10-B4C5-32CBFC0AF3C6%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A3B2161D-4604-43D8-A6B9-18A62C7CA6C9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22D0AB689E-465F-4E6B-A61D-AFED521EE8E9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2249F9F435-2FDE-463F-BCBB-AE681D4578B2%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%220C4BA658-9E6E-4404-83DE-F909D40CDEF1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E511A644-13BE-47B1-9D71-511D750D6BB4%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%220A5A0AF9-F928-44FC-B995-EC4087050735%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22import%20workflow%5Cnimport%20webbrowser%5Cnfrom%20urllib%20import%20quote%5Cn%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cn%5Cnaccount%20%3D%20params.get%28%27Account%27%2C%20None%29%5Cntweet%20%3D%20params.get%28%27Tweet%27%2C%20None%29%5Cncallback%20%3D%20params.get%28%27Return%20to%20Editorial%27%2C%20False%29%5Cn%5Cn%23tweetbot%3A%2F%2F%3Cscreenname%3E%2Fpost%3Ftext%3D%3Ctext%3E%26callback_url%3D%3Curl%3E%26in_reply_to_status_id%3D%3Ctweet_id%3E%5Cn%5Cnif%20tweet%3A%5Cn%5Cturl%20%3D%20%27tweetbot%3A%2F%2F%27%5Cn%5Ctif%20account%3A%5Cn%5Ct%5Cturl%20%2B%3D%20quote%28account%29%5Cn%5Cturl%20%2B%3D%20%27%2Fpost%3Ftext%3D%27%20%2B%20quote%28tweet%29%5Cn%5Ctif%20callback%3A%5Cn%5Ct%5Cturl%20%2B%3D%20%27%26callback_url%3D%27%20%2B%20quote%28%27editorial%3A%2F%2F%27%29%5Cn%5Ctwebbrowser.open%28url%29%5Cn%5Cn%22%2C%20%22156F61D9-0566-48F6-A7B9-4D349BE78AE3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22674B8A7B-F599-45F0-BAB8-71ED1E45A19E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2236D42353-DB32-4C63-B266-EC5AADA5B00D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229EB2C8A0-07D7-436C-92BA-7B74777BBD34%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2281A29078-05D8-4975-B647-77E494DBF3BC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2251D1C493-CFCE-44F5-BA52-108C97E54933%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22204F7CD1-A4FF-41FD-AAA0-DDC598476C04%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Add%20to%20Evernote%22%2C%20%22parameters%22%3A%20%7B%220352C55C-3F35-44FA-AB29-7E6A904A0613%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22456E0613-00B2-48DC-B291-21B2EC27D75A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2282720418-3940-4B9C-A2D1-3B70204D2304%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229631D935-B88F-4C69-8BCC-3F049AF483F0%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22AE2F6C40-53E2-404F-A846-8A29D40E6CF7%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22EB421585-1A18-45FD-8ABC-1DBE5E8619B6%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%22B2C9A8F4-4F8A-401E-B133-BC44EEEEF2AE%22%2C%20%22title%22%3A%20%22Title%22%7D%2C%20%7B%22title%22%3A%20%22Content%22%2C%20%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%22D59D3667-23C6-4ABB-B75F-0B13990D775B%22%2C%20%22height%22%3A%20120%7D%2C%20%7B%22placeholder%22%3A%20%22%28Get%20your%20token%20here%3A%20www.evernote.com%2Fapi%2FDeveloperToken.action%29%22%2C%20%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%2210BB6296-7848-4280-ADB5-635C64224DE9%22%2C%20%22title%22%3A%20%22Dev%20Token%22%7D%5D%2C%20%227ACA768E-8A89-4415-B07C-B31BCE83FA3D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2204457BA2-8D74-4741-A93D-0B6D5205BF49%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2269F42725-4A73-4167-8B1E-A09D2BA9E24F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F54B0353-898D-4DCA-B92D-1BEB3BF7758D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22DAF66F40-F705-43B9-92AB-D5A92CEFA442%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22EEC5B36C-C818-4F5C-82D5-41AC5A6E1BA9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22CFC86F37-AB60-42D5-B646-80E6FE691A77%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C57AA5DE-33C8-4B45-AE6E-6064A62F742C%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A32EA424-A040-4AE5-84E9-591A2D1FF2B4%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22796C9ABC-17C4-4F6C-8AC5-279AFE86D058%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2210BB6296-7848-4280-ADB5-635C64224DE9%22%3A%20%22%22%2C%20%221B77F140-097C-4127-BEE2-BB01184FC14E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22679ED8AF-7896-4C04-AC9F-E9461ABDB007%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22774B128A-6DC2-476C-B440-F3758AA39A78%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22B2C9A8F4-4F8A-401E-B133-BC44EEEEF2AE%22%3A%20%22%22%2C%20%22A3719759-62CC-4C4B-9AB5-4BCD38B0F3C7%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22EBA59274-B1ED-4393-BFE8-E98ED9128A25%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%224C710287-CB44-471C-AD45-433C9EC90D02%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22%23%20To%20get%20a%20developer%20token%2C%20visit%5Cn%23%20https%3A%2F%2Fwww.evernote.com%2Fapi%2FDeveloperToken.action%5Cnimport%20workflow%5Cnimport%20console%5Cn%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cnauth_token%20%3D%20params.get%28%27Dev%20Token%27%2C%20None%29%5Cnnote_title%20%3D%20params.get%28%27Title%27%2C%20%27%27%29%5Cnnote_content%20%3D%20params.get%28%27Content%27%2C%20%27%27%29%5Cn%5Cnif%20not%20auth_token%3A%5Cn%5Ctconsole.hud_alert%28%27Evernote%20Dev%20Token%20Missing%27%2C%20%27error%27%2C%202.0%29%5Cn%5Ctworkflow.stop%28%29%5Cnelif%20note_title%20or%20note_content%3A%5Cn%5Ctimport%20evernote.edam.userstore.constants%20as%20UserStoreConstants%5Cn%5Ctimport%20evernote.edam.type.ttypes%20as%20Types%5Cn%5Ctfrom%20evernote.api.client%20import%20EvernoteClient%5Cn%5Ctfrom%20xml.sax.saxutils%20import%20escape%5Cn%5Ct%5Cn%5Ctclient%20%3D%20EvernoteClient%28token%3Dauth_token%2C%20sandbox%3DFalse%29%5Cn%5Ctnote_store%20%3D%20client.get_note_store%28%29%5Cn%5Ct%5Cn%5Ct%23%20To%20create%20a%20new%20note%2C%20simply%20create%20a%20new%20Note%20object%20and%20fill%20in%5Cn%5Ct%23%20attributes%20such%20as%20the%20note%27s%20title.%5Cn%5Ctnote%20%3D%20Types.Note%28%29%5Cn%5Ctnote.title%20%3D%20note_title%5Cn%5Ctnote.content%20%3D%20%27%3C%3Fxml%20version%3D%5C%221.0%5C%22%20encoding%3D%5C%22UTF-8%5C%22%3F%3E%27%5Cn%5Ctnote.content%20%2B%3D%20%27%3C%21DOCTYPE%20en-note%20SYSTEM%20%27%20%5C%5C%5Cn%20%20%20%20%27%5C%22http%3A%2F%2Fxml.evernote.com%2Fpub%2Fenml2.dtd%5C%22%3E%27%5Cn%5Ctnote.content%20%2B%3D%20%27%3Cen-note%3E%27%5Cn%5Ctnote.content%20%2B%3D%20escape%28note_content%29%5Cn%5Ctnote.content%20%2B%3D%20%27%3C%2Fen-note%3E%27%5Cn%5Ct%5Cn%5Ct%23%20Finally%2C%20send%20the%20new%20note%20to%20Evernote%20using%20the%20createNote%20method%5Cn%5Ct%23%20The%20new%20Note%20object%20that%20is%20returned%20will%20contain%20server-generated%5Cn%5Ct%23%20attributes%20such%20as%20the%20new%20note%27s%20unique%20GUID.%5Cn%5Ctcreated_note%20%3D%20note_store.createNote%28note%29%5Cn%5Ctconsole.hud_alert%28%27Note%20Created%27%2C%20%27success%27%2C%201.5%29%5Cn%22%2C%20%22D59D3667-23C6-4ABB-B75F-0B13990D775B%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225FEE6EFC-7BE6-4708-84A3-B3182767177D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223BE8EFF8-FBD7-4DF8-B567-518194D148BA%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2229EB2687-683D-4A58-AB6B-A941402DAEF1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2285840AA5-5C07-4FA1-8692-53694FB83B2C%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223DECDA1F-D3D2-4E90-AB8C-D12C08B58373%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22CDF9DE95-858F-4647-A126-AEF9625125A9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%224C4D6EA0-A549-47FA-80A6-C5B6A19785BD%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22510DBD6D-2689-4417-AC04-9553B9272267%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228F6FDF93-1B6C-4FA6-95B7-A6C477D5FFFE%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F053FE50-E285-4077-B111-325A769238C3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2206F181C0-7013-4DD7-B09D-CBFD9334B4C7%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Define%20with%20DuckDuckGo%22%2C%20%22parameters%22%3A%20%7B%22BE534FC3-F6BA-481E-B1D8-8E62D34EFD66%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A0C2918D-A916-40BB-92FE-6A44E2D5B045%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22575D606B-7F49-4DD6-8C1D-DD3B46840316%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228E6B3440-584F-4C2E-BA50-C11A313DB63B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C6CB5F0F-C999-4888-9B56-541AECEC2E8B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223B1B9207-645B-4CAD-9608-25DA4A317BC5%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22684BBA4F-E350-4D8E-8DF3-89378A91D452%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22%23%20http%3A%2F%2Fapi.duckduckgo.com%2F%3Fq%3Ddefine%2Bostensibly%26format%3Djson%26pretty%3D1%5Cn%5Cnimport%20workflow%5Cnimport%20console%5Cnimport%20requests%5Cnimport%20json%5Cnfrom%20urllib%20import%20quote%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cnterm%20%3D%20params.get%28%27Define%27%2C%20%27%27%29%5Cnif%20term%3A%5Cn%5Cttry%3A%5Cn%5Ct%5Cturl%20%3D%20%27http%3A%2F%2Fapi.duckduckgo.com%2F%3Fq%3Ddefine%2B%27%20%2B%20quote%28term%29%20%2B%20%27%26format%3Djson%27%5Cn%5Ct%5Ctr%20%3D%20requests.get%28url%29%5Cn%5Ct%5Ctd%20%3D%20json.loads%28r.text%29%5Cn%5Ct%5Ctdefinition%20%3D%20d.get%28%27Definition%27%2C%20None%29%5Cn%5Ct%5Ctif%20definition%3A%5Cn%5Ct%5Ct%5Ctworkflow.set_output%28definition%29%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctconsole.hud_alert%28%27No%20Definition%20Found%27%2C%20%27error%27%2C%201.5%29%5Cn%5Ctexcept%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27Definition%20Request%20Failed%27%2C%20%27error%27%2C%201.5%29%5Cn%22%2C%20%227B7E9CFE-C687-4170-B46D-161A1EACA0C8%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A807F7DF-164C-446F-B977-F49A20A0C26E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22611C3E36-88E4-4F6C-9AD7-2F063DC8B71D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E1202951-73CE-4C09-8DCD-D0E79D2A61C9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F917E5C7-E300-4EF2-ABDB-2A508DCCF365%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22title%22%3A%20%22Define%22%2C%20%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%228B8F3A1E-B83C-4B67-B3EC-87B36AB458E3%22%2C%20%22height%22%3A%2060%7D%5D%2C%20%228B8F3A1E-B83C-4B67-B3EC-87B36AB458E3%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22479BBA56-96B7-4BD5-A5F1-21EF22E5AF0F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228E8129E4-FC24-40FE-B647-CF0B8362FB8B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2267C57B94-3E46-49FC-8FB3-27A942833489%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22729287BB-4E46-4A54-85D1-ADAC5D25480F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225B74E06E-E622-4F10-A7BD-EBE753AB7A86%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22EE1CF495-4B2D-4D8B-9061-18E0E5B0DBA4%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Get%20RSS%20Feed%20Titles%22%2C%20%22parameters%22%3A%20%7B%22BACDC10E-897F-4EAE-8278-8C34EE88DCA2%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22D110DEC1-2DF8-43F4-8A6F-2AE932CE4AF1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2212ABF778-3390-4340-9E21-38453DC6C783%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22placeholder%22%3A%20%22http%3A%2F%2Fexample.com%2Frss.xml%22%2C%20%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%22B15FA92A-12FC-4B68-B520-420DC4E4D595%22%2C%20%22title%22%3A%20%22Feed%20URL%22%7D%5D%2C%20%22AF9E2606-3AE4-41A1-A840-EC9453370702%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225D8F6E03-6800-4D06-803A-A97C9908D48B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225A07BA4D-C17C-4CF0-B30E-21A06F44DA92%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%224DE980FD-DA6B-4143-8809-9556986C511C%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C3EF5455-F439-436B-9FE8-E5A7FAF86233%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22BDDBB8C4-EBD9-473A-B51A-A28DA62A88C4%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2274CEF61F-4266-4770-A855-48937BD16B15%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C0F90D6C-DFBA-446A-A233-535E4B3B32B9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22BB25125C-D24B-493F-A340-D1A962600596%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228B14AE50-B0C9-4B1B-A2E8-447B307D5EF1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%221EAA574A-64DB-4C69-8787-4D173A7480C0%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22import%20workflow%5Cnimport%20console%5Cn%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cnurl%20%3D%20params.get%28%27Feed%20URL%27%2C%20None%29%5Cn%5Cnif%20url%3A%5Cn%5Ctconsole.show_activity%28%29%5Cn%5Ctimport%20feedparser%5Cn%5Ctfeed%20%3D%20feedparser.parse%28url%29%5Cn%5Ctentries%20%3D%20feed.get%28%27entries%27%2C%20None%29%5Cn%5Ctif%20not%20entries%3A%5Cn%5Ct%5Ctentries%20%3D%20feed.get%28%27articles%27%2C%20None%29%5Cn%5Ctoutput_list%20%3D%20%5B%5D%5Cn%5Ctif%20entries%3A%5Cn%5Ct%5Ctfor%20entry%20in%20entries%3A%5Cn%5Ct%5Ct%5Ctoutput_list.append%28entry%5B%27title%27%5D%29%5Cn%5Ctconsole.hide_activity%28%29%5Cn%5Ctoutput%20%3D%20%27%5C%5Cn%27.join%28output_list%29%5Cn%5Ctworkflow.set_output%28output%29%5Cn%22%2C%20%22C841B051-92A1-47B6-959B-C899CB1991ED%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22B15FA92A-12FC-4B68-B520-420DC4E4D595%22%3A%20%22%22%2C%20%22A51B78B1-A5EA-48D3-861D-ECC8F00B8831%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%220B04F212-0ABC-4886-B065-6BC2181E1AC9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223AFE1DCB-DF5E-46D9-8633-9D9563578386%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223788EDC6-BB26-462B-9260-352157C6005A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Select%20Next%20Occurrence%22%2C%20%22parameters%22%3A%20%7B%2237C9A579-02C9-4D10-AD20-6C47D4031448%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229F407BE1-E65A-47B7-BA64-505855FDB3E8%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22B35A3AA0-A70C-4EDD-AFCC-76DEB2187D16%22%3A%20false%2C%20%22D3C6CFF4-1AC1-4ABA-B0FE-B42FC65988B2%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F39BBD2E-F3A5-429E-BA3A-ABBFFB6D2659%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%226AAB6208-3B16-438C-893E-AC46A8A92D39%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225384BC3A-0FD7-45EC-8CA5-61320688D0B1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223D67FEDB-7684-4231-971F-6D15190B7D02%22%3A%20true%2C%20%22775CB321-0094-41DE-B86E-1C11AC3E3085%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2282159FC6-A7C5-4049-8215-773BBB1D33EA%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22D92825A3-4B7D-470E-9226-E7E77652EA77%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%227D5686AE-7498-48AA-8E47-330E4379FFCA%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C39223D9-340E-49BB-90C4-745703A27A1A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%222ABF039F-CBC9-43DE-AF52-6ECFE0674BAE%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22217C9D51-D748-459F-A3E8-C9F39A07CE5B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22import%20workflow%5Cnimport%20editor%5Cnimport%20re%5Cn%5Cnstart%2C%20end%20%3D%20editor.get_selection%28%29%5Cntext%20%3D%20editor.get_text%28%29%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cnterm%20%3D%20params.get%28%27Select%20Next%20Occurrence%20of%27%2C%20%27%27%29%5Cnwrap%20%3D%20params.get%28%27Wrap%20Around%27%2C%20False%29%5Cnregex%20%3D%20params.get%28%27Regular%20Expression%27%2C%20False%29%5Cnpattern%20%3D%20term%20if%20regex%20else%20re.escape%28term%29%5Cn%5Cnif%20term%20and%20text%3A%5Cn%5Ctmatch%20%3D%20re.search%28pattern%2C%20text%5Bend%3A%5D%29%5Cn%5Ctoffset%20%3D%20end%5Cn%5Ctif%20not%20match%20and%20wrap%3A%5Cn%5Ct%5Ctmatch%20%3D%20re.search%28pattern%2C%20text%29%5Cn%5Ct%5Ctoffset%20%3D%200%5Cn%5Ctif%20match%3A%5Cn%5Ct%5Cteditor.set_selection%28match.start%280%29%20%2B%20offset%2C%20match.end%280%29%20%2B%20offset%29%5Cn%5Cn%22%2C%20%229D596A84-F9A6-464A-90C1-756CE9A9FBFC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22title%22%3A%20%22Select%20Next%20Occurrence%20of%22%2C%20%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%226AAB6208-3B16-438C-893E-AC46A8A92D39%22%2C%20%22height%22%3A%2060%7D%2C%20%7B%22type%22%3A%20%22switch%22%2C%20%22key%22%3A%20%22B35A3AA0-A70C-4EDD-AFCC-76DEB2187D16%22%2C%20%22title%22%3A%20%22Regular%20Expression%22%7D%2C%20%7B%22type%22%3A%20%22switch%22%2C%20%22key%22%3A%20%223D67FEDB-7684-4231-971F-6D15190B7D02%22%2C%20%22title%22%3A%20%22Wrap%20Around%22%7D%5D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Get%20Stock%20Price%22%2C%20%22parameters%22%3A%20%7B%228DD4E127-9BC3-4E71-9906-8183EB22A71E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2275483700-A12C-4CD9-B353-28B7ABD689C1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C6323715-08C9-43ED-A293-7B33AB24D6A2%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%226B2B9D39-6707-4DF6-8D26-9B7D41C58784%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228206FDA1-3695-44AD-8815-96DB8FD43C52%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%220D20CE31-7551-4856-9C94-BC7A3244BEFD%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%227C69D060-532E-489D-ADA1-C835CC9E6175%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22placeholder%22%3A%20%22Example%3A%20AAPL%22%2C%20%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%2261E0B385-F668-463D-B0F8-1C6447815C44%22%2C%20%22title%22%3A%20%22Symbol%22%7D%5D%2C%20%2220AFA058-634C-4681-BEDB-0959D4D853BC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F7F44F24-B811-4091-B706-2524D9641317%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22591C26D4-766E-4427-AB5D-D3D6E0E55328%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22import%20workflow%5Cnimport%20urllib%5Cns%20%3D%20workflow.get_parameters%28%29.get%28%27Symbol%27%29%5Cnif%20s%3A%5Cn%5Cttry%3A%5Cn%5Ct%5Cturl%20%3D%20%27http%3A%2F%2Ffinance.yahoo.com%2Fd%2Fquotes.csv%3Fs%3D%27%20%2B%20s%20%2B%20%27%26f%3Dl1%27%5Cn%5Ct%5Ctf%20%3D%20urllib.urlopen%28url%29%5Cn%5Ct%5Ctprice%20%3D%20f.read%28%29%5Cn%5Ct%5Ctworkflow.set_output%28price%29%5Cn%5Ctexcept%20IOError%3A%5Cn%5Ct%5Ctimport%20console%5Cn%5Ct%5Ctconsole.hud_alert%28%27Could%20not%20get%20stock%20price%27%2C%20%27error%27%2C%201.5%29%5Cn%22%2C%20%2261E0B385-F668-463D-B0F8-1C6447815C44%22%3A%20%22AAPL%22%2C%20%22E4D83CC2-C054-4003-AD92-2AEE7C6C0435%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Create%20Short%20URL%20%28is.gd%29%22%2C%20%22parameters%22%3A%20%7B%2210B1B7A9-80C5-4F95-9EAA-F07972B0EBFC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225E93090E-6437-4C55-B094-83DE96B52703%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C567E82B-ACB7-405D-970E-72C0A2B441E3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2240E9FF24-8C64-4229-B981-2D8D82260D7D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E2106D1B-D7C6-4F6D-9B3B-537CA72CE811%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2281075EBD-B31E-4298-9FC4-48D5A674EE46%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F9FFC76E-0679-475D-AA09-FF2CD72EF00B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%221C90F8A2-BE1A-4A55-8233-DF038A895A06%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%224FF30A71-E12D-4EBD-8123-1F53728EC2CF%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%224FF30A71-E12D-4EBD-8123-1F53728EC2CF%22%2C%20%22title%22%3A%20%22URL%22%7D%5D%2C%20%2276F230D3-33FD-450E-A16B-0E5E56EDE069%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22import%20workflow%5Cnimport%20clipboard%5Cnimport%20re%5Cnimport%20console%5Cn%5Cnlong_url%20%3D%20workflow.get_parameters%28%29%5B%27URL%27%5D%5Cnif%20re.match%28%27http%28s%29%3F%3A%2F%2F.%2A%27%2C%20long_url%29%3A%5Cn%5Ctimport%20urllib%5Cn%5Cttry%3A%5Cn%5Ct%5Ctshort_url%20%3D%20urllib.urlopen%28%27http%3A%2F%2Fis.gd%2Fcreate.php%3Fformat%3Dsimple%26url%3D%27%20%2B%20urllib.quote%28long_url%2C%20%27%27%29%29.read%28%29%5Cn%5Ct%5Ctif%20re.match%28%27http%3A%2F%2Fis.gd.%2A%27%2C%20short_url%29%3A%5Cn%5Ct%5Ct%5Ctworkflow.set_output%28short_url%29%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctconsole.hud_alert%28%27Failed%20to%20shorten%20URL%27%2C%20%27error%27%2C%201.5%29%5Cn%5Ctexcept%20IOError%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27Failed%20to%20shorten%20URL%27%2C%20%27error%27%2C%201.5%29%5Cnelse%3A%5Cn%5Ctconsole.hud_alert%28%27Invalid%20URL%27%2C%20%27error%27%2C%201.5%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Schedule%20Notification%22%2C%20%22parameters%22%3A%20%7B%22__custom_action_parameters__%22%3A%20%5B%7B%22optionTitles%22%3A%20%5B%22%28None%29%22%2C%20%22Beep%22%2C%20%22Bleep%22%2C%20%22Coin%22%2C%20%22Error%22%2C%20%22Spaceship%22%5D%2C%20%22type%22%3A%20%22selectOption%22%2C%20%22key%22%3A%20%22862FB2F6-1EE9-4C29-A300-9CEE71BA9EF0%22%2C%20%22title%22%3A%20%22Sound%22%7D%2C%20%7B%22keyboardType%22%3A%202%2C%20%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%22CE644B5C-69B0-49A0-BF4A-75A36498757C%22%2C%20%22title%22%3A%20%22Delay%20%28Minutes%29%22%7D%2C%20%7B%22title%22%3A%20%22Text%22%2C%20%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%227D651A4D-2FB1-40FF-8D5A-BD229BD1932D%22%2C%20%22height%22%3A%20100%7D%2C%20%7B%22title%22%3A%20%22Launch%20URL%20%28optional%29%22%2C%20%22keyboardType%22%3A%203%2C%20%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%22359B956D-9411-4CD8-99EF-C0B7B526C83A%22%2C%20%22height%22%3A%2060%7D%5D%2C%20%22359B956D-9411-4CD8-99EF-C0B7B526C83A%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22862FB2F6-1EE9-4C29-A300-9CEE71BA9EF0%22%3A%202%2C%20%22CE644B5C-69B0-49A0-BF4A-75A36498757C%22%3A%20%223%22%2C%20%22F88F3762-0A14-4093-ACA9-3EFAF15D3E07%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%227D651A4D-2FB1-40FF-8D5A-BD229BD1932D%22%3A%20%7B%22text%22%3A%20%22Hello%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E73307C2-86EA-416F-958C-515B8C50D99E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229045C4C2-C0C2-45F8-94CA-FD67A056FA67%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F5F109B7-E71A-41F6-B18C-7E7CE0F4F407%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22D867DE9C-6751-493F-AB9E-7E3D66073EC2%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2280AB8F76-C78C-43D8-89D3-95DC7089B65C%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20notification%5Cnimport%20console%5Cn%5Cnsounds%20%3D%20%5B%27Beep%27%2C%20%27Bleep%27%2C%20%27Coin_1%27%2C%20%27Error%27%2C%20%27Spaceship%27%5D%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cneffect_index%20%3D%20params%5B%27Sound%27%5D%5Cneffect_name%20%3D%20sounds%5Beffect_index%20-%201%5D%20if%20effect_index%20%3E%200%20else%20None%5Cnmessage%20%3D%20params%5B%27Text%27%5D%5Cnlaunch_url%20%3D%20params%5B%27Launch%20URL%20%28optional%29%27%5D%5Cn%5Cntry%3A%5Cn%5Ctdelay%20%3D%20float%28params%5B%27Delay%20%28Minutes%29%27%5D%29%5Cnexcept%20ValueError%3A%5Cn%5Ctconsole.hud_alert%28%27Invalid%20Delay%27%2C%20%27error%27%29%5Cnnotification.schedule%28message%2C%20delay%20%2A%2060%2C%20effect_name%2C%20launch_url%29%5Cnconsole.hud_alert%28%27Scheduled%27%2C%20%27success%27%2C%201.0%29%5Cn%5Cn%22%2C%20%22D7F3FA22-DCF5-4A30-A139-B68783ECAD05%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Cancel%20All%20Notifications%22%2C%20%22parameters%22%3A%20%7B%22E34ED55B-FBEB-4F8F-9D0C-95FFD1DE039A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223A9BEAB2-2B3E-406C-B42B-265D62E483DA%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F4F4B693-ADE6-47A2-B415-E0146DD88F1A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22717F8A2C-28FB-452A-B526-438413AEAE55%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C08D2B9F-763E-4D47-BF3F-E78C29B1DAA4%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%5D%2C%20%22EBDA4415-A049-4FE8-9A30-17D5B03C5DA1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22714E0559-7484-49D8-A9DC-6010611669A6%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20notification%5Cn%5Cnnotification.cancel_all%28%29%5Cn%5Cnworkflow.set_output%20%3D%20workflow.get_input%28%29%5Cn%22%2C%20%2285306C9A-B368-4B73-8857-FBE3ECB0922F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2241F5C805-5E66-4A77-BC05-BBA84DC22DC2%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Compare%20%28Diff%29%22%2C%20%22parameters%22%3A%20%7B%22DD6CA9FD-BFC3-4E2A-9B4C-B00F5B046BA8%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A25A8AE4-C956-4D2C-BF0D-4C9D247DB7D6%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228DE8D02F-DCD8-47D0-A6CA-3C608AD98083%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22864F256C-515C-4158-BE3A-86ED61472F36%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2260C613B4-0902-4F5F-9659-6CE06E71E752%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2233A0A4E3-1D89-4418-8A36-1015D59A61D7%22%3A%200%2C%20%22DBAD4725-4CE7-4CD3-8F1D-109B7A1C4056%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229FC62B34-5EB2-4ADC-9F2B-7E187B79F39B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22title%22%3A%20%22Text%20A%22%2C%20%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%22A25A8AE4-C956-4D2C-BF0D-4C9D247DB7D6%22%2C%20%22height%22%3A%20100%7D%2C%20%7B%22title%22%3A%20%22Text%20B%22%2C%20%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%22DD6CA9FD-BFC3-4E2A-9B4C-B00F5B046BA8%22%2C%20%22height%22%3A%20100%7D%2C%20%7B%22optionTitles%22%3A%20%5B%22HTML%22%2C%20%22Critic%20Markup%22%5D%2C%20%22type%22%3A%20%22selectOption%22%2C%20%22key%22%3A%20%2233A0A4E3-1D89-4418-8A36-1015D59A61D7%22%2C%20%22title%22%3A%20%22Output%20Format%22%7D%5D%2C%20%22E97BF5C5-8263-49D2-9A89-007C3D4B57A1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20difflib%5Cnfrom%20StringIO%20import%20StringIO%5Cn%5Cndef%20diff%28a%2C%20b%2C%20del1%2C%20del2%2C%20ins1%2C%20ins2%29%3A%5Cn%5Ctseq%20%3D%20difflib.SequenceMatcher%28None%2C%20a%2C%20b%29%5Cn%5Ctopcodes%20%3D%20seq.get_opcodes%28%29%5Cn%5Ctout%20%3D%20StringIO%28%29%5Cn%5Ctfor%20op%2C%20a0%2C%20a1%2C%20b0%2C%20b1%20in%20opcodes%3A%5Cn%5Ct%5Ctif%20op%20%3D%3D%20%27equal%27%3A%5Cn%5Ct%5Ct%5Ctout.write%28a%5Ba0%3Aa1%5D%29%5Cn%5Ct%5Ctif%20op%20%3D%3D%20%27insert%27%20or%20op%20%3D%3D%20%27replace%27%3A%5Cn%5Ct%5Ct%5Ctout.write%28ins1%20%2B%20b%5Bb0%3Ab1%5D%20%2B%20ins2%29%5Cn%5Ct%5Ctif%20op%20%3D%3D%20%27delete%27%20or%20op%20%3D%3D%20%27replace%27%3A%5Cn%5Ct%5Ct%5Ctout.write%28del1%20%2B%20a%5Ba0%3Aa1%5D%20%2B%20del2%29%5Cn%5Ctreturn%20out.getvalue%28%29%5Cn%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cna%20%3D%20params%5B%27Text%20A%27%5D%5Cnb%20%3D%20params%5B%27Text%20B%27%5D%5Cnif%20params%5B%27Output%20Format%27%5D%20%3D%3D%200%3A%5Cn%5Ctimport%20cgi%5Cn%5Cta%20%3D%20cgi.escape%28a%29%5Cn%5Ctb%20%3D%20cgi.escape%28b%29%5Cn%5Cthtml%20%3D%20diff%28a%2C%20b%2C%20%27%3Cdel%3E%27%2C%20%27%3C%2Fdel%3E%27%2C%20%27%3Cins%3E%27%2C%20%27%3C%2Fins%3E%27%29%5Cn%5Ctworkflow.set_output%28html%29%5Cnelse%3A%5Cn%5Ctcritic_markup%20%3D%20diff%28a%2C%20b%2C%20%27%7B--%27%2C%20%27--%7D%27%2C%20%27%7B%2B%2B%27%2C%20%27%2B%2B%7D%27%29%5Cn%5Ctworkflow.set_output%28critic_markup%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%5D%2C%20%22name%22%3A%20%22Custom%20Actions%20Pack%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone10%2C6%22%2C%20%22systemVersion%22%3A%20%2213.1.3%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "This is a collection of several unrelated custom actions.", "title": "Custom Actions Pack"}, {"url": "http://editorial-app.appspot.com/workflow/5816713257943040/ja9d58z15Ds", "workflow_data": {"username": "", "description": "Shows the iOS share sheet with the selected text as input. If nothing is selected, the entire document is shared. In a Markdown document, the text can optionally be converted to HTML first.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:syntax-mode"}, "type": "advancedText"}, "expression2": {"text": "markdown", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"button1Value": {"text": "[[html]]", "tokenRanges": {}, "type": "advancedText"}, "button3Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button2Value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "Share Document Text...", "button3Title": "", "button2Title": "Use Plain Text", "button1Title": "Convert to HTML", "message": {"text": "Do you want to convert this Markdown document to HTML for sharing?", "tokenRanges": {}, "type": "advancedText"}, "showCancelButton": true}, "class": "WorkflowActionShowAlert"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "[[html]]", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"tables": true, "autolinks": true, "smartypants": true, "strikethrough": true, "footnotes": true, "metadata": false, "superscript": true}, "class": "WorkflowActionConvertMarkdown"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\"/></head>\n<body>\n?\n</body>\n</html>", "tokenRanges": {"{67, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionShowShareSheet"}], "name": "Share...", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone11,8", "systemVersion": "13.1.3"}, "type": "wkflw", "public": true, "icon": "minicons-icons-navigation-log-out-2.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Shows%20the%20iOS%20share%20sheet%20with%20the%20selected%20text%20as%20input.%20If%20nothing%20is%20selected%2C%20the%20entire%20document%20is%20shared.%20In%20a%20Markdown%20document%2C%20the%20text%20can%20optionally%20be%20converted%20to%20HTML%20first.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Asyntax-mode%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22markdown%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22button1Value%22%3A%20%7B%22text%22%3A%20%22%5B%5Bhtml%5D%5D%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button3Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button2Value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Share%20Document%20Text...%22%2C%20%22button3Title%22%3A%20%22%22%2C%20%22button2Title%22%3A%20%22Use%20Plain%20Text%22%2C%20%22button1Title%22%3A%20%22Convert%20to%20HTML%22%2C%20%22message%22%3A%20%7B%22text%22%3A%20%22Do%20you%20want%20to%20convert%20this%20Markdown%20document%20to%20HTML%20for%20sharing%3F%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22showCancelButton%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionShowAlert%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%5B%5Bhtml%5D%5D%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22tables%22%3A%20true%2C%20%22autolinks%22%3A%20true%2C%20%22smartypants%22%3A%20true%2C%20%22strikethrough%22%3A%20true%2C%20%22footnotes%22%3A%20true%2C%20%22metadata%22%3A%20false%2C%20%22superscript%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionConvertMarkdown%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3C%21DOCTYPE%20html%3E%5Cn%3Chtml%3E%5Cn%3Chead%3E%3Cmeta%20charset%3D%5C%22utf-8%5C%22%2F%3E%3C%2Fhead%3E%5Cn%3Cbody%3E%5Cn%3F%5Cn%3C%2Fbody%3E%5Cn%3C%2Fhtml%3E%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B67%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionShowShareSheet%22%7D%5D%2C%20%22name%22%3A%20%22Share...%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone11%2C8%22%2C%20%22systemVersion%22%3A%20%2213.1.3%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-navigation-log-out-2.png%22%7D", "description": "Shows the iOS share sheet with the selected text as input. If nothing is selected, the entire document is shared. In a Markdown document, the text can optionally be converted to HTML first.", "title": "Share..."}, {"url": "http://editorial-app.appspot.com/workflow/5785200948674560/MkRjKC7U-bY", "workflow_data": {"username": "luis", "description": "", "actions": [{"customTitle": "", "parameters": {"content": {"text": "este es una prueba ", "tokenRanges": {}, "type": "advancedText"}, "open": true, "filename": {"text": "archivo ", "tokenRanges": {}, "type": "advancedText"}}, "pauseWithoutShowingParameters": false, "colorLabel": 1, "class": "WorkflowActionCreateNewDocument", "pauseBeforeRunning": false}], "name": "My Workflow 2", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad8,1", "systemVersion": "13.1.3"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22luis%22%2C%20%22description%22%3A%20%22%22%2C%20%22actions%22%3A%20%5B%7B%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22content%22%3A%20%7B%22text%22%3A%20%22este%20es%20una%20prueba%20%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22open%22%3A%20true%2C%20%22filename%22%3A%20%7B%22text%22%3A%20%22archivo%20%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%201%2C%20%22class%22%3A%20%22WorkflowActionCreateNewDocument%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%5D%2C%20%22name%22%3A%20%22My%20Workflow%202%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad8%2C1%22%2C%20%22systemVersion%22%3A%20%2213.1.3%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "", "title": "My Workflow 2"}, {"url": "http://editorial-app.appspot.com/workflow/5849803632148480/WZK4wcp5OFs", "workflow_data": {"username": "", "description": "Workflow for transferring files from Working Copy to Editorial and back again.\n\nWhen called with input, it will pick the filename from the first line and write the other lines into this file, which lets Working Copy create a new file with predefined content. The filename contains a unique identifier for remembering where it belongs. To avoid overwriting files in Editorial by mistake, the previous contents of files are put in WorkingCopy.bak\n\nWhen this workflow is called without any input the contents of the current file is written back to Working Copy.\n\nChange askcommit variable to 0 if you just want to save and not be asked to commit.\n\nTo install a new version of this workflow delete or rename this one and perform Edit in Editorial from Working Copy.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "all", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "all"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "key", "value": {"text": "4ADYHVSW", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "askcommit", "value": {"text": "1", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "path", "value": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:filename"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:file-extension"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "path", "value": {"text": "?.?", "tokenRanges": {"{0, 1}": "%editor:filename", "{2, 1}": "%editor:file-extension"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"revealBrowserAutomatically": true, "URL:__URL_ESCAPE__": 1, "URL": {"text": "working-copy://x-callback-url/write/?key=?&askcommit=?&path=?&text=?", "tokenRanges": {"{53, 1}": "askcommit", "{67, 1}": "Input", "{60, 1}": "path", "{41, 1}": "key"}, "type": "advancedText"}, "openIn": 1, "tabOption": 0, "waitUntilLoaded": false}, "class": "WorkflowActionOpenURL"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"showHUD": false, "HUDTitle": ""}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"regex": {"text": "(.*)\\n", "tokenRanges": {}, "type": "advancedText"}, "matchGroup": "1", "searchTypeOption": 0}, "class": "WorkflowActionMatchRegularExpression"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "filename", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "all"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 1, "find": {"text": "?\n", "tokenRanges": {"{0, 1}": "filename"}, "type": "advancedText"}, "replace": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "text", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": false, "ifNotExists": 0, "filename": "%var:filename"}, "class": "WorkflowActionGetFileContents"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": false, "text": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "ifNotExists": 0, "filename": "WorkingCopy.bak"}, "class": "WorkflowActionSetFileContents"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"duration": 2, "HUDText": {"text": "Previous content of ? put in WorkingCopy.bak", "tokenRanges": {"{20, 1}": "filename"}, "type": "advancedText"}, "icon": 0}, "class": "WorkflowActionShowHUD"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": false, "text": {"text": "?", "tokenRanges": {"{0, 1}": "text"}, "type": "advancedText"}, "ifNotExists": 0, "filename": "%var:filename"}, "class": "WorkflowActionSetFileContents"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": false, "filename": "%var:filename"}, "class": "WorkflowActionOpenDocument"}], "name": "Working Copy", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad7,1", "systemVersion": "13.1.2"}, "type": "wkflw", "public": true, "icon": "minicons-social-github_alt.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Workflow%20for%20transferring%20files%20from%20Working%20Copy%20to%20Editorial%20and%20back%20again.%5Cn%5CnWhen%20called%20with%20input%2C%20it%20will%20pick%20the%20filename%20from%20the%20first%20line%20and%20write%20the%20other%20lines%20into%20this%20file%2C%20which%20lets%20Working%20Copy%20create%20a%20new%20file%20with%20predefined%20content.%20The%20filename%20contains%20a%20unique%20identifier%20for%20remembering%20where%20it%20belongs.%20To%20avoid%20overwriting%20files%20in%20Editorial%20by%20mistake%2C%20the%20previous%20contents%20of%20files%20are%20put%20in%20WorkingCopy.bak%5Cn%5CnWhen%20this%20workflow%20is%20called%20without%20any%20input%20the%20contents%20of%20the%20current%20file%20is%20written%20back%20to%20Working%20Copy.%5Cn%5CnChange%20askcommit%20variable%20to%200%20if%20you%20just%20want%20to%20save%20and%20not%20be%20asked%20to%20commit.%5Cn%5CnTo%20install%20a%20new%20version%20of%20this%20workflow%20delete%20or%20rename%20this%20one%20and%20perform%20Edit%20in%20Editorial%20from%20Working%20Copy.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22all%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22all%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22key%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%224ADYHVSW%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22askcommit%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22path%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Afilename%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Afile-extension%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22path%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F.%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Afilename%22%2C%20%22%7B2%2C%201%7D%22%3A%20%22%25editor%3Afile-extension%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22revealBrowserAutomatically%22%3A%20true%2C%20%22URL%3A__URL_ESCAPE__%22%3A%201%2C%20%22URL%22%3A%20%7B%22text%22%3A%20%22working-copy%3A%2F%2Fx-callback-url%2Fwrite%2F%3Fkey%3D%3F%26askcommit%3D%3F%26path%3D%3F%26text%3D%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B53%2C%201%7D%22%3A%20%22askcommit%22%2C%20%22%7B67%2C%201%7D%22%3A%20%22Input%22%2C%20%22%7B60%2C%201%7D%22%3A%20%22path%22%2C%20%22%7B41%2C%201%7D%22%3A%20%22key%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22openIn%22%3A%201%2C%20%22tabOption%22%3A%200%2C%20%22waitUntilLoaded%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20false%2C%20%22HUDTitle%22%3A%20%22%22%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22regex%22%3A%20%7B%22text%22%3A%20%22%28.%2A%29%5C%5Cn%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22matchGroup%22%3A%20%221%22%2C%20%22searchTypeOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionMatchRegularExpression%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22filename%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22all%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%201%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%3F%5Cn%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22filename%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22text%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20false%2C%20%22ifNotExists%22%3A%200%2C%20%22filename%22%3A%20%22%25var%3Afilename%22%7D%2C%20%22class%22%3A%20%22WorkflowActionGetFileContents%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20false%2C%20%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ifNotExists%22%3A%200%2C%20%22filename%22%3A%20%22WorkingCopy.bak%22%7D%2C%20%22class%22%3A%20%22WorkflowActionSetFileContents%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22duration%22%3A%202%2C%20%22HUDText%22%3A%20%7B%22text%22%3A%20%22Previous%20content%20of%20%3F%20put%20in%20WorkingCopy.bak%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B20%2C%201%7D%22%3A%20%22filename%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22icon%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionShowHUD%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20false%2C%20%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22text%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ifNotExists%22%3A%200%2C%20%22filename%22%3A%20%22%25var%3Afilename%22%7D%2C%20%22class%22%3A%20%22WorkflowActionSetFileContents%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20false%2C%20%22filename%22%3A%20%22%25var%3Afilename%22%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenDocument%22%7D%5D%2C%20%22name%22%3A%20%22Working%20Copy%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad7%2C1%22%2C%20%22systemVersion%22%3A%20%2213.1.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-social-github_alt.png%22%7D", "description": "Workflow for transferring files from Working Copy to Editorial and back again.\n\nWhen called with input, it will pick the filename from the first line and write the other lines into this file, which lets Working Copy create a new file with predefined content. The filename contains a unique identifier for remembering where it belongs. To avoid overwriting files in Editorial by mistake, the previous contents of files are put in WorkingCopy.bak\n\nWhen this workflow is called without any input the contents of the current file is written back to Working Copy.\n\nChange askcommit variable to 0 if you just want to save and not be asked to commit.\n\nTo install a new version of this workflow delete or rename this one and perform Edit in Editorial from Working Copy.", "title": "Working Copy"}, {"url": "http://editorial-app.appspot.com/workflow/5784176531865600/nBYhCAVpGds", "workflow_data": {"username": "AK", "description": "This is a TaskPaper workflow to automatically complete a task, entering today\u2019s date as the date of completion, and duplicate the completed task as an incomplete task at the end of the list.\n\nIt is intended for those following some of Mark Forster\u2019s time management systems.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"numberOfSteps": {"text": "1", "tokenRanges": {}, "type": "advancedText"}, "direction": 0, "unit": 1}, "class": "WorkflowActionMoveCaret"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"numberOfSteps": {"text": "1", "tokenRanges": {}, "type": "advancedText"}, "direction": 1, "unit": 1}, "class": "WorkflowActionExtendSelection"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionSetClipboard"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"numberOfSteps": {"text": "1", "tokenRanges": {}, "type": "advancedText"}, "direction": 1, "unit": 1}, "class": "WorkflowActionMoveCaret"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": " @done(?-?-?)", "tokenRanges": {"{11, 1}": "%date:dd", "{9, 1}": "%date:MM", "{7, 1}": "%date:yyyy"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"numberOfSteps": {"text": "1", "tokenRanges": {}, "type": "advancedText"}, "direction": 1, "unit": 0}, "class": "WorkflowActionMoveCaret"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "\n?", "tokenRanges": {"{1, 1}": "Clipboard"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}], "name": "Complete and Duplicate at End", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone8,1", "systemVersion": "12.4.1"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22AK%22%2C%20%22description%22%3A%20%22This%20is%20a%20TaskPaper%20workflow%20to%20automatically%20complete%20a%20task%2C%20entering%20today%5Cu2019s%20date%20as%20the%20date%20of%20completion%2C%20and%20duplicate%20the%20completed%20task%20as%20an%20incomplete%20task%20at%20the%20end%20of%20the%20list.%5Cn%5CnIt%20is%20intended%20for%20those%20following%20some%20of%20Mark%20Forster%5Cu2019s%20time%20management%20systems.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22numberOfSteps%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22direction%22%3A%200%2C%20%22unit%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionMoveCaret%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22numberOfSteps%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22direction%22%3A%201%2C%20%22unit%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionExtendSelection%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionSetClipboard%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22numberOfSteps%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22direction%22%3A%201%2C%20%22unit%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionMoveCaret%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%20%40done%28%3F-%3F-%3F%29%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B11%2C%201%7D%22%3A%20%22%25date%3Add%22%2C%20%22%7B9%2C%201%7D%22%3A%20%22%25date%3AMM%22%2C%20%22%7B7%2C%201%7D%22%3A%20%22%25date%3Ayyyy%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22numberOfSteps%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22direction%22%3A%201%2C%20%22unit%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionMoveCaret%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%5Cn%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B1%2C%201%7D%22%3A%20%22Clipboard%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%5D%2C%20%22name%22%3A%20%22Complete%20and%20Duplicate%20at%20End%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone8%2C1%22%2C%20%22systemVersion%22%3A%20%2212.4.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "This is a TaskPaper workflow to automatically complete a task, entering today\u2019s date as the date of completion, and duplicate the completed task as an incomplete task at the end of the list.\n\nIt is intended for those following some of Mark Forster\u2019s time management systems.", "title": "Complete and Duplicate at End"}, {"url": "http://editorial-app.appspot.com/workflow/5829805807239168/DuuynmYhExg", "workflow_data": {"username": "angel", "description": "This is a custom UI for Editorial which will present a fully featured FTP client in a popup window over the editor.\n\nAfter downloading you will need to tap the Info button next to the workflow, go to the Edit Workflow page, tap on the action block to expand it, and fill in your FTP login credentials in the variables below. Once you've done that just run it from the workflow menu and you should be set.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "FTP UI", "parameters": {"76A5A84D-0561-4834-856C-545D188ABC42": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "17F9FFEF-24E7-4B85-80AF-E6FFD48F26E9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "12CB7DEE-EEC1-4FCB-97BF-BBB95A56A03B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "17DDDC80-EB5C-4A4A-BE33-F29B1EA496A1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3DD56DC4-7B69-49DC-8A3B-2DB7A851AC30": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "D74B99FF-2F76-4624-9C02-A0E1785348A5": "", "F953659E-E15A-4FE6-82B4-1BB1CE613B3E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "DBA7A162-8790-4615-A5C1-EFF8EB870E0B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "350C4857-3A55-4278-A792-F144FA8B92F1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "D95E75B5-2181-465B-A147-20D14D1B88A7": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "7B2C7297-7737-47B0-8548-2F6579D63B3A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "AF803B87-F589-4DDF-8D61-888339533174": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "74EE867C-63BF-42F5-8F85-2AD1663D9528": "172.16.1.48", "E03DEE1B-0607-4EBE-9F82-434D690A3588": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8FA2F3A3-A33F-4E29-B492-31CA733496EC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9B35529B-8F25-4F88-A9B4-781FB250B846": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"placeholder": "/", "type": "basicText", "key": "D74B99FF-2F76-4624-9C02-A0E1785348A5", "title": "Initial_Path"}, {"placeholder": "ftp.example.com", "keyboardType": 3, "type": "basicText", "key": "74EE867C-63BF-42F5-8F85-2AD1663D9528", "title": "FTP_Server"}, {"placeholder": "guyot@unapologetic.io", "keyboardType": 7, "type": "basicText", "key": "B42E2195-685F-4022-B61E-14A19BDACD7D", "title": "FTP_Username"}, {"placeholder": "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022", "type": "basicText", "key": "FCF40D27-4DB7-4121-97F6-F968A900E92E", "title": "FTP_Password"}], "B8C377DB-C007-491E-9B69-9967410CC875": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "FCF40D27-4DB7-4121-97F6-F968A900E92E": "B2esaL1a", "6E695F21-0664-4FC9-920E-12821330B610": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "17E340BF-6CF0-45D7-AA81-F135B91DE224": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "0FBCC4E3-9F73-4A4A-8857-766400E58E37": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9C3FFE2C-6C49-46C9-BD53-E5AAAE2BD8CA": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "6A2FC1A6-979E-4125-87D1-52EB38FC4527": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "ABBDEFCC-F896-4F7A-B35F-5023B651DD88": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "98F26812-BFCB-4DC1-8FC4-E7282BCAF39A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C8D3ACB2-86C1-479E-979E-666D5FE5BB97": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9E029915-8290-426B-9B8E-326654FA13DC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "0B2A14F2-513A-4FEC-B3FB-204BDFA18B47": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "AD8FDF1C-B8D2-48EB-A547-37B910262AAB": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F2C3515D-1C29-423D-99C0-95B6FB4887DC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "95FA6C87-6EB6-4562-B4B0-38C99BF57114": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3A9BD136-9079-44AD-89C5-53D329731D83": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "1C7EAC87-52E9-42C6-A8C7-18AB70F3FD23": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "B42E2195-685F-4022-B61E-14A19BDACD7D": "angel_augusto", "6C12A397-2296-483B-BE29-87C6F9D8013B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "867B865E-787D-45E1-B3BF-64412F9D6FA4": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "6CC50A85-8999-47B5-B830-88C48A0443AB": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "BE54AC05-8D78-4F95-822A-AC4907F58791": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "2D8A39CF-8976-4772-A439-9A46FA9C79D3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "2B5E2C3D-F83E-4B48-B316-FFC6DC26E26A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "DBD9CAA1-1A12-4ABE-A9C7-EBBF0D77357E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "CF4A2FE6-4960-4F51-BAE9-3218272C1C6E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "25171F4E-EB9B-47E7-9902-E3ED071C0362": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8913248B-FE4C-4839-BD1E-22533BA6586B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9D387E48-805E-46E4-83A9-30876058FD42": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "90D8071E-9FC5-4FFA-94E6-0BC3006E4236": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "77021432-36A0-48A7-8A82-9C4609E71B23": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "68AE2162-AF92-4CE6-B5E5-A99BA2D7CFB9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "FC89D8BA-5448-455D-BBAC-21F1F0775A66": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E34AD0C6-2E7C-46DF-8E5C-A61D619E4063": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C4ACD630-2532-48C6-88DE-EA95FB7FA074": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C57929EE-43A1-4384-BF54-95AF57E3552A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "010A0730-7B55-419F-AD63-86DAE22BCFF3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "93D9F4AF-C4DB-4E00-A32E-52AE27A1E174": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "BE013931-6B92-45BB-A3F9-5747D2BD1587": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "BEA876CA-3C94-415F-B229-B5DAC3A68DD7": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "1E06CA8B-C928-4F60-8418-D04B6D3E0AA3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "0FE68B9D-5A5D-4746-94A6-E183EEC712E1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E6FC01C2-5EB7-4867-B73C-FA4A657FE032": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "#coding: utf-8\nimport workflow\nimport ui\nimport console\nimport editor\nimport time\nimport clipboard\nimport photos\nfrom PIL import Image\nfrom io import BytesIO\nimport webbrowser\nfrom ftplib import FTP\n\n# Get the custom parameters as a dictionary (titles are keys):\nparams = workflow.get_parameters()\n# Get the action's input (a string):\naction_in = workflow.get_input()\n\n##############################\n##### FTP Protocol Class #####\n##############################\n\nclass FTP_Instance:\n\tdef __init__(self):\n\t\tself.initial_path = params['Initial_Path']\n\t\tself.ftp = FTP(params['FTP_Server'])\n\t\tself.ftp.login(params['FTP_Username'], params['FTP_Password'])\n\t\tself.ftp.cwd(self.initial_path)\n\n\tdef open_file(self, filename, path):\n\t\tself.ftp.cwd(path)\n\t\ttemp = open('temp', \"wb\")\n\t\tself.ftp.retrbinary('RETR ' + filename, temp.write)\n\t\ttemp.close()\n\t\tread = open('temp', 'r')\n\t\tfile_contents = read.read()\n\t\tread.close()\n\t\treturn file_contents\n\n\tdef check_file_exists(self, filename, path):\n\t\texisting_files = self.ftp.nlst(path)\n\t\treturn filename in existing_files\n\t\t\n\tdef mkd(self, path):\n\t\tchecked_path = ''\n\t\tdirectories = path[1:].split('/')\n\t\tself.ftp.cwd(self.initial_path)\n\t\tfor i in range(len(directories)):\n\t\t\tcurrent_dir = self.ftp.nlst(self.initial_path + checked_path)\n\t\t\tif directories[i] in current_dir:\n\t\t\t\tchecked_path += '/' + directories[i]\n\t\t\t\tself.ftp.cwd(self.initial_path + checked_path)\n\t\t\telse:\n\t\t\t\tchecked_path += '/' + directories[i]\n\t\t\t\tself.ftp.mkd(self.initial_path + checked_path)\n\t\t\t\tself.ftp.cwd(self.initial_path + checked_path)\n\t\t\n\tdef overwrite_file(self, filename, text, path):\n\t\tself.ftp.cwd(path)\n\t\tfile = open('temp', 'w')\n\t\tfile.write(text)\n\t\tfile.close()\n\t\tfile = open('temp', 'r')\n\t\tself.ftp.cwd(path)\n\t\tself.ftp.storbinary('STOR ' + filename, file)\n\t\tif text != self.open_file(filename,path):\n\t\t\tconsole.hud_alert('File Overwrite Failed', 'error', 5.0)\n\t\telse:\n\t\t\tconsole.hud_alert('File Overwritten', 'success', 5.0)\n\t\tfile.close()\n\t\n\tdef upload_image(self, imagename, path):\n\t\timage = photos.pick_image()\n\t\tbuffer = BytesIO()\n\t\timage.save(buffer, 'PNG')\n\t\tbuffer.seek(0)\n\t\tself.ftp.cwd(path)\n\t\tself.ftp.storbinary('STOR ' + imagename, buffer)\n\t\n\tdef create_and_upload_file(self, filename, text, path):\n\t\tfile = open('temp', 'w')\n\t\tfile.write(text)\n\t\tfile.close()\n\t\tfile = open('temp', 'r')\n\t\tself.upload_file(file, filename, path)\n\t\tfile.close()\n\n\tdef upload_file(self, file, filename, path):\n\t\tif path != '':\n\t\t\tself.mkd(path)\n\t\tself.ftp.cwd(path)\n\t\tself.ftp.storbinary('STOR ' + filename, file)\n\n\tdef print_directory(self, path):\n\t\tprint self.ftp.nlst(path)\n\t\t\n\tdef duplicate_file(self, filename, path):\n\t\ti = 1\n\t\tfind_extension = filename.split('.')\n\t\tnew_filename = ''\n\t\tfor n in range(len(find_extension)-1):\n\t\t\tnew_filename += find_extension[n] + '.'\n\t\tnew_filename = new_filename[:-1]\n\t\tcheck_filename = new_filename + '-' + str(i) + '.' + find_extension[n+1]\n\t\tfile_contents = self.open_file(filename, path)\n\t\twhile self.check_file_exists(check_filename, path):\n\t\t\ti += 1\n\t\t\tcheck_filename = new_filename + '-' + str(i) + '.' + find_extension[n+1]\n\t\tself.create_and_upload_file(check_filename, file_contents, path)\n\t\t\n\tdef duplicate_folder(self, foldername, path):\n\t\ti = 1\n\t\tnew_foldername = foldername + '-' + str(i)\n\t\twhile self.check_file_exists(new_foldername, path):\n\t\t\ti += 1\n\t\t\tnew_foldername = foldername + '-' + str(i)\n\t\tself.ftp.mkd(path + '/' + new_foldername)\n\t\t# Get directory to duplicate as dictionary with keys marking items as files or folders\n\t\tdir_items = ftp.directory_with_types(path + '/' + foldername)\n\t\tfor item in dir_items:\n\t\t\tif dir_items[item]['type'] == 'file':\n\t\t\t\tfile_contents = self.open_file(dir_items[item]['title'], path + '/' + foldername)\n\t\t\t\tself.create_and_upload_file(dir_items[item]['title'], file_contents, path + '/' + new_foldername)\n\t\t\telse:\n\t\t\t\tif dir_items[item]['title'][:1] != '.':\n\t\t\t\t\tself.ftp.mkd(path + '/' + new_foldername + '/' + dir_items[item]['title'])\n\t\t\t\t\titems_in_folder = self.ftp.nlst(path + '/' + foldername + '/' + dir_items[item]['title'])\n\t\t\t\t\titems_to_duplicate = False\n\t\t\t\t\tfor folderitem in items_in_folder:\n\t\t\t\t\t\tif folderitem[:1] != '.':\n\t\t\t\t\t\t\titems_to_duplicate = True\n\t\t\t\t\tif items_to_duplicate == True:\n\t\t\t\t\t\tself.duplicate_folder_helper(dir_items[item]['title'], path + '/' + foldername, path + '/' + new_foldername)\n\t# Helper action\n\tdef duplicate_folder_helper(self, foldername, from_path, to_path):\n\t\t# Get directory to duplicate as dictionary with keys marking items as files or folders\n\t\tdir_items = ftp.directory_with_types(from_path + '/' + foldername)\n\t\tfor item in dir_items:\n\t\t\tif dir_items[item]['type'] == 'file':\n\t\t\t\tfile_contents = self.open_file(dir_items[item]['title'], from_path + '/' + foldername)\n\t\t\t\tself.create_and_upload_file(dir_items[item]['title'], file_contents, to_path + '/' + foldername)\n\t\t\telse:\n\t\t\t\tif dir_items[item]['title'][:1] != '.':\n\t\t\t\t\tself.ftp.mkd(to_path + '/' + foldername + '/' + dir_items[item]['title'])\n\t\t\t\t\titems_in_folder = self.ftp.nlst(from_path + '/' + foldername + '/' + dir_items[item]['title'])\n\t\t\t\t\titems_to_duplicate = False\n\t\t\t\t\tfor folderitem in items_in_folder:\n\t\t\t\t\t\tif folderitem[:1] != '.':\n\t\t\t\t\t\t\titems_to_duplicate = True\n\t\t\t\t\tif items_to_duplicate == True:\n\t\t\t\t\t\tself.duplicate_folder_helper(dir_items[item]['title'], from_path + '/' + foldername, to_path + '/' + foldername)\n\n\tdef move_file(self, filename, from_path, to_path):\n\t\tif not self.check_file_exists(filename, to_path):\n\t\t\tfile_contents = self.open_file(filename, from_path)\n\t\t\tself.create_and_upload_file(filename, file_contents, to_path)\n\t\t\tif self.check_file_exists(filename, to_path):\n\t\t\t\tif self.open_file(filename, to_path) == file_contents:\n\t\t\t\t\tself.ftp.cwd(from_path)\n\t\t\t\t\tself.ftp.delete(filename)\n\t\telse:\n\t\t\tconsole.hud_alert('File with same name already exists in this location', 'error', 5.0)\n\t\t\t\n\tdef move_folder(self, foldername, from_path, to_path):\n\t\tall_files_moved = True\n\t\tif not self.check_file_exists(foldername, to_path):\n\t\t\tself.ftp.mkd(to_path + '/' + foldername)\n\t\t\t# Get directory of folder contents to be moved\n\t\t\tdir_items = ftp.directory_with_types(from_path + '/' + foldername)\n\t\t\tfor item in dir_items:\n\t\t\t\tif dir_items[item]['type'] == 'file':\n\t\t\t\t\tfile_contents = self.open_file(dir_items[item]['title'], from_path + '/' + foldername)\n\t\t\t\t\tself.create_and_upload_file(dir_items[item]['title'], file_contents, to_path + '/' + foldername)\n\t\t\t\t\tif not self.check_file_exists(dir_items[item]['title'], to_path + '/' + foldername):\n\t\t\t\t\t\tall_files_moved = False\n\t\t\t\t\t\tprint 'false'\n\t\t\t\telse:\n\t\t\t\t\tif dir_items[item]['title'][:1] != '.':\n\t\t\t\t\t\tself.ftp.mkd(to_path + '/' + foldername + '/' + dir_items[item]['title'])\n\t\t\t\t\t\titems_in_folder = self.ftp.nlst(from_path + '/' + foldername + '/' + dir_items[item]['title'])\n\t\t\t\t\t\titems_to_duplicate = False\n\t\t\t\t\t\tfor folderitem in items_in_folder:\n\t\t\t\t\t\t\tif folderitem[:1] != '.':\n\t\t\t\t\t\t\t\titems_to_duplicate = True\n\t\t\t\t\t\tif items_to_duplicate == True:\n\t\t\t\t\t\t\tself.duplicate_folder_helper(dir_items[item]['title'], from_path + '/' + foldername, to_path + '/' + foldername)\n\t\telse:\n\t\t\tconsole.hud_alert('Folder of same name already exists in this location', 'error', 5.0)\n\t\t\treturn\n\t\tif all_files_moved:\n\t\t\tself.delete_folder(foldername, from_path)\n\t\telse:\n\t\t\tconsole.hud_alert('All files may not have been moved', 'error')\n\t\t\t\t\t\t\t\n\tdef delete_folder(self, foldername, path):\n\t\tftp.delete_folder_helper(path + '/' + foldername)\n\t\tftp.ftp.cwd(path)\n\t\tftp.ftp.rmd(foldername)\n\t# Helper action\n\tdef delete_folder_helper(self, path):\n\t\tself.ftp.cwd(path)\n\t\tdir_items = ftp.directory_with_types(path)\n\t\tfor item in dir_items:\n\t\t\tif dir_items[item]['type'] == 'file':\n\t\t\t\tself.ftp.delete(dir_items[item]['title'])\n\t\t\telse:\n\t\t\t\tif dir_items[item]['title'][:1] != '.':\n\t\t\t\t\titems_in_folder = self.ftp.nlst(path + '/' + dir_items[item]['title'])\n\t\t\t\t\titems_inside = False\n\t\t\t\t\tfor folderitem in items_in_folder:\n\t\t\t\t\t\tif folderitem[:1] != '.':\n\t\t\t\t\t\t\titems_inside = True\n\t\t\t\t\tif items_inside == True:\n\t\t\t\t\t\tsave_path = path\n\t\t\t\t\t\tself.delete_folder_helper(path + '/' + dir_items[item]['title'])\n\t\t\t\t\t\tself.ftp.cwd(save_path)\n\t\t\t\t\t\tself.ftp.rmd(dir_items[item]['title'])\n\t\t\t\t\telse:\n\t\t\t\t\t\tself.ftp.rmd(dir_items[item]['title'])\n\t\t\n\tdef directory_with_types(self, path):\n\t\ti = 0\n\t\tdirectory_list = []\n\t\tdirectory_dict = {}\n\t\ttitle_list = self.ftp.nlst(path)\n\t\tself.ftp.cwd(path)\n\t\tself.ftp.retrlines('LIST', callback=directory_list.append)\n\t\tfor item in directory_list:\n\t\t\tif i < len(title_list):\n\t\t\t\tlisting = {}\n\t\t\t\tif item.upper().startswith('D'):\n\t\t\t\t\tlisting['type'] = 'folder'\n\t\t\t\telse:\n\t\t\t\t\tlisting['type'] = 'file'\n\t\t\t\tdirectory_dict[i] = listing\n\t\t\t\tdirectory_dict[i]['title'] = title_list[i]\n\t\t\t\ti += 1\n\t\treturn directory_dict\n\n\tdef quit(self):\n\t\tself.ftp.quit()\n\n##########################\n##### FTP UI Client ######\n##########################\n\n# Initiate FTP Connection\nftp = FTP_Instance()\n\n# Build directory to be displayed in rows of file manager\ndef build_directory(path=params['Initial_Path']):\n\t# Get directory as dictionary with keys marking items as files or folders\n\tlist_items = ftp.directory_with_types(path)\n\tsource_list = []\n\t# Pull data from list_items and prepare a list of dictionaries readable by ListDataSource element\n\tfor item in list_items:\n\t\td = {}\n\t\td['title'] = list_items[item]['title']\n\t\t# For files, do not include accessory action icons in their rows, but mark them with file icons\n\t\tif list_items[item]['type'] == 'file':\n\t\t\td['accessory_type'] = 'none'\n\t\t\td['image'] = 'ionicons-document-24'\n\t\t# For folders, add chevron arrow accessory action icons to rows and mark with folder icons\n\t\telse:\n\t\t\td['accessory_type'] = 'detail_disclosure_button'\n\t\t\td['image'] = 'ionicons-folder-24'\n\t\t# Add each prepared dictionary to overall list of dictionaries\n\t\tif d['title'][:1] != '.':\n\t\t\tsource_list.append(d)\n\t# Return list of dictionaries with all files and folders properly flagged\t\n\treturn source_list\n\n###############\n# Back Button #\n###############\n# Action to be run when user taps the back button in the top left of the UI\ndef back_button_tapped(sender):\n\tif not sender.superview.secondary_actions.hidden:\n\t\tsender.superview.secondary_actions.hidden = True\n\t\tsender.superview.secondary_button1.enabled = True\n\t\tsender.superview.file_label.editable = False\n\t\tbutton_actions_closed = False\n\telif not sender.superview.button_actions.hidden:\n\t\tsender.superview.plus_button.enabled = True\n\t\tsender.superview.button_actions.hidden = True\n\t\tsender.superview.file_label.editable = False\n\t\tbutton_actions_closed = False\n\t\tif sender.superview.path_field.text == '/':\n\t\t\tsender.superview.back_button.enabled = False\n\telse:\n\t\tbutton_actions_closed = True\n\t\n\tif button_actions_closed == True:\n\t\t# Get current path\n\t\tpath = sender.superview.path_field.text\n\t\t# Split the path at slashes\n\t\tpath = path.split('/')\n\t\tnew_path = ''\n\t\t# Put the path back together with slashes, but leave the final path item removed (path is back one level)\n\t\tfor i in range(len(path) - 1):\n\t\t\tnew_path += path[i] + '/'\n\t\t# Remove trailing backslash, unless you are in the top level directory '/'\n\t\tif len(new_path) > 1:\n\t\t\tnew_path = new_path[:-1]\n\t\t# Build the directory for the new path and send it to the ListDataSource element\n\t\tsender.superview.list_source.items = build_directory(new_path)\n\t\t# Adjust the title TextField to display the new path\n\t\tsender.superview.path_field.text = ftp.ftp.pwd()\n\t\t# If the new path leaves you at the top level directory, disable the back button\n\t\tif new_path == '/':\n\t\t\tsender.enabled = False\n\n###############\n# Plus Button #\n###############\ndef plus_button_tapped(sender):\n\tsender.superview.back_button.enabled = True\n\tsender.superview.button1.title = 'Upload File in Editor'\n\tsender.superview.button1.action = upload_file_in_editor\n\tsender.superview.button2.title = 'New folder'\n\tsender.superview.button2.action = new_folder\n\tsender.superview.button3.title = 'Upload Image'\n\tsender.superview.button3.action = upload_image_button_tapped\n\tsender.superview.button4.title = 'Run Custom Code'\n\tsender.superview.button5.title = 'Upload Dropbox File'\n\tsender.superview.button6.title = 'Upload Local File'\n\tsender.superview.button3.hidden = False\n\tsender.superview.button4.hidden = True\n\tsender.superview.button5.hidden = True\n\tsender.superview.button6.hidden = True\n\tsender.superview.button7.hidden = True\n\tsender.superview.button8.hidden = True\n\tsender.superview.file_icon.image = ui.Image.named('ionicons-plus-24')\n\tsender.superview.file_label.text = sender.superview.path_field.text\n\tsender.superview.button_actions.hidden = False\n\tsender.superview.plus_button.enabled = False\n\tsender.superview.close_button.center = (sender.superview.width/2,155)\n\tif sender.superview.height < 500:\n\t\tsender.superview.scroll_buttons.content_size = (sender.superview.width, 207)\n\tsender.superview.scroll_buttons.content_offset = (0,0)\n\t\n###############\n# Home Button #\n###############\ndef home_button_tapped(sender):\n\tif not sender.superview.secondary_actions.hidden:\n\t\tsender.superview.secondary_actions.hidden = True\n\t\tsender.superview.secondary_button1.enabled = True\n\t\tsender.superview.file_label.editable = False\n\tif not sender.superview.button_actions.hidden:\n\t\tsender.superview.plus_button.enabled = True\n\t\tsender.superview.button_actions.hidden = True\n\t\tsender.superview.file_label.editable = False\n\tsender.superview.back_button.enabled = True\n\tsender.superview.list_source.items = build_directory()\n\t# Adjust the title TextField to display the new path\n\tsender.superview.path_field.text = ftp.ftp.pwd()\n\n##########################\n##### Button Actions #####\n##########################\ndef close_button_tapped(sender):\n\tsender.superview.superview.superview.plus_button.enabled = True\n\tsender.superview.superview.hidden = True\n\ndef cancel_button_tapped(sender):\n\tsender.superview.hidden = True\n\tsender.superview.superview.superview.secondary_button1.enabled = True\n\tsender.superview.superview.superview.file_label.editable = False\n\t\ndef copy_path_button_tapped(sender):\n\tclipboard.set(sender.superview.superview.superview.path_field.text + '/' + sender.superview.superview.superview.file_label.text)\n\tconsole.hud_alert('Copied', 'success')\n\n#######################\n# Plus Button Actions #\n#######################\ndef upload_file_in_editor(sender):\n\tsender.superview.superview.superview.secondary_button1.enabled = False\n\tsender.superview.superview.superview.file_label.delegate = file_label_delegate(sender.superview.superview.superview.file_label, 'upload')\n\tsender.superview.superview.superview.file_label.editable = True\n\tsender.superview.superview.superview.file_label.name = sender.superview.superview.superview.file_label.text\n\tsender.superview.superview.superview.file_label.begin_editing()\n\tsender.superview.superview.superview.secondary_button1.title = 'Upload File'\n\tsender.superview.superview.superview.secondary_button1.action = upload_file\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary action\ndef upload_file(sender):\n\tfilename = sender.superview.superview.superview.file_label.text\n\ttext = editor.get_text()\n\tpath = sender.superview.superview.superview.path_field.text\n\tif not ftp.check_file_exists(sender.superview.superview.superview.file_label.text,sender.superview.superview.superview.path_field.text):\n\t\tftp.create_and_upload_file(filename, text, path)\n\t\tsender.superview.superview.superview.list_source.items = build_directory(sender.superview.superview.superview.path_field.text)\n\t\tsender.superview.hidden = True\n\t\tsender.superview.superview.hidden = True\n\t\tsender.superview.superview.superview.plus_button.enabled = True\n\t\tsender.superview.superview.superview.file_label.text = sender.superview.superview.superview.file_label.name\n\t\tsender.superview.superview.superview.secondary_button1.enabled = True\n\t\tsender.superview.superview.superview.file_label.editable = False\n\telse:\n\t\tconsole.hud_alert('File \\'' + sender.superview.superview.superview.file_label.text + '\\' Already Exists')\n\t\ndef new_folder(sender):\n\tsender.superview.superview.superview.secondary_button1.enabled = False\n\tsender.superview.superview.superview.file_label.delegate = file_label_delegate(sender.superview.superview.superview.file_label, 'new_folder')\n\tsender.superview.superview.superview.file_label.editable = True\n\tsender.superview.superview.superview.file_label.name = sender.superview.superview.superview.file_label.text\n\tsender.superview.superview.superview.file_label.begin_editing()\n\tsender.superview.superview.superview.secondary_button1.title = 'Create Folder'\n\tsender.superview.superview.superview.secondary_button1.action = create_folder\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary action\ndef create_folder(sender):\n\tfoldername = sender.superview.superview.superview.file_label.text\n\tpath = sender.superview.superview.superview.path_field.text + '/' + foldername\n\tif not ftp.check_file_exists(sender.superview.superview.superview.file_label.text,sender.superview.superview.superview.path_field.text):\n\t\tftp.ftp.mkd(path)\n\t\tsender.superview.superview.superview.list_source.items = build_directory(sender.superview.superview.superview.path_field.text)\n\t\tsender.superview.hidden = True\n\t\tsender.superview.superview.hidden = True\n\t\tsender.superview.superview.superview.plus_button.enabled = True\n\t\tsender.superview.superview.superview.file_label.text = sender.superview.superview.superview.file_label.name\n\t\tsender.superview.superview.superview.secondary_button1.enabled = True\n\t\tsender.superview.superview.superview.file_label.editable = False\n\telse:\n\t\tconsole.hud_alert('Folder \\'' + sender.superview.superview.superview.file_label.text + '\\' Already Exists')\n\t\t\ndef upload_image_button_tapped(sender):\n\tsender.superview.superview.superview.secondary_button1.enabled = False\n\tsender.superview.superview.superview.file_label.delegate = file_label_delegate(sender.superview.superview.superview.file_label, 'new_image')\n\tsender.superview.superview.superview.file_label.editable = True\n\tsender.superview.superview.superview.file_label.name = sender.superview.superview.superview.file_label.text\n\tsender.superview.superview.superview.file_label.begin_editing()\n\tsender.superview.superview.superview.secondary_button1.title = 'Show Image Picker'\n\tsender.superview.superview.superview.secondary_button1.action = upload_image\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary action\n@ui.in_background\ndef upload_image(sender):\n\timagename = sender.superview.superview.superview.file_label.text\n\tpath = sender.superview.superview.superview.path_field.text\n\tif not ftp.check_file_exists(sender.superview.superview.superview.file_label.text,sender.superview.superview.superview.path_field.text):\n\t\tftp.upload_image(imagename, path)\n\t\tsender.superview.superview.superview.list_source.items = build_directory(sender.superview.superview.superview.path_field.text)\n\t\tsender.superview.hidden = True\n\t\tsender.superview.superview.hidden = True\n\t\tsender.superview.superview.superview.plus_button.enabled = True\n\t\tsender.superview.superview.superview.file_label.text = sender.superview.superview.superview.file_label.name\n\t\tsender.superview.superview.superview.secondary_button1.enabled = True\n\t\tsender.superview.superview.superview.file_label.editable = False\n\telse:\n\t\tconsole.hud_alert('File \\'' + sender.superview.superview.superview.file_label.text + '\\' Already Exists')\n\n################\n# File Actions #\n################\ndef open_button_tapped(sender):\n\tfile_contents = ftp.open_file(sender.superview.superview.superview.file_label.text, sender.superview.superview.superview.path_field.text)\n\teditor.set_file_contents(sender.superview.superview.superview.file_label.text, file_contents, 'local')\n\twebbrowser.open('editorial://open/' + sender.superview.superview.superview.file_label.text + '?root=local')\n\tsender.superview.superview.superview.close()\n\ndef overwrite_button_tapped(sender):\n\tsender.superview.superview.superview.secondary_button1.title = 'Overwrite With File in Editor'\n\tsender.superview.superview.superview.secondary_button1.action = overwrite_with_file_in_editor\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary action\ndef overwrite_with_file_in_editor(sender):\n\tfilename = sender.superview.superview.superview.file_label.text\n\ttext = editor.get_text()\n\tpath = sender.superview.superview.superview.path_field.text\n\tftp.overwrite_file(filename, text, path)\n\tsender.superview.superview.superview.plus_button.enabled = True\n\tsender.superview.hidden = True\n\tsender.superview.superview.hidden = True\n\t\ndef rename_file_button_tapped(sender):\n\tsender.superview.superview.superview.secondary_button1.enabled = False\n\tsender.superview.superview.superview.file_label.delegate = file_label_delegate(sender.superview.superview.superview.file_label, 'file')\n\tsender.superview.superview.superview.file_label.editable = True\n\tsender.superview.superview.superview.file_label.name = sender.superview.superview.superview.file_label.text\n\tsender.superview.superview.superview.file_label.begin_editing()\n\tsender.superview.superview.superview.secondary_button1.title = 'Rename File'\n\tsender.superview.superview.superview.secondary_button1.action = rename_file\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary Action\ndef rename_file(sender):\n\tif not ftp.check_file_exists(sender.superview.superview.superview.file_label.text,sender.superview.superview.superview.path_field.text):\n\t\tftp.ftp.rename(sender.superview.superview.superview.file_label.name, sender.superview.superview.superview.file_label.text)\n\t\tsender.superview.superview.superview.list_source.items = build_directory(sender.superview.superview.superview.path_field.text)\n\t\tsender.superview.superview.superview.plus_button.enabled = True\n\t\tsender.superview.superview.superview.file_label.editable = False\n\t\tsender.superview.hidden = True\n\t\tsender.superview.superview.hidden = True\n\telse:\n\t\tconsole.hud_alert('File \\'' + sender.superview.superview.superview.file_label.text + '\\' Already Exists')\n\t\ndef delete_file_button_tapped(sender):\n\tsender.superview.superview.superview.secondary_button1.title = 'Permanently Delete File?'\n\tsender.superview.superview.superview.secondary_button1.action = permanently_delete_file\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary action\ndef permanently_delete_file(sender):\n\tftp.ftp.delete(sender.superview.superview.superview.file_label.text)\n\tsender.superview.superview.superview.list_source.items = build_directory(sender.superview.superview.superview.path_field.text)\n\tsender.superview.superview.superview.plus_button.enabled = True\n\tsender.superview.hidden = True\n\tsender.superview.superview.hidden = True\n\t\ndef move_file_button_tapped(sender):\n\tsender.superview.superview.superview.back_button.enabled = False\n\tsender.superview.superview.superview.home_button.enabled = False\n\tsender.superview.superview.superview.move_path_field.text = ftp.ftp.pwd()\n\tsender.superview.superview.superview.move_list_source.items = build_move_directory(sender.superview.superview.superview.move_path_field.text)\n\tsender.superview.superview.superview.select_folder.title = 'Move to \\'' + sender.superview.superview.superview.move_path_field.text + '\\''\n\tsender.superview.superview.superview.move_table_view.hidden = False\n\tsender.superview.superview.superview.move_back_button.hidden = False\n\tsender.superview.superview.superview.move_cancel_button.hidden = False\n\tsender.superview.superview.superview.select_folder.hidden = False\n\tsender.superview.superview.superview.select_folder.action = file_select_folder_button_tapped\n\tsender.superview.superview.superview.move_label_background.hidden = False\n\tsender.superview.superview.superview.table_view.hidden = True\n# Secondary action\ndef file_select_folder_button_tapped(sender):\n\tftp.move_file(sender.superview.superview.file_label.text, sender.superview.superview.path_field.text, sender.superview.superview.move_path_field.text)\n\tsender.superview.superview.list_source.items = build_directory(sender.superview.superview.path_field.text)\n\tsender.hidden = True\n\tsender.superview.hidden = True\n\tsender.superview.superview.plus_button.enabled = True\n\tsender.superview.superview.secondary_button1.enabled = True\n\tsender.superview.superview.file_label.editable = False\n\tsender.superview.superview.move_table_view.hidden = True\n\tsender.superview.superview.move_back_button.hidden = True\n\tsender.superview.superview.move_cancel_button.hidden = True\n\tsender.superview.superview.move_label_background.hidden = True\n\tsender.superview.superview.table_view.hidden = False\n\tsender.superview.superview.back_button.enabled = True\n\tsender.superview.superview.home_button.enabled = True\n\t\ndef duplicate_file_button_tapped(sender):\n\tsender.superview.superview.superview.secondary_button1.title = 'Duplicate File?'\n\tsender.superview.superview.superview.secondary_button1.action = duplicate_file\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary action\ndef duplicate_file(sender):\n\tftp.duplicate_file(sender.superview.superview.superview.file_label.text, sender.superview.superview.superview.path_field.text)\n\tsender.superview.superview.superview.list_source.items = build_directory(sender.superview.superview.superview.path_field.text)\n\tsender.superview.superview.superview.plus_button.enabled = True\n\tsender.superview.hidden = True\n\tsender.superview.superview.hidden = True\n\t\n##################\n# Folder Actions #\n##################\ndef rename_folder_button_tapped(sender):\n\tsender.superview.superview.superview.secondary_button1.enabled = False\n\tsender.superview.superview.superview.file_label.delegate = file_label_delegate(sender.superview.superview.superview.file_label, 'folder')\n\tsender.superview.superview.superview.file_label.editable = True\n\tsender.superview.superview.superview.file_label.name = sender.superview.superview.superview.file_label.text\n\tsender.superview.superview.superview.file_label.begin_editing()\n\tsender.superview.superview.superview.secondary_button1.title = 'Rename Folder'\n\tsender.superview.superview.superview.secondary_button1.action = rename_folder\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary action\ndef rename_folder(sender):\n\tif not ftp.check_file_exists(sender.superview.superview.superview.file_label.text,sender.superview.superview.superview.path_field.text):\n\t\tftp.ftp.rename(sender.superview.superview.superview.file_label.name, sender.superview.superview.superview.file_label.text)\n\t\tsender.superview.superview.superview.list_source.items = build_directory(sender.superview.superview.superview.path_field.text)\n\t\tsender.superview.superview.superview.plus_button.enabled = True\n\t\tsender.superview.superview.superview.file_label.editable = False\n\t\tsender.superview.hidden = True\n\t\tsender.superview.superview.hidden = True\n\telse:\n\t\tconsole.hud_alert('Folder \\'' + sender.superview.superview.superview.file_label.text + '\\' Already Exists')\n\ndef delete_folder_button_tapped(sender):\n\tsender.superview.superview.superview.secondary_button1.title = 'Delete Folder & Contents?'\n\tsender.superview.superview.superview.secondary_button1.action = permanently_delete_folder\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary action\ndef permanently_delete_folder(sender):\n\tftp.delete_folder(sender.superview.superview.superview.file_label.text, sender.superview.superview.superview.path_field.text)\n\tsender.superview.superview.superview.list_source.items = build_directory(sender.superview.superview.superview.path_field.text)\n\tsender.superview.superview.superview.plus_button.enabled = True\n\tsender.superview.hidden = True\n\tsender.superview.superview.hidden = True\n\ndef move_folder_button_tapped(sender):\n\tsender.superview.superview.superview.back_button.enabled = False\n\tsender.superview.superview.superview.home_button.enabled = False\n\tsender.superview.superview.superview.move_path_field.text = ftp.ftp.pwd()\n\tsender.superview.superview.superview.move_list_source.items = build_move_directory(sender.superview.superview.superview.move_path_field.text)\n\tsender.superview.superview.superview.select_folder.title = 'Move to \\'' + sender.superview.superview.superview.move_path_field.text + '\\''\n\tsender.superview.superview.superview.move_table_view.hidden = False\n\tsender.superview.superview.superview.move_back_button.hidden = False\n\tsender.superview.superview.superview.move_cancel_button.hidden = False\n\tsender.superview.superview.superview.select_folder.hidden = False\n\tsender.superview.superview.superview.select_folder.action = folder_select_folder_button_tapped\n\tsender.superview.superview.superview.move_label_background.hidden = False\n\tsender.superview.superview.superview.table_view.hidden = True\n# Secondary action\ndef folder_select_folder_button_tapped(sender):\n\tftp.move_folder(sender.superview.superview.file_label.text, sender.superview.superview.path_field.text, sender.superview.superview.move_path_field.text)\n\tsender.superview.superview.list_source.items = build_directory(sender.superview.superview.path_field.text)\n\tsender.hidden = True\n\tsender.superview.hidden = True\n\tsender.superview.superview.plus_button.enabled = True\n\tsender.superview.superview.secondary_button1.enabled = True\n\tsender.superview.superview.file_label.editable = False\n\tsender.superview.superview.move_table_view.hidden = True\n\tsender.superview.superview.move_back_button.hidden = True\n\tsender.superview.superview.move_cancel_button.hidden = True\n\tsender.superview.superview.move_label_background.hidden = True\n\tsender.superview.superview.table_view.hidden = False\n\tsender.superview.superview.back_button.enabled = True\n\tsender.superview.superview.home_button.enabled = True\n\t\ndef duplicate_folder_button_tapped(sender):\n\tsender.superview.superview.superview.secondary_button1.title = 'Duplicate Folder & Contents?'\n\tsender.superview.superview.superview.secondary_button1.action = duplicate_entire_folder\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary action\ndef duplicate_entire_folder(sender):\n\tftp.duplicate_folder(sender.superview.superview.superview.file_label.text, sender.superview.superview.superview.path_field.text)\n\tsender.superview.superview.superview.list_source.items = build_directory(sender.superview.superview.superview.path_field.text)\n\tsender.superview.superview.superview.plus_button.enabled = True\n\tsender.superview.hidden = True\n\tsender.superview.superview.hidden = True\n\t\n#####################\n##### Delegates #####\n#####################\n\n#######################\n# Navigation Delegate #\n#######################\nclass navigation_delegate():\n\tdef tableview_did_select(self, tableview, section, row):\n\t\t# Save title of tapped row\n\t\tselection = tableview.data_source.items[row]['title']\n\t\t# If selected item is a folder...\n\t\tif tableview.data_source.items[row]['accessory_type'] != 'none':\n\t\t\t# Build the new directory\n\t\t\tif tableview.superview.path_field.text[-1:] != '/':\n\t\t\t\ttableview.superview.list_source.items = build_directory(tableview.superview.path_field.text + '/' + selection)\n\t\t\telse:\n\t\t\t\ttableview.superview.list_source.items = build_directory(tableview.superview.path_field.text + selection)\n\t\t\t# Set text field to display new path\n\t\t\ttableview.superview.path_field.text = ftp.ftp.pwd()\n\t\t\t# Enable the back button if you are no longer on the top level directory\n\t\t\tif tableview.superview.path_field.text != '/':\n\t\t\t\ttableview.superview.back_button.enabled = True\n\t\t# If selected item is a file...\n\t\telse:\n\t\t\ttableview.superview.button1.title = 'Download & Open'\n\t\t\ttableview.superview.button1.action = open_button_tapped\n\t\t\ttableview.superview.button2.title = 'Overwrite File'\n\t\t\ttableview.superview.button2.action = overwrite_button_tapped\n\t\t\ttableview.superview.button3.title = 'Rename File'\n\t\t\ttableview.superview.button3.action = rename_file_button_tapped\n\t\t\ttableview.superview.button4.title = 'Delete File'\n\t\t\ttableview.superview.button4.action = delete_file_button_tapped\n\t\t\ttableview.superview.button5.title = 'Move File'\n\t\t\ttableview.superview.button5.action = move_file_button_tapped\n\t\t\ttableview.superview.button6.title = 'Duplicate File'\n\t\t\ttableview.superview.button6.action = duplicate_file_button_tapped\n\t\t\ttableview.superview.button7.title = 'Copy File Path'\n\t\t\ttableview.superview.button7.action = copy_path_button_tapped\n\t\t\ttableview.superview.button3.hidden = False\n\t\t\ttableview.superview.button4.hidden = False\n\t\t\ttableview.superview.button5.hidden = False\n\t\t\ttableview.superview.button6.hidden = False\n\t\t\ttableview.superview.button7.hidden = False\n\t\t\ttableview.superview.button8.hidden = True\n\t\t\ttableview.superview.file_icon.image = ui.Image.named('ionicons-document-24')\n\t\t\ttableview.superview.file_label.text = selection\n\t\t\ttableview.superview.button_actions.hidden = False\n\t\t\ttableview.superview.plus_button.enabled = False\n\t\t\ttableview.superview.back_button.enabled = True\n\t\t\ttableview.superview.close_button.center = (tableview.superview.width/2,272)\n\t\t\tif tableview.superview.height < 500:\n\t\t\t\ttableview.superview.scroll_buttons.content_size = (tableview.superview.width, 325)\n\t\t\ttableview.superview.scroll_buttons.content_offset = (0,0)\n\t\n\tdef tableview_accessory_button_tapped(self, tableview, section, row):\n\t\t# Save title of tapped row\n\t\tselection = tableview.data_source.items[row]['title']\n\t\ttableview.superview.button1.title = 'Rename Folder'\n\t\ttableview.superview.button1.action = rename_folder_button_tapped\n\t\ttableview.superview.button2.title = 'Delete Folder'\n\t\ttableview.superview.button2.action = delete_folder_button_tapped\n\t\ttableview.superview.button3.title = 'Move Folder'\n\t\ttableview.superview.button3.action = move_folder_button_tapped\n\t\ttableview.superview.button4.title = 'Duplicate Folder'\n\t\ttableview.superview.button4.action = duplicate_folder_button_tapped\n\t\ttableview.superview.button5.title = 'Copy Folder Path'\n\t\ttableview.superview.button5.action = copy_path_button_tapped\n\t\ttableview.superview.button3.hidden = False\n\t\ttableview.superview.button4.hidden = False\n\t\ttableview.superview.button5.hidden = False\n\t\ttableview.superview.button6.hidden = True\n\t\ttableview.superview.button7.hidden = True\n\t\ttableview.superview.button8.hidden = True\n\t\ttableview.superview.file_icon.image = ui.Image.named('ionicons-folder-24')\n\t\ttableview.superview.file_label.text = selection\n\t\ttableview.superview.button_actions.hidden = False\n\t\ttableview.superview.plus_button.enabled = False\n\t\ttableview.superview.back_button.enabled = True\n\t\ttableview.superview.close_button.center = (tableview.superview.width/2,213)\n\t\tif tableview.superview.height < 500:\n\t\t\ttableview.superview.scroll_buttons.content_size = (tableview.superview.width, 266)\n\t\ttableview.superview.scroll_buttons.content_offset = (0,0)\n\n#######################\n# Path Field Delegate #\n#######################\nclass path_navigation_delegate():\n\tdef textfield_should_begin_editing(self,textfield):\n\t\treturn True\n\t# When user hits return after editing TextField...\n\tdef textfield_should_return(self,textfield):\n\t\t# Get the current path from the text field\n\t\tself.path = textfield.text\n\t\t# Test to see if the new path is a valid directory...\n\t\ttry:\n\t\t\t# If it is, build that directory and load it into the ListDataSource element\n\t\t\ttextfield.superview.list_source.items = build_directory(self.path)\n\t\texcept:\n\t\t\t# If it is not a valid path, alert the user and reset the path in the TextField to what it was previously\n\t\t\tconsole.hud_alert('Directory \\'' + self.path + '\\' Does Not Seem To Exist', 'error', 5.0)\n\t\t\ttextfield.text = ftp.ftp.pwd()\n\t\ttextfield.end_editing()\n\t# If keyboard is dismissed without return being hit, reset the path in the TextField to the current directory\n\tdef textfield_did_end_editing(self,textfield):\n\t\ttextfield.text = ftp.ftp.pwd()\n\t\t\n#######################\n# File Label Delegate #\n#######################\nclass file_label_delegate():\n\tdef __init__(self, textview, type):\n\t\tself.type = type\n\tdef textview_should_begin_editing(self, textview):\n\t\treturn True\n\tdef textview_did_begin_editing(self, textview):\n\t\tif self.type == 'upload':\n\t\t\ttextview.text = 'filename.txt'\n\t\telif self.type == 'new_folder':\n\t\t\ttextview.text = 'foldername'\n\t\telif self.type == 'new_image':\n\t\t\ttextview.text = 'imagename.png'\n\tdef textview_did_end_editing(self, textview):\n\t\ttextview.text = textview.name\n\tdef textview_should_change(self, textview, range, replacement):\n\t\treturn True\n\tdef textview_did_change(self, textview):\n\t\tif self.type == 'upload' or self.type == 'new_folder' or self.type == 'new_image':\n\t\t\ttextview.superview.superview.secondary_button1.enabled = True\n\t\tif '\\n' in textview.text:\n\t\t\ttextview.text = textview.text.rstrip('\\n')\n\t\t\ttextview.end_editing()\n\t\t\tif textview.superview.superview.secondary_button1.enabled == True:\n\t\t\t\tif self.type == 'folder':\n\t\t\t\t\trename_folder(textview.superview.superview.secondary_button1)\n\t\t\t\telif self.type == 'file':\n\t\t\t\t\trename_file(textview.superview.superview.secondary_button1)\n\t\t\t\telif self.type == 'upload':\n\t\t\t\t\tupload_file_in_editor(textview.superview.superview.secondary_button1)\n\t\t\t\telif self.type == 'new_folder':\n\t\t\t\t\tcreate_folder(textview.superview.superview.secondary_button1)\n\t\t\t\telif self.type == 'new_image':\n\t\t\t\t\tupload_image(textview.superview.superview.secondary_button1)\n\t\tif self.type != 'upload' and self.type != 'new_folder' and self.type != 'new_image':\n\t\t\tif textview.text != textview.name:\n\t\t\t\ttextview.superview.superview.secondary_button1.enabled = True\n\t\t\telse:\n\t\t\t\ttextview.superview.superview.secondary_button1.enabled = False\n\tdef textview_did_change_selection(self, textview):\n\t\tpass\n\t\t\n#######################\n# Move File Delegate #\n#######################\nclass move_delegate():\n\tdef tableview_did_select(self, tableview, section, row):\n\t\t# Save title of tapped row\n\t\tselection = tableview.data_source.items[row]['title']\n\t\t# If selected item is a folder...\n\t\tif tableview.data_source.items[row]['accessory_type'] != 'none':\n\t\t\t# Build the new directory\n\t\t\tif tableview.superview.superview.move_path_field.text[-1:] != '/':\n\t\t\t\ttableview.superview.superview.move_list_source.items = build_move_directory(tableview.superview.superview.move_path_field.text + '/' + selection)\n\t\t\telse:\n\t\t\t\ttableview.superview.superview.move_list_source.items = build_directory(tableview.superview.superview.move_path_field.text + selection)\n\t\t\t# Set text field to display new path\n\t\t\ttableview.superview.superview.move_path_field.text = ftp.ftp.pwd()\n\t\t\ttableview.superview.superview.select_folder.title =  'Move to \\'' + tableview.superview.superview.move_path_field.text + '\\''\n\t\t\t# Enable the back button if you are no longer on the top level directory\n\t\t\tif tableview.superview.superview.move_path_field.text != '/':\n\t\t\t\ttableview.superview.superview.move_back_button.enabled = True\n\n# Build directory to be displayed in rows of TableView for moving files\ndef build_move_directory(path=params['Initial_Path']):\n\t# Get directory as dictionary with keys marking items as files or folders\n\tlist_items = ftp.directory_with_types(path)\n\tsource_list = []\n\t# Pull data from list_items and prepare a list of dictionaries readable by ListDataSource element\n\tfor item in list_items:\n\t\td = {}\n\t\td['title'] = list_items[item]['title']\n\t\t# For files, do not include accessory action icons in their rows, but mark them with file icons\n\t\tif list_items[item]['type'] == 'file':\n\t\t\td['accessory_type'] = 'none'\n\t\t\td['image'] = 'ionicons-document-24'\n\t\t# For folders, add chevron arrow accessory action icons to rows and mark with folder icons\n\t\telse:\n\t\t\td['accessory_type'] = 'disclosure_indicator'\n\t\t\td['image'] = 'ionicons-folder-24'\n\t\t# Add each prepared dictionary to overall list of dictionaries\n\t\tif d['title'][:1] != '.':\n\t\t\tsource_list.append(d)\n\t# Return list of dictionaries with all files and folders properly flagged\t\n\treturn source_list\n\t\n#####################################\n##### Move File/Folder Buttons ######\n#####################################\ndef move_back_button_tapped(sender):\n\t# Get current path\n\tpath = sender.superview.superview.move_path_field.text\n\t# Split the path at slashes\n\tpath = path.split('/')\n\tnew_path = ''\n\t# Put the path back together with slashes, but leave the final path item removed (path is back one level)\n\tfor i in range(len(path) - 1):\n\t\tnew_path += path[i] + '/'\n\t# Remove trailing backslash, unless you are in the top level directory '/'\n\tif len(new_path) > 1:\n\t\tnew_path = new_path[:-1]\n\t# Build the directory for the new path and send it to the ListDataSource element\n\tsender.superview.superview.move_list_source.items = build_move_directory(new_path)\n\t# Adjust the title TextField to display the new path\n\tsender.superview.superview.move_path_field.text = ftp.ftp.pwd()\n\tsender.superview.superview.select_folder.title = 'Move to \\'' + sender.superview.superview.move_path_field.text + '\\''\n\t# If the new path leaves you at the top level directory, disable the back button\n\tif new_path == '/':\n\t\tsender.enabled = False\n\t\t\ndef move_cancel_button_tapped(sender):\n\tsender.superview.hidden = True\n\tsender.superview.superview.move_table_view.hidden = True\n\tsender.superview.superview.move_back_button.hidden = True\n\tsender.hidden = True\n\tsender.superview.superview.select_folder.hidden = True\n\tsender.superview.superview.move_label_background.hidden = True\n\tsender.superview.superview.table_view.hidden = False\n\tsender.superview.superview.plus_button.enabled = True\n\tsender.superview.superview.back_button.enabled = True\n\tsender.superview.superview.home_button.enabled = True\n\tsender.superview.superview.secondary_button1.enabled = True\n\tsender.superview.superview.file_label.editable = False\n\n##########################\n##### User Interface #####\n##########################\nclass FTP_Client(ui.View):\n\tdef __init__(self,data_source):\n\t\t# Set up the view\n\t\tself.bounds = (0,0,320,500)\n\t\tself.background_color = '#F6F6F6'\n\t\tself.name = 'FTP_Client'\n\t\t# Set up the loading icon\n\t\tself.loading_view = ui.ActivityIndicator()\n\t\tself.loading_view.center = (self.width / 2, self.height / 2)\n\t\tself.loading_view.style = ui.ACTIVITY_INDICATOR_STYLE_GRAY\n\t\tself.add_subview(self.loading_view)\n\t\t# Set up the TextField where the path will be displayed\n\t\tself.path_field = ui.TextField()\n\t\tself.path_field.placeholder = '/'\n\t\tself.path_field.text = ftp.ftp.pwd()\n\t\tself.path_field.frame = (15,60,self.width-30,32) # Define the field's coordinates and measurments\n\t\tself.path_field.alignment = ui.ALIGN_CENTER\n\t\tself.path_field.delegate = path_navigation_delegate() # Set up the TextField's delegate\n\t\tself.add_subview(self.path_field)\n\t\tnav_background = ui.Label()\n\t\tnav_background.frame = (47,0,self.width,50)\n\t\tnav_background.background_color = '#f0f0f0'\n\t\tnav_background.center = (self.width/2,25)\n\t\tnav_background.alignment = ui.ALIGN_CENTER\n\t\tnav_background.send_to_back()\n\t\tself.add_subview(nav_background)\n\t\ttitle = ui.Label()\n\t\ttitle.text = params['FTP_Server'] # Text to display on title bar\n\t\ttitle.frame = (47,0,self.width-128,50)\n\t\ttitle.background_color = '#f0f0f0'\n\t\ttitle.center = (self.width/2+15,25)\n\t\ttitle.alignment = ui.ALIGN_CENTER\n\t\ttitle.send_to_back()\n\t\tself.add_subview(title)\n\t\t# Set up the back button\n\t\tself.back_button = ui.Button()\n\t\tself.back_button.image = ui.Image.named('ionicons-chevron-left-24')\n\t\tself.back_button.frame = (10,10,32,32)\n\t\tself.back_button.font = ('<system>', 25)\n\t\tself.back_button.action = back_button_tapped # Set the back button's action to back_button_tapped function\n\t\tself.add_subview(self.back_button)\n\t\t# Set up the plus button\n\t\tself.plus_button = ui.Button()\n\t\tself.plus_button.image = ui.Image.named('ionicons-plus-24')\n\t\tself.plus_button.frame = (275,10,32,32)\n\t\tself.plus_button.font = ('<system>', 25)\n\t\tself.plus_button.action = plus_button_tapped # Set the plus button's action to plus_button_tapped function\n\t\tself.add_subview(self.plus_button)\n\t\t# Set up the home button\n\t\tself.home_button = ui.Button()\n\t\tself.home_button.image = ui.Image.named('ionicons-home-24')\n\t\tself.home_button.frame = (45,10,32,32)\n\t\tself.home_button.font = ('<system>', 25)\n\t\tself.home_button.action = home_button_tapped # Set the back button's action to back_button_tapped function\n\t\tself.add_subview(self.home_button)\n\t\t# Set up the data source element for the TableView\n\t\tself.list_source = ui.ListDataSource(items=[])\n\t\tself.list_source.move_enabled = False\n\t\tself.list_source.delete_enabled = False\n\t\tself.list_source.items = data_source # Set data source to the element that will be passed into this class upon initiation\n\t\t# Set up the TableView\n\t\tself.table_view = ui.TableView()\n\t\tself.table_view.row_height = 44\n\t\tself.table_view.delegate = navigation_delegate() # Link the navigation delegate\n\t\tself.table_view.frame = (0,100,self.width, self.height - 100)\n\t\tself.table_view.flex = 'H'\n\t\tself.table_view.data_source = self.list_source # Set the data source to the ListDataSource element\n\t\tself.add_subview(self.table_view)\n\t\t# Set up the view for button actions\n\t\tself.button_actions = ui.View()\n\t\tself.button_actions.bounds = (0,0,320,460)\n\t\tself.button_actions.center = (self.width/2,self.height/2+40)\n\t\tself.button_actions.background_color = '#f0f0f0'\n\t\tself.button_actions.name = 'button_actions'\n\t\tself.button_actions.flex = 'WH'\n\t\tself.button_actions.alpha = 1.0\n\t\tself.button_actions.hidden = True # Hide view until needed\n\t\tself.add_subview(self.button_actions)\n\t\tself.label_background = ui.Label()\n\t\tself.label_background.text = ''\n\t\tself.label_background.frame = (0,0,self.width,50)\n\t\tself.label_background.center = (self.width/2,self.height/8-28)\n\t\tself.label_background.background_color = '#f8f8f8'\n\t\tself.button_actions.add_subview(self.label_background)\n\t\t# Set up the title label to display which file was selected\n\t\tself.file_label = ui.TextView()\n\t\tself.file_label.font = ('<system>', 18)\n\t\tself.file_label.frame = (0,0,self.width-55,45)\n\t\tself.file_label.center = (self.width/2+25,self.height/8-25)\n\t\tself.file_label.background_color = '#f8f8f8'\n\t\tself.file_label.alignment = ui.ALIGN_LEFT\n\t\tself.file_label.editable = False\n\t\tself.button_actions.add_subview(self.file_label)\n\t\tself.file_icon = ui.ImageView()\n\t\tself.file_icon.frame = (0,0,23,23)\n\t\tself.file_icon.center = (30,self.height/8-28)\n\t\tself.button_actions.add_subview(self.file_icon)\n\t\t# Set up scroll view so all buttons can be accessed if keyboard is up\n\t\tself.scroll_buttons = ui.ScrollView()\n\t\tself.scroll_buttons.frame = (0,58,self.width, self.height - 100)\n\t\tself.scroll_buttons.background_color = '#f0f0f0'\n\t\tself.scroll_buttons.flex = 'H'\n\t\tself.scroll_buttons.always_bounce_vertical = True\n\t\tself.scroll_buttons.bounces = True\n\t\tself.scroll_buttons.content_size = (self.width, self.height - 100)\n\t\tself.scroll_buttons.paging_enabled = True\n\t\tself.button_actions.add_subview(self.scroll_buttons)\n\t\t# Set up button1\n\t\tself.button1 = ui.Button()\n\t\tself.button1.frame = (0,15,self.width/2.2,50)\n\t\tself.button1.center = (self.width/4+3,self.height/8-27)\n\t\tself.button1.background_color = '#fff'\n\t\tself.scroll_buttons.add_subview(self.button1)\n\t\t# Set up button2\n\t\tself.button2 = ui.Button()\n\t\tself.button2.frame = (0,15,self.width/2.2,50)\n\t\tself.button2.center = (self.width/2+77,self.height/8-27)\n\t\tself.button2.background_color = '#fff'\n\t\tself.button2.alpha = 1.0\n\t\tself.scroll_buttons.add_subview(self.button2)\n\t\t# Set up button3\n\t\tself.button3 = ui.Button()\n\t\tself.button3.frame = (0,15,self.width/2.2,50)\n\t\tself.button3.center = (self.width/4+3,self.height/8+32)\n\t\tself.button3.background_color = '#fff'\n\t\tself.button3.alpha = 1.0\n\t\tself.scroll_buttons.add_subview(self.button3)\n\t\t# Set up button4\n\t\tself.button4 = ui.Button()\n\t\tself.button4.frame = (0,15,self.width/2.2,50)\n\t\tself.button4.center = (self.width/2+77,self.height/8+32)\n\t\tself.button4.background_color = '#fff'\n\t\tself.button4.alpha = 1.0\n\t\tself.scroll_buttons.add_subview(self.button4)\n\t\t# Set up button5\n\t\tself.button5 = ui.Button()\n\t\tself.button5.frame = (0,15,self.width/2.2,50)\n\t\tself.button5.center = (self.width/4+3,self.height/8+91)\n\t\tself.button5.background_color = '#fff'\n\t\tself.button5.alpha = 1.0\n\t\tself.scroll_buttons.add_subview(self.button5)\n\t\t# Set up button6\n\t\tself.button6 = ui.Button()\n\t\tself.button6.frame = (0,15,self.width/2.2,50)\n\t\tself.button6.center = (self.width/2+77,self.height/8+91)\n\t\tself.button6.background_color = '#fff'\n\t\tself.button6.alpha = 1.0\n\t\tself.scroll_buttons.add_subview(self.button6)\n\t\t# Set up button7\n\t\tself.button7 = ui.Button()\n\t\tself.button7.frame = (0,15,self.width/2.2,50)\n\t\tself.button7.center = (self.width/4+3,self.height/8+150)\n\t\tself.button7.background_color = '#fff'\n\t\tself.button7.alpha = 1.0\n\t\tself.scroll_buttons.add_subview(self.button7)\n\t\t# Set up button8\n\t\tself.button8 = ui.Button()\n\t\tself.button8.frame = (0,15,self.width/2.2,50)\n\t\tself.button8.center = (self.width/2+77,self.height/8+150)\n\t\tself.button8.background_color = '#fff'\n\t\tself.button8.alpha = 1.0\n\t\tself.scroll_buttons.add_subview(self.button8)\n\t\t# Set up the close button to dismiss the button actions view\n\t\tself.close_button = ui.Button()\n\t\tself.close_button.title = 'Close'\n\t\tself.close_button.frame = (0,15,self.width-20,50)\n\t\tself.close_button.center = (self.width/2,self.height/8+210)\n\t\tself.close_button.background_color = '#fff'\n\t\tself.close_button.alpha = 1.0\n\t\tself.close_button.action = close_button_tapped\n\t\tself.scroll_buttons.add_subview(self.close_button)\n\t\t# Set up view for secondary actions\n\t\tself.secondary_actions = ui.View()\n\t\tself.secondary_actions.bounds = (0,0,320,460)\n\t\tself.secondary_actions.center = (self.width/2,self.height/2+40)\n\t\tself.secondary_actions.background_color = '#f0f0f0'\n\t\tself.secondary_actions.name = 'secondary_actions'\n\t\tself.secondary_actions.flex = 'WH'\n\t\tself.secondary_actions.alpha = 1.0\n\t\tself.secondary_actions.hidden = True # Hide view until needed\n\t\tself.button_actions.add_subview(self.secondary_actions)\n\t\t# Set up Secondary button1\n\t\tself.secondary_button1 = ui.Button()\n\t\tself.secondary_button1.frame = (0,15,self.width-21,50)\n\t\tself.secondary_button1.center = (self.width/2,self.height/8-29)\n\t\tself.secondary_button1.background_color = '#fff'\n\t\tself.secondary_button1.alpha = 1.0\n\t\tself.secondary_actions.add_subview(self.secondary_button1)\n\t\t# Set up the cancel button to dismiss the secondary actions view\n\t\tself.cancel_button = ui.Button()\n\t\tself.cancel_button.title = 'Cancel'\n\t\tself.cancel_button.frame = (0,15,self.width-20,50)\n\t\tself.cancel_button.center = (self.width/2,94)\n\t\tself.cancel_button.background_color = '#fff'\n\t\tself.cancel_button.alpha = 1.0\n\t\tself.cancel_button.action = cancel_button_tapped\n\t\tself.secondary_actions.add_subview(self.cancel_button)\n\t\t# Set up the data source element for the TableView for moving files\n\t\tself.move_list_source = ui.ListDataSource(items=[])\n\t\tself.move_list_source.move_enabled = False\n\t\tself.move_list_source.delete_enabled = False\n\t\t# Set up the TableView for Moving Files\n\t\tself.move_table_view = ui.TableView()\n\t\tself.move_table_view.row_height = 44\n\t\tself.move_table_view.delegate = move_delegate() # Link the navigation delegate for moving files\n\t\tself.move_table_view.frame = (0,127,self.width, self.height - 185)\n\t\tself.move_table_view.flex = 'H'\n\t\tself.move_table_view.data_source = self.move_list_source # Set the data source to the ListDataSource element\n\t\tself.move_table_view.hidden = True\n\t\tself.move_table_view.alpha = 1.0\n\t\tself.move_table_view.background_color = '#fff'\n\t\tself.button_actions.add_subview(self.move_table_view)\n\t\tself.move_label_background = ui.Label()\n\t\tself.move_label_background.text = ''\n\t\tself.move_label_background.frame = (0,0,self.width,170)\n\t\tself.move_label_background.center = (self.width/2,self.height/8-28)\n\t\tself.move_label_background.hidden = True\n\t\tself.move_label_background.background_color = '#f0f0f0'\n\t\tself.button_actions.add_subview(self.move_label_background)\n\t\t# Set up the button to select folder to move file into\n\t\tself.select_folder = ui.Button()\n\t\tself.select_folder.frame = (0,0,self.width-20,50)\n\t\tself.select_folder.center = (self.width/2,self.height/8-28)\n\t\tself.select_folder.background_color = '#fff'\n\t\tself.select_folder.hidden = True\n\t\tself.button_actions.add_subview(self.select_folder)\n\t\t# Set up the back button for the move file view\n\t\tself.move_back_button = ui.Button()\n\t\tself.move_back_button.image = ui.Image.named('ionicons-chevron-left-24')\n\t\tself.move_back_button.background_color = '#fff'\n\t\tself.move_back_button.frame = (10,69,50,50)\n\t\tself.move_back_button.font = ('<system>', 25)\n\t\tself.move_back_button.action = move_back_button_tapped # Set the back button's action to move_back_button_tapped function\n\t\tself.move_back_button.hidden = True\n\t\tself.button_actions.add_subview(self.move_back_button)\n\t\t# Set up the cancel button to dismiss the move file view\n\t\tself.move_cancel_button = ui.Button()\n\t\tself.move_cancel_button.title = 'Cancel'\n\t\tself.move_cancel_button.frame = (0,15,self.width-80,50)\n\t\tself.move_cancel_button.center = (self.width/2+30,self.height/8+31)\n\t\tself.move_cancel_button.background_color = '#fff'\n\t\tself.move_cancel_button.alpha = 1.0\n\t\tself.move_cancel_button.action = move_cancel_button_tapped\n\t\tself.move_cancel_button.hidden = True\n\t\tself.button_actions.add_subview(self.move_cancel_button)\n\t\t# Set up the TextField where the current path will be held\n\t\tself.move_path_field = ui.TextField()\n\t\tself.move_path_field.text = ftp.ftp.pwd()\n\t\tself.move_path_field.hidden = True\n\t\tself.button_actions.add_subview(self.move_path_field)\n\n# Build the initial directory and store it to the source_list variable\nsource_list = build_directory()\n\n# Initiate the view and pass it the source_list\nview = FTP_Client(source_list)\n# Present the view in a popover\nview.present(style = 'popover', hide_title_bar = True)\n", "26DF96A7-B364-42B8-93AE-439D0650676A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A9D399AD-1AE7-453D-9F37-9B66FE3DF0A9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "7C719344-C891-4AB0-95AE-A113A91D1248": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "1E45370D-12DA-4162-BE1D-00E57FD826A1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "6BB5C954-DACE-44BC-BAA5-BA386343A159": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "93D7ECD9-8FF4-4ED4-910A-1024DFFA875F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3D76ECEE-8D86-4F1F-B6CE-161124D878F3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "15E08D0D-F62D-4AC0-92EF-A2809B7DFBB6": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F276A4A8-DABC-4867-A241-5D85D5A2F8D4": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9EF136C5-4458-4EC1-8B41-2CEC520138DB": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E4A933E5-76E4-4B94-8996-0AEEF41399E8": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "6A5B2A56-80C7-4E7B-8E2F-EBF2993ED68B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "6D17DF79-ECA4-4EF9-B5D2-1AAB32E34D11": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "DD306F77-489E-4A09-BAAD-01E9D233934E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "ui": "[{\"class\":\"View\",\"attributes\":{\"background_color\":\"RGBA(1.000000,1.000000,1.000000,1.000000)\",\"tint_color\":\"RGBA(0.000000,0.478000,1.000000,1.000000)\",\"enabled\":true,\"border_color\":\"RGBA(0.000000,0.000000,0.000000,1.000000)\",\"flex\":\"\"},\"frame\":\"{{0, 0}, {540, 575}}\",\"nodes\":[{\"class\":\"View\",\"attributes\":{\"name\":\"view1\",\"uuid\":\"691D7635-ED21-47B1-BB0C-D03DF74DFA8B\",\"enabled\":true,\"border_color\":\"RGBA(0.000000,0.000000,0.000000,1.000000)\",\"flex\":\"\"},\"frame\":\"{{162, 279}, {215, 58}}\",\"nodes\":[]},{\"class\":\"Button\",\"attributes\":{\"font_size\":15,\"enabled\":true,\"flex\":\"\",\"font_bold\":false,\"name\":\"button1\",\"uuid\":\"891737B6-0D9F-4C3A-AABF-15D9B73D64AB\",\"border_color\":\"RGBA(0.000000,0.000000,0.000000,1.000000)\",\"title\":\"Download\"},\"frame\":\"{{162, 279}, {107, 58}}\",\"nodes\":[]},{\"class\":\"Button\",\"attributes\":{\"font_size\":15,\"enabled\":true,\"flex\":\"\",\"font_bold\":false,\"name\":\"button2\",\"uuid\":\"93DF31A4-D186-45A9-8180-04EB9C517035\",\"border_color\":\"RGBA(0.000000,0.000000,0.000000,1.000000)\",\"title\":\"Overwrite\"},\"frame\":\"{{270, 279}, {107, 58}}\",\"nodes\":[]}]}]", "68A2A40E-0E92-4737-8FF2-F176B3645CBC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "D4B85DD2-E06A-467A-9137-868147CB5EF5": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E48FCCAE-719D-4713-936F-4217132FB7F9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "BFEAA0EA-62A6-4DA4-976D-493B3F338463": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "07E5006D-CD8C-4383-8BE9-6A8D8F6CCC07": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "AA0729B7-4EA3-4539-98A3-9FA5550C5AF3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}], "name": "FTP_Client", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone9,4", "systemVersion": "13.1.2"}, "type": "wkflw", "public": true, "icon": "minicons-icons-transfer-upload-5.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22angel%22%2C%20%22description%22%3A%20%22This%20is%20a%20custom%20UI%20for%20Editorial%20which%20will%20present%20a%20fully%20featured%20FTP%20client%20in%20a%20popup%20window%20over%20the%20editor.%5Cn%5CnAfter%20downloading%20you%20will%20need%20to%20tap%20the%20Info%20button%20next%20to%20the%20workflow%2C%20go%20to%20the%20Edit%20Workflow%20page%2C%20tap%20on%20the%20action%20block%20to%20expand%20it%2C%20and%20fill%20in%20your%20FTP%20login%20credentials%20in%20the%20variables%20below.%20Once%20you%27ve%20done%20that%20just%20run%20it%20from%20the%20workflow%20menu%20and%20you%20should%20be%20set.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22FTP%20UI%22%2C%20%22parameters%22%3A%20%7B%2276A5A84D-0561-4834-856C-545D188ABC42%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2217F9FFEF-24E7-4B85-80AF-E6FFD48F26E9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2212CB7DEE-EEC1-4FCB-97BF-BBB95A56A03B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2217DDDC80-EB5C-4A4A-BE33-F29B1EA496A1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223DD56DC4-7B69-49DC-8A3B-2DB7A851AC30%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22D74B99FF-2F76-4624-9C02-A0E1785348A5%22%3A%20%22%22%2C%20%22F953659E-E15A-4FE6-82B4-1BB1CE613B3E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22DBA7A162-8790-4615-A5C1-EFF8EB870E0B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22350C4857-3A55-4278-A792-F144FA8B92F1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22D95E75B5-2181-465B-A147-20D14D1B88A7%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%227B2C7297-7737-47B0-8548-2F6579D63B3A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22AF803B87-F589-4DDF-8D61-888339533174%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2274EE867C-63BF-42F5-8F85-2AD1663D9528%22%3A%20%22172.16.1.48%22%2C%20%22E03DEE1B-0607-4EBE-9F82-434D690A3588%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228FA2F3A3-A33F-4E29-B492-31CA733496EC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229B35529B-8F25-4F88-A9B4-781FB250B846%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22placeholder%22%3A%20%22%2F%22%2C%20%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%22D74B99FF-2F76-4624-9C02-A0E1785348A5%22%2C%20%22title%22%3A%20%22Initial_Path%22%7D%2C%20%7B%22placeholder%22%3A%20%22ftp.example.com%22%2C%20%22keyboardType%22%3A%203%2C%20%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%2274EE867C-63BF-42F5-8F85-2AD1663D9528%22%2C%20%22title%22%3A%20%22FTP_Server%22%7D%2C%20%7B%22placeholder%22%3A%20%22guyot%40unapologetic.io%22%2C%20%22keyboardType%22%3A%207%2C%20%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%22B42E2195-685F-4022-B61E-14A19BDACD7D%22%2C%20%22title%22%3A%20%22FTP_Username%22%7D%2C%20%7B%22placeholder%22%3A%20%22%5Cu2022%5Cu2022%5Cu2022%5Cu2022%5Cu2022%5Cu2022%5Cu2022%5Cu2022%5Cu2022%5Cu2022%22%2C%20%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%22FCF40D27-4DB7-4121-97F6-F968A900E92E%22%2C%20%22title%22%3A%20%22FTP_Password%22%7D%5D%2C%20%22B8C377DB-C007-491E-9B69-9967410CC875%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22FCF40D27-4DB7-4121-97F6-F968A900E92E%22%3A%20%22B2esaL1a%22%2C%20%226E695F21-0664-4FC9-920E-12821330B610%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2217E340BF-6CF0-45D7-AA81-F135B91DE224%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%220FBCC4E3-9F73-4A4A-8857-766400E58E37%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229C3FFE2C-6C49-46C9-BD53-E5AAAE2BD8CA%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%226A2FC1A6-979E-4125-87D1-52EB38FC4527%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ABBDEFCC-F896-4F7A-B35F-5023B651DD88%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2298F26812-BFCB-4DC1-8FC4-E7282BCAF39A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C8D3ACB2-86C1-479E-979E-666D5FE5BB97%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229E029915-8290-426B-9B8E-326654FA13DC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%220B2A14F2-513A-4FEC-B3FB-204BDFA18B47%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22AD8FDF1C-B8D2-48EB-A547-37B910262AAB%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F2C3515D-1C29-423D-99C0-95B6FB4887DC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2295FA6C87-6EB6-4562-B4B0-38C99BF57114%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223A9BD136-9079-44AD-89C5-53D329731D83%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%221C7EAC87-52E9-42C6-A8C7-18AB70F3FD23%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22B42E2195-685F-4022-B61E-14A19BDACD7D%22%3A%20%22angel_augusto%22%2C%20%226C12A397-2296-483B-BE29-87C6F9D8013B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22867B865E-787D-45E1-B3BF-64412F9D6FA4%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%226CC50A85-8999-47B5-B830-88C48A0443AB%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22BE54AC05-8D78-4F95-822A-AC4907F58791%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%222D8A39CF-8976-4772-A439-9A46FA9C79D3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%222B5E2C3D-F83E-4B48-B316-FFC6DC26E26A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22DBD9CAA1-1A12-4ABE-A9C7-EBBF0D77357E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22CF4A2FE6-4960-4F51-BAE9-3218272C1C6E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2225171F4E-EB9B-47E7-9902-E3ED071C0362%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228913248B-FE4C-4839-BD1E-22533BA6586B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229D387E48-805E-46E4-83A9-30876058FD42%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2290D8071E-9FC5-4FFA-94E6-0BC3006E4236%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2277021432-36A0-48A7-8A82-9C4609E71B23%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2268AE2162-AF92-4CE6-B5E5-A99BA2D7CFB9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22FC89D8BA-5448-455D-BBAC-21F1F0775A66%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E34AD0C6-2E7C-46DF-8E5C-A61D619E4063%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C4ACD630-2532-48C6-88DE-EA95FB7FA074%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C57929EE-43A1-4384-BF54-95AF57E3552A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22010A0730-7B55-419F-AD63-86DAE22BCFF3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2293D9F4AF-C4DB-4E00-A32E-52AE27A1E174%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22BE013931-6B92-45BB-A3F9-5747D2BD1587%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22BEA876CA-3C94-415F-B229-B5DAC3A68DD7%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%221E06CA8B-C928-4F60-8418-D04B6D3E0AA3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%220FE68B9D-5A5D-4746-94A6-E183EEC712E1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E6FC01C2-5EB7-4867-B73C-FA4A657FE032%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20ui%5Cnimport%20console%5Cnimport%20editor%5Cnimport%20time%5Cnimport%20clipboard%5Cnimport%20photos%5Cnfrom%20PIL%20import%20Image%5Cnfrom%20io%20import%20BytesIO%5Cnimport%20webbrowser%5Cnfrom%20ftplib%20import%20FTP%5Cn%5Cn%23%20Get%20the%20custom%20parameters%20as%20a%20dictionary%20%28titles%20are%20keys%29%3A%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cn%23%20Get%20the%20action%27s%20input%20%28a%20string%29%3A%5Cnaction_in%20%3D%20workflow.get_input%28%29%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%23%23%23%23%20FTP%20Protocol%20Class%20%23%23%23%23%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%5Cnclass%20FTP_Instance%3A%5Cn%5Ctdef%20__init__%28self%29%3A%5Cn%5Ct%5Ctself.initial_path%20%3D%20params%5B%27Initial_Path%27%5D%5Cn%5Ct%5Ctself.ftp%20%3D%20FTP%28params%5B%27FTP_Server%27%5D%29%5Cn%5Ct%5Ctself.ftp.login%28params%5B%27FTP_Username%27%5D%2C%20params%5B%27FTP_Password%27%5D%29%5Cn%5Ct%5Ctself.ftp.cwd%28self.initial_path%29%5Cn%5Cn%5Ctdef%20open_file%28self%2C%20filename%2C%20path%29%3A%5Cn%5Ct%5Ctself.ftp.cwd%28path%29%5Cn%5Ct%5Cttemp%20%3D%20open%28%27temp%27%2C%20%5C%22wb%5C%22%29%5Cn%5Ct%5Ctself.ftp.retrbinary%28%27RETR%20%27%20%2B%20filename%2C%20temp.write%29%5Cn%5Ct%5Cttemp.close%28%29%5Cn%5Ct%5Ctread%20%3D%20open%28%27temp%27%2C%20%27r%27%29%5Cn%5Ct%5Ctfile_contents%20%3D%20read.read%28%29%5Cn%5Ct%5Ctread.close%28%29%5Cn%5Ct%5Ctreturn%20file_contents%5Cn%5Cn%5Ctdef%20check_file_exists%28self%2C%20filename%2C%20path%29%3A%5Cn%5Ct%5Ctexisting_files%20%3D%20self.ftp.nlst%28path%29%5Cn%5Ct%5Ctreturn%20filename%20in%20existing_files%5Cn%5Ct%5Ct%5Cn%5Ctdef%20mkd%28self%2C%20path%29%3A%5Cn%5Ct%5Ctchecked_path%20%3D%20%27%27%5Cn%5Ct%5Ctdirectories%20%3D%20path%5B1%3A%5D.split%28%27%2F%27%29%5Cn%5Ct%5Ctself.ftp.cwd%28self.initial_path%29%5Cn%5Ct%5Ctfor%20i%20in%20range%28len%28directories%29%29%3A%5Cn%5Ct%5Ct%5Ctcurrent_dir%20%3D%20self.ftp.nlst%28self.initial_path%20%2B%20checked_path%29%5Cn%5Ct%5Ct%5Ctif%20directories%5Bi%5D%20in%20current_dir%3A%5Cn%5Ct%5Ct%5Ct%5Ctchecked_path%20%2B%3D%20%27%2F%27%20%2B%20directories%5Bi%5D%5Cn%5Ct%5Ct%5Ct%5Ctself.ftp.cwd%28self.initial_path%20%2B%20checked_path%29%5Cn%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ctchecked_path%20%2B%3D%20%27%2F%27%20%2B%20directories%5Bi%5D%5Cn%5Ct%5Ct%5Ct%5Ctself.ftp.mkd%28self.initial_path%20%2B%20checked_path%29%5Cn%5Ct%5Ct%5Ct%5Ctself.ftp.cwd%28self.initial_path%20%2B%20checked_path%29%5Cn%5Ct%5Ct%5Cn%5Ctdef%20overwrite_file%28self%2C%20filename%2C%20text%2C%20path%29%3A%5Cn%5Ct%5Ctself.ftp.cwd%28path%29%5Cn%5Ct%5Ctfile%20%3D%20open%28%27temp%27%2C%20%27w%27%29%5Cn%5Ct%5Ctfile.write%28text%29%5Cn%5Ct%5Ctfile.close%28%29%5Cn%5Ct%5Ctfile%20%3D%20open%28%27temp%27%2C%20%27r%27%29%5Cn%5Ct%5Ctself.ftp.cwd%28path%29%5Cn%5Ct%5Ctself.ftp.storbinary%28%27STOR%20%27%20%2B%20filename%2C%20file%29%5Cn%5Ct%5Ctif%20text%20%21%3D%20self.open_file%28filename%2Cpath%29%3A%5Cn%5Ct%5Ct%5Ctconsole.hud_alert%28%27File%20Overwrite%20Failed%27%2C%20%27error%27%2C%205.0%29%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctconsole.hud_alert%28%27File%20Overwritten%27%2C%20%27success%27%2C%205.0%29%5Cn%5Ct%5Ctfile.close%28%29%5Cn%5Ct%5Cn%5Ctdef%20upload_image%28self%2C%20imagename%2C%20path%29%3A%5Cn%5Ct%5Ctimage%20%3D%20photos.pick_image%28%29%5Cn%5Ct%5Ctbuffer%20%3D%20BytesIO%28%29%5Cn%5Ct%5Ctimage.save%28buffer%2C%20%27PNG%27%29%5Cn%5Ct%5Ctbuffer.seek%280%29%5Cn%5Ct%5Ctself.ftp.cwd%28path%29%5Cn%5Ct%5Ctself.ftp.storbinary%28%27STOR%20%27%20%2B%20imagename%2C%20buffer%29%5Cn%5Ct%5Cn%5Ctdef%20create_and_upload_file%28self%2C%20filename%2C%20text%2C%20path%29%3A%5Cn%5Ct%5Ctfile%20%3D%20open%28%27temp%27%2C%20%27w%27%29%5Cn%5Ct%5Ctfile.write%28text%29%5Cn%5Ct%5Ctfile.close%28%29%5Cn%5Ct%5Ctfile%20%3D%20open%28%27temp%27%2C%20%27r%27%29%5Cn%5Ct%5Ctself.upload_file%28file%2C%20filename%2C%20path%29%5Cn%5Ct%5Ctfile.close%28%29%5Cn%5Cn%5Ctdef%20upload_file%28self%2C%20file%2C%20filename%2C%20path%29%3A%5Cn%5Ct%5Ctif%20path%20%21%3D%20%27%27%3A%5Cn%5Ct%5Ct%5Ctself.mkd%28path%29%5Cn%5Ct%5Ctself.ftp.cwd%28path%29%5Cn%5Ct%5Ctself.ftp.storbinary%28%27STOR%20%27%20%2B%20filename%2C%20file%29%5Cn%5Cn%5Ctdef%20print_directory%28self%2C%20path%29%3A%5Cn%5Ct%5Ctprint%20self.ftp.nlst%28path%29%5Cn%5Ct%5Ct%5Cn%5Ctdef%20duplicate_file%28self%2C%20filename%2C%20path%29%3A%5Cn%5Ct%5Cti%20%3D%201%5Cn%5Ct%5Ctfind_extension%20%3D%20filename.split%28%27.%27%29%5Cn%5Ct%5Ctnew_filename%20%3D%20%27%27%5Cn%5Ct%5Ctfor%20n%20in%20range%28len%28find_extension%29-1%29%3A%5Cn%5Ct%5Ct%5Ctnew_filename%20%2B%3D%20find_extension%5Bn%5D%20%2B%20%27.%27%5Cn%5Ct%5Ctnew_filename%20%3D%20new_filename%5B%3A-1%5D%5Cn%5Ct%5Ctcheck_filename%20%3D%20new_filename%20%2B%20%27-%27%20%2B%20str%28i%29%20%2B%20%27.%27%20%2B%20find_extension%5Bn%2B1%5D%5Cn%5Ct%5Ctfile_contents%20%3D%20self.open_file%28filename%2C%20path%29%5Cn%5Ct%5Ctwhile%20self.check_file_exists%28check_filename%2C%20path%29%3A%5Cn%5Ct%5Ct%5Cti%20%2B%3D%201%5Cn%5Ct%5Ct%5Ctcheck_filename%20%3D%20new_filename%20%2B%20%27-%27%20%2B%20str%28i%29%20%2B%20%27.%27%20%2B%20find_extension%5Bn%2B1%5D%5Cn%5Ct%5Ctself.create_and_upload_file%28check_filename%2C%20file_contents%2C%20path%29%5Cn%5Ct%5Ct%5Cn%5Ctdef%20duplicate_folder%28self%2C%20foldername%2C%20path%29%3A%5Cn%5Ct%5Cti%20%3D%201%5Cn%5Ct%5Ctnew_foldername%20%3D%20foldername%20%2B%20%27-%27%20%2B%20str%28i%29%5Cn%5Ct%5Ctwhile%20self.check_file_exists%28new_foldername%2C%20path%29%3A%5Cn%5Ct%5Ct%5Cti%20%2B%3D%201%5Cn%5Ct%5Ct%5Ctnew_foldername%20%3D%20foldername%20%2B%20%27-%27%20%2B%20str%28i%29%5Cn%5Ct%5Ctself.ftp.mkd%28path%20%2B%20%27%2F%27%20%2B%20new_foldername%29%5Cn%5Ct%5Ct%23%20Get%20directory%20to%20duplicate%20as%20dictionary%20with%20keys%20marking%20items%20as%20files%20or%20folders%5Cn%5Ct%5Ctdir_items%20%3D%20ftp.directory_with_types%28path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ctfor%20item%20in%20dir_items%3A%5Cn%5Ct%5Ct%5Ctif%20dir_items%5Bitem%5D%5B%27type%27%5D%20%3D%3D%20%27file%27%3A%5Cn%5Ct%5Ct%5Ct%5Ctfile_contents%20%3D%20self.open_file%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ct%5Ct%5Ctself.create_and_upload_file%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20file_contents%2C%20path%20%2B%20%27%2F%27%20%2B%20new_foldername%29%5Cn%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ctif%20dir_items%5Bitem%5D%5B%27title%27%5D%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctself.ftp.mkd%28path%20%2B%20%27%2F%27%20%2B%20new_foldername%20%2B%20%27%2F%27%20%2B%20dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctitems_in_folder%20%3D%20self.ftp.nlst%28path%20%2B%20%27%2F%27%20%2B%20foldername%20%2B%20%27%2F%27%20%2B%20dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctitems_to_duplicate%20%3D%20False%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctfor%20folderitem%20in%20items_in_folder%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctif%20folderitem%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctitems_to_duplicate%20%3D%20True%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%20items_to_duplicate%20%3D%3D%20True%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctself.duplicate_folder_helper%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20path%20%2B%20%27%2F%27%20%2B%20foldername%2C%20path%20%2B%20%27%2F%27%20%2B%20new_foldername%29%5Cn%5Ct%23%20Helper%20action%5Cn%5Ctdef%20duplicate_folder_helper%28self%2C%20foldername%2C%20from_path%2C%20to_path%29%3A%5Cn%5Ct%5Ct%23%20Get%20directory%20to%20duplicate%20as%20dictionary%20with%20keys%20marking%20items%20as%20files%20or%20folders%5Cn%5Ct%5Ctdir_items%20%3D%20ftp.directory_with_types%28from_path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ctfor%20item%20in%20dir_items%3A%5Cn%5Ct%5Ct%5Ctif%20dir_items%5Bitem%5D%5B%27type%27%5D%20%3D%3D%20%27file%27%3A%5Cn%5Ct%5Ct%5Ct%5Ctfile_contents%20%3D%20self.open_file%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20from_path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ct%5Ct%5Ctself.create_and_upload_file%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20file_contents%2C%20to_path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ctif%20dir_items%5Bitem%5D%5B%27title%27%5D%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctself.ftp.mkd%28to_path%20%2B%20%27%2F%27%20%2B%20foldername%20%2B%20%27%2F%27%20%2B%20dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctitems_in_folder%20%3D%20self.ftp.nlst%28from_path%20%2B%20%27%2F%27%20%2B%20foldername%20%2B%20%27%2F%27%20%2B%20dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctitems_to_duplicate%20%3D%20False%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctfor%20folderitem%20in%20items_in_folder%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctif%20folderitem%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctitems_to_duplicate%20%3D%20True%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%20items_to_duplicate%20%3D%3D%20True%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctself.duplicate_folder_helper%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20from_path%20%2B%20%27%2F%27%20%2B%20foldername%2C%20to_path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Cn%5Ctdef%20move_file%28self%2C%20filename%2C%20from_path%2C%20to_path%29%3A%5Cn%5Ct%5Ctif%20not%20self.check_file_exists%28filename%2C%20to_path%29%3A%5Cn%5Ct%5Ct%5Ctfile_contents%20%3D%20self.open_file%28filename%2C%20from_path%29%5Cn%5Ct%5Ct%5Ctself.create_and_upload_file%28filename%2C%20file_contents%2C%20to_path%29%5Cn%5Ct%5Ct%5Ctif%20self.check_file_exists%28filename%2C%20to_path%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctif%20self.open_file%28filename%2C%20to_path%29%20%3D%3D%20file_contents%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctself.ftp.cwd%28from_path%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctself.ftp.delete%28filename%29%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctconsole.hud_alert%28%27File%20with%20same%20name%20already%20exists%20in%20this%20location%27%2C%20%27error%27%2C%205.0%29%5Cn%5Ct%5Ct%5Ct%5Cn%5Ctdef%20move_folder%28self%2C%20foldername%2C%20from_path%2C%20to_path%29%3A%5Cn%5Ct%5Ctall_files_moved%20%3D%20True%5Cn%5Ct%5Ctif%20not%20self.check_file_exists%28foldername%2C%20to_path%29%3A%5Cn%5Ct%5Ct%5Ctself.ftp.mkd%28to_path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ct%5Ct%23%20Get%20directory%20of%20folder%20contents%20to%20be%20moved%5Cn%5Ct%5Ct%5Ctdir_items%20%3D%20ftp.directory_with_types%28from_path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ct%5Ctfor%20item%20in%20dir_items%3A%5Cn%5Ct%5Ct%5Ct%5Ctif%20dir_items%5Bitem%5D%5B%27type%27%5D%20%3D%3D%20%27file%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctfile_contents%20%3D%20self.open_file%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20from_path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctself.create_and_upload_file%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20file_contents%2C%20to_path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%20not%20self.check_file_exists%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20to_path%20%2B%20%27%2F%27%20%2B%20foldername%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctall_files_moved%20%3D%20False%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctprint%20%27false%27%5Cn%5Ct%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%20dir_items%5Bitem%5D%5B%27title%27%5D%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctself.ftp.mkd%28to_path%20%2B%20%27%2F%27%20%2B%20foldername%20%2B%20%27%2F%27%20%2B%20dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctitems_in_folder%20%3D%20self.ftp.nlst%28from_path%20%2B%20%27%2F%27%20%2B%20foldername%20%2B%20%27%2F%27%20%2B%20dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctitems_to_duplicate%20%3D%20False%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctfor%20folderitem%20in%20items_in_folder%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctif%20folderitem%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctitems_to_duplicate%20%3D%20True%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctif%20items_to_duplicate%20%3D%3D%20True%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctself.duplicate_folder_helper%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20from_path%20%2B%20%27%2F%27%20%2B%20foldername%2C%20to_path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctconsole.hud_alert%28%27Folder%20of%20same%20name%20already%20exists%20in%20this%20location%27%2C%20%27error%27%2C%205.0%29%5Cn%5Ct%5Ct%5Ctreturn%5Cn%5Ct%5Ctif%20all_files_moved%3A%5Cn%5Ct%5Ct%5Ctself.delete_folder%28foldername%2C%20from_path%29%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctconsole.hud_alert%28%27All%20files%20may%20not%20have%20been%20moved%27%2C%20%27error%27%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Cn%5Ctdef%20delete_folder%28self%2C%20foldername%2C%20path%29%3A%5Cn%5Ct%5Ctftp.delete_folder_helper%28path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ctftp.ftp.cwd%28path%29%5Cn%5Ct%5Ctftp.ftp.rmd%28foldername%29%5Cn%5Ct%23%20Helper%20action%5Cn%5Ctdef%20delete_folder_helper%28self%2C%20path%29%3A%5Cn%5Ct%5Ctself.ftp.cwd%28path%29%5Cn%5Ct%5Ctdir_items%20%3D%20ftp.directory_with_types%28path%29%5Cn%5Ct%5Ctfor%20item%20in%20dir_items%3A%5Cn%5Ct%5Ct%5Ctif%20dir_items%5Bitem%5D%5B%27type%27%5D%20%3D%3D%20%27file%27%3A%5Cn%5Ct%5Ct%5Ct%5Ctself.ftp.delete%28dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ctif%20dir_items%5Bitem%5D%5B%27title%27%5D%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctitems_in_folder%20%3D%20self.ftp.nlst%28path%20%2B%20%27%2F%27%20%2B%20dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctitems_inside%20%3D%20False%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctfor%20folderitem%20in%20items_in_folder%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctif%20folderitem%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctitems_inside%20%3D%20True%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%20items_inside%20%3D%3D%20True%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctsave_path%20%3D%20path%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctself.delete_folder_helper%28path%20%2B%20%27%2F%27%20%2B%20dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctself.ftp.cwd%28save_path%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctself.ftp.rmd%28dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctself.ftp.rmd%28dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Cn%5Ctdef%20directory_with_types%28self%2C%20path%29%3A%5Cn%5Ct%5Cti%20%3D%200%5Cn%5Ct%5Ctdirectory_list%20%3D%20%5B%5D%5Cn%5Ct%5Ctdirectory_dict%20%3D%20%7B%7D%5Cn%5Ct%5Cttitle_list%20%3D%20self.ftp.nlst%28path%29%5Cn%5Ct%5Ctself.ftp.cwd%28path%29%5Cn%5Ct%5Ctself.ftp.retrlines%28%27LIST%27%2C%20callback%3Ddirectory_list.append%29%5Cn%5Ct%5Ctfor%20item%20in%20directory_list%3A%5Cn%5Ct%5Ct%5Ctif%20i%20%3C%20len%28title_list%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctlisting%20%3D%20%7B%7D%5Cn%5Ct%5Ct%5Ct%5Ctif%20item.upper%28%29.startswith%28%27D%27%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctlisting%5B%27type%27%5D%20%3D%20%27folder%27%5Cn%5Ct%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctlisting%5B%27type%27%5D%20%3D%20%27file%27%5Cn%5Ct%5Ct%5Ct%5Ctdirectory_dict%5Bi%5D%20%3D%20listing%5Cn%5Ct%5Ct%5Ct%5Ctdirectory_dict%5Bi%5D%5B%27title%27%5D%20%3D%20title_list%5Bi%5D%5Cn%5Ct%5Ct%5Ct%5Cti%20%2B%3D%201%5Cn%5Ct%5Ctreturn%20directory_dict%5Cn%5Cn%5Ctdef%20quit%28self%29%3A%5Cn%5Ct%5Ctself.ftp.quit%28%29%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%23%23%23%23%20FTP%20UI%20Client%20%23%23%23%23%23%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%5Cn%23%20Initiate%20FTP%20Connection%5Cnftp%20%3D%20FTP_Instance%28%29%5Cn%5Cn%23%20Build%20directory%20to%20be%20displayed%20in%20rows%20of%20file%20manager%5Cndef%20build_directory%28path%3Dparams%5B%27Initial_Path%27%5D%29%3A%5Cn%5Ct%23%20Get%20directory%20as%20dictionary%20with%20keys%20marking%20items%20as%20files%20or%20folders%5Cn%5Ctlist_items%20%3D%20ftp.directory_with_types%28path%29%5Cn%5Ctsource_list%20%3D%20%5B%5D%5Cn%5Ct%23%20Pull%20data%20from%20list_items%20and%20prepare%20a%20list%20of%20dictionaries%20readable%20by%20ListDataSource%20element%5Cn%5Ctfor%20item%20in%20list_items%3A%5Cn%5Ct%5Ctd%20%3D%20%7B%7D%5Cn%5Ct%5Ctd%5B%27title%27%5D%20%3D%20list_items%5Bitem%5D%5B%27title%27%5D%5Cn%5Ct%5Ct%23%20For%20files%2C%20do%20not%20include%20accessory%20action%20icons%20in%20their%20rows%2C%20but%20mark%20them%20with%20file%20icons%5Cn%5Ct%5Ctif%20list_items%5Bitem%5D%5B%27type%27%5D%20%3D%3D%20%27file%27%3A%5Cn%5Ct%5Ct%5Ctd%5B%27accessory_type%27%5D%20%3D%20%27none%27%5Cn%5Ct%5Ct%5Ctd%5B%27image%27%5D%20%3D%20%27ionicons-document-24%27%5Cn%5Ct%5Ct%23%20For%20folders%2C%20add%20chevron%20arrow%20accessory%20action%20icons%20to%20rows%20and%20mark%20with%20folder%20icons%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctd%5B%27accessory_type%27%5D%20%3D%20%27detail_disclosure_button%27%5Cn%5Ct%5Ct%5Ctd%5B%27image%27%5D%20%3D%20%27ionicons-folder-24%27%5Cn%5Ct%5Ct%23%20Add%20each%20prepared%20dictionary%20to%20overall%20list%20of%20dictionaries%5Cn%5Ct%5Ctif%20d%5B%27title%27%5D%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ctsource_list.append%28d%29%5Cn%5Ct%23%20Return%20list%20of%20dictionaries%20with%20all%20files%20and%20folders%20properly%20flagged%5Ct%5Cn%5Ctreturn%20source_list%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20Back%20Button%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20Action%20to%20be%20run%20when%20user%20taps%20the%20back%20button%20in%20the%20top%20left%20of%20the%20UI%5Cndef%20back_button_tapped%28sender%29%3A%5Cn%5Ctif%20not%20sender.superview.secondary_actions.hidden%3A%5Cn%5Ct%5Ctsender.superview.secondary_actions.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.file_label.editable%20%3D%20False%5Cn%5Ct%5Ctbutton_actions_closed%20%3D%20False%5Cn%5Ctelif%20not%20sender.superview.button_actions.hidden%3A%5Cn%5Ct%5Ctsender.superview.plus_button.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.button_actions.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.file_label.editable%20%3D%20False%5Cn%5Ct%5Ctbutton_actions_closed%20%3D%20False%5Cn%5Ct%5Ctif%20sender.superview.path_field.text%20%3D%3D%20%27%2F%27%3A%5Cn%5Ct%5Ct%5Ctsender.superview.back_button.enabled%20%3D%20False%5Cn%5Ctelse%3A%5Cn%5Ct%5Ctbutton_actions_closed%20%3D%20True%5Cn%5Ct%5Cn%5Ctif%20button_actions_closed%20%3D%3D%20True%3A%5Cn%5Ct%5Ct%23%20Get%20current%20path%5Cn%5Ct%5Ctpath%20%3D%20sender.superview.path_field.text%5Cn%5Ct%5Ct%23%20Split%20the%20path%20at%20slashes%5Cn%5Ct%5Ctpath%20%3D%20path.split%28%27%2F%27%29%5Cn%5Ct%5Ctnew_path%20%3D%20%27%27%5Cn%5Ct%5Ct%23%20Put%20the%20path%20back%20together%20with%20slashes%2C%20but%20leave%20the%20final%20path%20item%20removed%20%28path%20is%20back%20one%20level%29%5Cn%5Ct%5Ctfor%20i%20in%20range%28len%28path%29%20-%201%29%3A%5Cn%5Ct%5Ct%5Ctnew_path%20%2B%3D%20path%5Bi%5D%20%2B%20%27%2F%27%5Cn%5Ct%5Ct%23%20Remove%20trailing%20backslash%2C%20unless%20you%20are%20in%20the%20top%20level%20directory%20%27%2F%27%5Cn%5Ct%5Ctif%20len%28new_path%29%20%3E%201%3A%5Cn%5Ct%5Ct%5Ctnew_path%20%3D%20new_path%5B%3A-1%5D%5Cn%5Ct%5Ct%23%20Build%20the%20directory%20for%20the%20new%20path%20and%20send%20it%20to%20the%20ListDataSource%20element%5Cn%5Ct%5Ctsender.superview.list_source.items%20%3D%20build_directory%28new_path%29%5Cn%5Ct%5Ct%23%20Adjust%20the%20title%20TextField%20to%20display%20the%20new%20path%5Cn%5Ct%5Ctsender.superview.path_field.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ct%5Ct%23%20If%20the%20new%20path%20leaves%20you%20at%20the%20top%20level%20directory%2C%20disable%20the%20back%20button%5Cn%5Ct%5Ctif%20new_path%20%3D%3D%20%27%2F%27%3A%5Cn%5Ct%5Ct%5Ctsender.enabled%20%3D%20False%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20Plus%20Button%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cndef%20plus_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.back_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.button1.title%20%3D%20%27Upload%20File%20in%20Editor%27%5Cn%5Ctsender.superview.button1.action%20%3D%20upload_file_in_editor%5Cn%5Ctsender.superview.button2.title%20%3D%20%27New%20folder%27%5Cn%5Ctsender.superview.button2.action%20%3D%20new_folder%5Cn%5Ctsender.superview.button3.title%20%3D%20%27Upload%20Image%27%5Cn%5Ctsender.superview.button3.action%20%3D%20upload_image_button_tapped%5Cn%5Ctsender.superview.button4.title%20%3D%20%27Run%20Custom%20Code%27%5Cn%5Ctsender.superview.button5.title%20%3D%20%27Upload%20Dropbox%20File%27%5Cn%5Ctsender.superview.button6.title%20%3D%20%27Upload%20Local%20File%27%5Cn%5Ctsender.superview.button3.hidden%20%3D%20False%5Cn%5Ctsender.superview.button4.hidden%20%3D%20True%5Cn%5Ctsender.superview.button5.hidden%20%3D%20True%5Cn%5Ctsender.superview.button6.hidden%20%3D%20True%5Cn%5Ctsender.superview.button7.hidden%20%3D%20True%5Cn%5Ctsender.superview.button8.hidden%20%3D%20True%5Cn%5Ctsender.superview.file_icon.image%20%3D%20ui.Image.named%28%27ionicons-plus-24%27%29%5Cn%5Ctsender.superview.file_label.text%20%3D%20sender.superview.path_field.text%5Cn%5Ctsender.superview.button_actions.hidden%20%3D%20False%5Cn%5Ctsender.superview.plus_button.enabled%20%3D%20False%5Cn%5Ctsender.superview.close_button.center%20%3D%20%28sender.superview.width%2F2%2C155%29%5Cn%5Ctif%20sender.superview.height%20%3C%20500%3A%5Cn%5Ct%5Ctsender.superview.scroll_buttons.content_size%20%3D%20%28sender.superview.width%2C%20207%29%5Cn%5Ctsender.superview.scroll_buttons.content_offset%20%3D%20%280%2C0%29%5Cn%5Ct%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20Home%20Button%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cndef%20home_button_tapped%28sender%29%3A%5Cn%5Ctif%20not%20sender.superview.secondary_actions.hidden%3A%5Cn%5Ct%5Ctsender.superview.secondary_actions.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.file_label.editable%20%3D%20False%5Cn%5Ctif%20not%20sender.superview.button_actions.hidden%3A%5Cn%5Ct%5Ctsender.superview.plus_button.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.button_actions.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.file_label.editable%20%3D%20False%5Cn%5Ctsender.superview.back_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.list_source.items%20%3D%20build_directory%28%29%5Cn%5Ct%23%20Adjust%20the%20title%20TextField%20to%20display%20the%20new%20path%5Cn%5Ctsender.superview.path_field.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%23%23%23%23%20Button%20Actions%20%23%23%23%23%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cndef%20close_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Cndef%20cancel_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20False%5Cn%5Ct%5Cndef%20copy_path_button_tapped%28sender%29%3A%5Cn%5Ctclipboard.set%28sender.superview.superview.superview.path_field.text%20%2B%20%27%2F%27%20%2B%20sender.superview.superview.superview.file_label.text%29%5Cn%5Ctconsole.hud_alert%28%27Copied%27%2C%20%27success%27%29%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20Plus%20Button%20Actions%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cndef%20upload_file_in_editor%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.enabled%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.file_label.delegate%20%3D%20file_label_delegate%28sender.superview.superview.superview.file_label%2C%20%27upload%27%29%5Cn%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20True%5Cn%5Ctsender.superview.superview.superview.file_label.name%20%3D%20sender.superview.superview.superview.file_label.text%5Cn%5Ctsender.superview.superview.superview.file_label.begin_editing%28%29%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Upload%20File%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20upload_file%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20action%5Cndef%20upload_file%28sender%29%3A%5Cn%5Ctfilename%20%3D%20sender.superview.superview.superview.file_label.text%5Cn%5Cttext%20%3D%20editor.get_text%28%29%5Cn%5Ctpath%20%3D%20sender.superview.superview.superview.path_field.text%5Cn%5Ctif%20not%20ftp.check_file_exists%28sender.superview.superview.superview.file_label.text%2Csender.superview.superview.superview.path_field.text%29%3A%5Cn%5Ct%5Ctftp.create_and_upload_file%28filename%2C%20text%2C%20path%29%5Cn%5Ct%5Ctsender.superview.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.superview.path_field.text%29%5Cn%5Ct%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.file_label.text%20%3D%20sender.superview.superview.superview.file_label.name%5Cn%5Ct%5Ctsender.superview.superview.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20False%5Cn%5Ctelse%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27File%20%5C%5C%27%27%20%2B%20sender.superview.superview.superview.file_label.text%20%2B%20%27%5C%5C%27%20Already%20Exists%27%29%5Cn%5Ct%5Cndef%20new_folder%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.enabled%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.file_label.delegate%20%3D%20file_label_delegate%28sender.superview.superview.superview.file_label%2C%20%27new_folder%27%29%5Cn%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20True%5Cn%5Ctsender.superview.superview.superview.file_label.name%20%3D%20sender.superview.superview.superview.file_label.text%5Cn%5Ctsender.superview.superview.superview.file_label.begin_editing%28%29%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Create%20Folder%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20create_folder%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20action%5Cndef%20create_folder%28sender%29%3A%5Cn%5Ctfoldername%20%3D%20sender.superview.superview.superview.file_label.text%5Cn%5Ctpath%20%3D%20sender.superview.superview.superview.path_field.text%20%2B%20%27%2F%27%20%2B%20foldername%5Cn%5Ctif%20not%20ftp.check_file_exists%28sender.superview.superview.superview.file_label.text%2Csender.superview.superview.superview.path_field.text%29%3A%5Cn%5Ct%5Ctftp.ftp.mkd%28path%29%5Cn%5Ct%5Ctsender.superview.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.superview.path_field.text%29%5Cn%5Ct%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.file_label.text%20%3D%20sender.superview.superview.superview.file_label.name%5Cn%5Ct%5Ctsender.superview.superview.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20False%5Cn%5Ctelse%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27Folder%20%5C%5C%27%27%20%2B%20sender.superview.superview.superview.file_label.text%20%2B%20%27%5C%5C%27%20Already%20Exists%27%29%5Cn%5Ct%5Ct%5Cndef%20upload_image_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.enabled%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.file_label.delegate%20%3D%20file_label_delegate%28sender.superview.superview.superview.file_label%2C%20%27new_image%27%29%5Cn%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20True%5Cn%5Ctsender.superview.superview.superview.file_label.name%20%3D%20sender.superview.superview.superview.file_label.text%5Cn%5Ctsender.superview.superview.superview.file_label.begin_editing%28%29%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Show%20Image%20Picker%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20upload_image%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20action%5Cn%40ui.in_background%5Cndef%20upload_image%28sender%29%3A%5Cn%5Ctimagename%20%3D%20sender.superview.superview.superview.file_label.text%5Cn%5Ctpath%20%3D%20sender.superview.superview.superview.path_field.text%5Cn%5Ctif%20not%20ftp.check_file_exists%28sender.superview.superview.superview.file_label.text%2Csender.superview.superview.superview.path_field.text%29%3A%5Cn%5Ct%5Ctftp.upload_image%28imagename%2C%20path%29%5Cn%5Ct%5Ctsender.superview.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.superview.path_field.text%29%5Cn%5Ct%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.file_label.text%20%3D%20sender.superview.superview.superview.file_label.name%5Cn%5Ct%5Ctsender.superview.superview.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20False%5Cn%5Ctelse%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27File%20%5C%5C%27%27%20%2B%20sender.superview.superview.superview.file_label.text%20%2B%20%27%5C%5C%27%20Already%20Exists%27%29%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20File%20Actions%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cndef%20open_button_tapped%28sender%29%3A%5Cn%5Ctfile_contents%20%3D%20ftp.open_file%28sender.superview.superview.superview.file_label.text%2C%20sender.superview.superview.superview.path_field.text%29%5Cn%5Cteditor.set_file_contents%28sender.superview.superview.superview.file_label.text%2C%20file_contents%2C%20%27local%27%29%5Cn%5Ctwebbrowser.open%28%27editorial%3A%2F%2Fopen%2F%27%20%2B%20sender.superview.superview.superview.file_label.text%20%2B%20%27%3Froot%3Dlocal%27%29%5Cn%5Ctsender.superview.superview.superview.close%28%29%5Cn%5Cndef%20overwrite_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Overwrite%20With%20File%20in%20Editor%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20overwrite_with_file_in_editor%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20action%5Cndef%20overwrite_with_file_in_editor%28sender%29%3A%5Cn%5Ctfilename%20%3D%20sender.superview.superview.superview.file_label.text%5Cn%5Cttext%20%3D%20editor.get_text%28%29%5Cn%5Ctpath%20%3D%20sender.superview.superview.superview.path_field.text%5Cn%5Ctftp.overwrite_file%28filename%2C%20text%2C%20path%29%5Cn%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Ct%5Cndef%20rename_file_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.enabled%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.file_label.delegate%20%3D%20file_label_delegate%28sender.superview.superview.superview.file_label%2C%20%27file%27%29%5Cn%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20True%5Cn%5Ctsender.superview.superview.superview.file_label.name%20%3D%20sender.superview.superview.superview.file_label.text%5Cn%5Ctsender.superview.superview.superview.file_label.begin_editing%28%29%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Rename%20File%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20rename_file%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20Action%5Cndef%20rename_file%28sender%29%3A%5Cn%5Ctif%20not%20ftp.check_file_exists%28sender.superview.superview.superview.file_label.text%2Csender.superview.superview.superview.path_field.text%29%3A%5Cn%5Ct%5Ctftp.ftp.rename%28sender.superview.superview.superview.file_label.name%2C%20sender.superview.superview.superview.file_label.text%29%5Cn%5Ct%5Ctsender.superview.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.superview.path_field.text%29%5Cn%5Ct%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20False%5Cn%5Ct%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Ctelse%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27File%20%5C%5C%27%27%20%2B%20sender.superview.superview.superview.file_label.text%20%2B%20%27%5C%5C%27%20Already%20Exists%27%29%5Cn%5Ct%5Cndef%20delete_file_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Permanently%20Delete%20File%3F%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20permanently_delete_file%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20action%5Cndef%20permanently_delete_file%28sender%29%3A%5Cn%5Ctftp.ftp.delete%28sender.superview.superview.superview.file_label.text%29%5Cn%5Ctsender.superview.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.superview.path_field.text%29%5Cn%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Ct%5Cndef%20move_file_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.back_button.enabled%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.home_button.enabled%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.move_path_field.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ctsender.superview.superview.superview.move_list_source.items%20%3D%20build_move_directory%28sender.superview.superview.superview.move_path_field.text%29%5Cn%5Ctsender.superview.superview.superview.select_folder.title%20%3D%20%27Move%20to%20%5C%5C%27%27%20%2B%20sender.superview.superview.superview.move_path_field.text%20%2B%20%27%5C%5C%27%27%5Cn%5Ctsender.superview.superview.superview.move_table_view.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.move_back_button.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.move_cancel_button.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.select_folder.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.select_folder.action%20%3D%20file_select_folder_button_tapped%5Cn%5Ctsender.superview.superview.superview.move_label_background.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.table_view.hidden%20%3D%20True%5Cn%23%20Secondary%20action%5Cndef%20file_select_folder_button_tapped%28sender%29%3A%5Cn%5Ctftp.move_file%28sender.superview.superview.file_label.text%2C%20sender.superview.superview.path_field.text%2C%20sender.superview.superview.move_path_field.text%29%5Cn%5Ctsender.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.path_field.text%29%5Cn%5Ctsender.hidden%20%3D%20True%5Cn%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.file_label.editable%20%3D%20False%5Cn%5Ctsender.superview.superview.move_table_view.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.move_back_button.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.move_cancel_button.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.move_label_background.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.table_view.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.back_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.home_button.enabled%20%3D%20True%5Cn%5Ct%5Cndef%20duplicate_file_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Duplicate%20File%3F%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20duplicate_file%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20action%5Cndef%20duplicate_file%28sender%29%3A%5Cn%5Ctftp.duplicate_file%28sender.superview.superview.superview.file_label.text%2C%20sender.superview.superview.superview.path_field.text%29%5Cn%5Ctsender.superview.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.superview.path_field.text%29%5Cn%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Ct%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20Folder%20Actions%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cndef%20rename_folder_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.enabled%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.file_label.delegate%20%3D%20file_label_delegate%28sender.superview.superview.superview.file_label%2C%20%27folder%27%29%5Cn%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20True%5Cn%5Ctsender.superview.superview.superview.file_label.name%20%3D%20sender.superview.superview.superview.file_label.text%5Cn%5Ctsender.superview.superview.superview.file_label.begin_editing%28%29%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Rename%20Folder%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20rename_folder%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20action%5Cndef%20rename_folder%28sender%29%3A%5Cn%5Ctif%20not%20ftp.check_file_exists%28sender.superview.superview.superview.file_label.text%2Csender.superview.superview.superview.path_field.text%29%3A%5Cn%5Ct%5Ctftp.ftp.rename%28sender.superview.superview.superview.file_label.name%2C%20sender.superview.superview.superview.file_label.text%29%5Cn%5Ct%5Ctsender.superview.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.superview.path_field.text%29%5Cn%5Ct%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20False%5Cn%5Ct%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Ctelse%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27Folder%20%5C%5C%27%27%20%2B%20sender.superview.superview.superview.file_label.text%20%2B%20%27%5C%5C%27%20Already%20Exists%27%29%5Cn%5Cndef%20delete_folder_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Delete%20Folder%20%26%20Contents%3F%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20permanently_delete_folder%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20action%5Cndef%20permanently_delete_folder%28sender%29%3A%5Cn%5Ctftp.delete_folder%28sender.superview.superview.superview.file_label.text%2C%20sender.superview.superview.superview.path_field.text%29%5Cn%5Ctsender.superview.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.superview.path_field.text%29%5Cn%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Cndef%20move_folder_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.back_button.enabled%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.home_button.enabled%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.move_path_field.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ctsender.superview.superview.superview.move_list_source.items%20%3D%20build_move_directory%28sender.superview.superview.superview.move_path_field.text%29%5Cn%5Ctsender.superview.superview.superview.select_folder.title%20%3D%20%27Move%20to%20%5C%5C%27%27%20%2B%20sender.superview.superview.superview.move_path_field.text%20%2B%20%27%5C%5C%27%27%5Cn%5Ctsender.superview.superview.superview.move_table_view.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.move_back_button.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.move_cancel_button.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.select_folder.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.select_folder.action%20%3D%20folder_select_folder_button_tapped%5Cn%5Ctsender.superview.superview.superview.move_label_background.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.table_view.hidden%20%3D%20True%5Cn%23%20Secondary%20action%5Cndef%20folder_select_folder_button_tapped%28sender%29%3A%5Cn%5Ctftp.move_folder%28sender.superview.superview.file_label.text%2C%20sender.superview.superview.path_field.text%2C%20sender.superview.superview.move_path_field.text%29%5Cn%5Ctsender.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.path_field.text%29%5Cn%5Ctsender.hidden%20%3D%20True%5Cn%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.file_label.editable%20%3D%20False%5Cn%5Ctsender.superview.superview.move_table_view.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.move_back_button.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.move_cancel_button.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.move_label_background.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.table_view.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.back_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.home_button.enabled%20%3D%20True%5Cn%5Ct%5Cndef%20duplicate_folder_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Duplicate%20Folder%20%26%20Contents%3F%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20duplicate_entire_folder%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20action%5Cndef%20duplicate_entire_folder%28sender%29%3A%5Cn%5Ctftp.duplicate_folder%28sender.superview.superview.superview.file_label.text%2C%20sender.superview.superview.superview.path_field.text%29%5Cn%5Ctsender.superview.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.superview.path_field.text%29%5Cn%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Ct%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%23%23%23%23%20Delegates%20%23%23%23%23%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20Navigation%20Delegate%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cnclass%20navigation_delegate%28%29%3A%5Cn%5Ctdef%20tableview_did_select%28self%2C%20tableview%2C%20section%2C%20row%29%3A%5Cn%5Ct%5Ct%23%20Save%20title%20of%20tapped%20row%5Cn%5Ct%5Ctselection%20%3D%20tableview.data_source.items%5Brow%5D%5B%27title%27%5D%5Cn%5Ct%5Ct%23%20If%20selected%20item%20is%20a%20folder...%5Cn%5Ct%5Ctif%20tableview.data_source.items%5Brow%5D%5B%27accessory_type%27%5D%20%21%3D%20%27none%27%3A%5Cn%5Ct%5Ct%5Ct%23%20Build%20the%20new%20directory%5Cn%5Ct%5Ct%5Ctif%20tableview.superview.path_field.text%5B-1%3A%5D%20%21%3D%20%27%2F%27%3A%5Cn%5Ct%5Ct%5Ct%5Cttableview.superview.list_source.items%20%3D%20build_directory%28tableview.superview.path_field.text%20%2B%20%27%2F%27%20%2B%20selection%29%5Cn%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Cttableview.superview.list_source.items%20%3D%20build_directory%28tableview.superview.path_field.text%20%2B%20selection%29%5Cn%5Ct%5Ct%5Ct%23%20Set%20text%20field%20to%20display%20new%20path%5Cn%5Ct%5Ct%5Cttableview.superview.path_field.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ct%5Ct%5Ct%23%20Enable%20the%20back%20button%20if%20you%20are%20no%20longer%20on%20the%20top%20level%20directory%5Cn%5Ct%5Ct%5Ctif%20tableview.superview.path_field.text%20%21%3D%20%27%2F%27%3A%5Cn%5Ct%5Ct%5Ct%5Cttableview.superview.back_button.enabled%20%3D%20True%5Cn%5Ct%5Ct%23%20If%20selected%20item%20is%20a%20file...%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Cttableview.superview.button1.title%20%3D%20%27Download%20%26%20Open%27%5Cn%5Ct%5Ct%5Cttableview.superview.button1.action%20%3D%20open_button_tapped%5Cn%5Ct%5Ct%5Cttableview.superview.button2.title%20%3D%20%27Overwrite%20File%27%5Cn%5Ct%5Ct%5Cttableview.superview.button2.action%20%3D%20overwrite_button_tapped%5Cn%5Ct%5Ct%5Cttableview.superview.button3.title%20%3D%20%27Rename%20File%27%5Cn%5Ct%5Ct%5Cttableview.superview.button3.action%20%3D%20rename_file_button_tapped%5Cn%5Ct%5Ct%5Cttableview.superview.button4.title%20%3D%20%27Delete%20File%27%5Cn%5Ct%5Ct%5Cttableview.superview.button4.action%20%3D%20delete_file_button_tapped%5Cn%5Ct%5Ct%5Cttableview.superview.button5.title%20%3D%20%27Move%20File%27%5Cn%5Ct%5Ct%5Cttableview.superview.button5.action%20%3D%20move_file_button_tapped%5Cn%5Ct%5Ct%5Cttableview.superview.button6.title%20%3D%20%27Duplicate%20File%27%5Cn%5Ct%5Ct%5Cttableview.superview.button6.action%20%3D%20duplicate_file_button_tapped%5Cn%5Ct%5Ct%5Cttableview.superview.button7.title%20%3D%20%27Copy%20File%20Path%27%5Cn%5Ct%5Ct%5Cttableview.superview.button7.action%20%3D%20copy_path_button_tapped%5Cn%5Ct%5Ct%5Cttableview.superview.button3.hidden%20%3D%20False%5Cn%5Ct%5Ct%5Cttableview.superview.button4.hidden%20%3D%20False%5Cn%5Ct%5Ct%5Cttableview.superview.button5.hidden%20%3D%20False%5Cn%5Ct%5Ct%5Cttableview.superview.button6.hidden%20%3D%20False%5Cn%5Ct%5Ct%5Cttableview.superview.button7.hidden%20%3D%20False%5Cn%5Ct%5Ct%5Cttableview.superview.button8.hidden%20%3D%20True%5Cn%5Ct%5Ct%5Cttableview.superview.file_icon.image%20%3D%20ui.Image.named%28%27ionicons-document-24%27%29%5Cn%5Ct%5Ct%5Cttableview.superview.file_label.text%20%3D%20selection%5Cn%5Ct%5Ct%5Cttableview.superview.button_actions.hidden%20%3D%20False%5Cn%5Ct%5Ct%5Cttableview.superview.plus_button.enabled%20%3D%20False%5Cn%5Ct%5Ct%5Cttableview.superview.back_button.enabled%20%3D%20True%5Cn%5Ct%5Ct%5Cttableview.superview.close_button.center%20%3D%20%28tableview.superview.width%2F2%2C272%29%5Cn%5Ct%5Ct%5Ctif%20tableview.superview.height%20%3C%20500%3A%5Cn%5Ct%5Ct%5Ct%5Cttableview.superview.scroll_buttons.content_size%20%3D%20%28tableview.superview.width%2C%20325%29%5Cn%5Ct%5Ct%5Cttableview.superview.scroll_buttons.content_offset%20%3D%20%280%2C0%29%5Cn%5Ct%5Cn%5Ctdef%20tableview_accessory_button_tapped%28self%2C%20tableview%2C%20section%2C%20row%29%3A%5Cn%5Ct%5Ct%23%20Save%20title%20of%20tapped%20row%5Cn%5Ct%5Ctselection%20%3D%20tableview.data_source.items%5Brow%5D%5B%27title%27%5D%5Cn%5Ct%5Cttableview.superview.button1.title%20%3D%20%27Rename%20Folder%27%5Cn%5Ct%5Cttableview.superview.button1.action%20%3D%20rename_folder_button_tapped%5Cn%5Ct%5Cttableview.superview.button2.title%20%3D%20%27Delete%20Folder%27%5Cn%5Ct%5Cttableview.superview.button2.action%20%3D%20delete_folder_button_tapped%5Cn%5Ct%5Cttableview.superview.button3.title%20%3D%20%27Move%20Folder%27%5Cn%5Ct%5Cttableview.superview.button3.action%20%3D%20move_folder_button_tapped%5Cn%5Ct%5Cttableview.superview.button4.title%20%3D%20%27Duplicate%20Folder%27%5Cn%5Ct%5Cttableview.superview.button4.action%20%3D%20duplicate_folder_button_tapped%5Cn%5Ct%5Cttableview.superview.button5.title%20%3D%20%27Copy%20Folder%20Path%27%5Cn%5Ct%5Cttableview.superview.button5.action%20%3D%20copy_path_button_tapped%5Cn%5Ct%5Cttableview.superview.button3.hidden%20%3D%20False%5Cn%5Ct%5Cttableview.superview.button4.hidden%20%3D%20False%5Cn%5Ct%5Cttableview.superview.button5.hidden%20%3D%20False%5Cn%5Ct%5Cttableview.superview.button6.hidden%20%3D%20True%5Cn%5Ct%5Cttableview.superview.button7.hidden%20%3D%20True%5Cn%5Ct%5Cttableview.superview.button8.hidden%20%3D%20True%5Cn%5Ct%5Cttableview.superview.file_icon.image%20%3D%20ui.Image.named%28%27ionicons-folder-24%27%29%5Cn%5Ct%5Cttableview.superview.file_label.text%20%3D%20selection%5Cn%5Ct%5Cttableview.superview.button_actions.hidden%20%3D%20False%5Cn%5Ct%5Cttableview.superview.plus_button.enabled%20%3D%20False%5Cn%5Ct%5Cttableview.superview.back_button.enabled%20%3D%20True%5Cn%5Ct%5Cttableview.superview.close_button.center%20%3D%20%28tableview.superview.width%2F2%2C213%29%5Cn%5Ct%5Ctif%20tableview.superview.height%20%3C%20500%3A%5Cn%5Ct%5Ct%5Cttableview.superview.scroll_buttons.content_size%20%3D%20%28tableview.superview.width%2C%20266%29%5Cn%5Ct%5Cttableview.superview.scroll_buttons.content_offset%20%3D%20%280%2C0%29%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20Path%20Field%20Delegate%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cnclass%20path_navigation_delegate%28%29%3A%5Cn%5Ctdef%20textfield_should_begin_editing%28self%2Ctextfield%29%3A%5Cn%5Ct%5Ctreturn%20True%5Cn%5Ct%23%20When%20user%20hits%20return%20after%20editing%20TextField...%5Cn%5Ctdef%20textfield_should_return%28self%2Ctextfield%29%3A%5Cn%5Ct%5Ct%23%20Get%20the%20current%20path%20from%20the%20text%20field%5Cn%5Ct%5Ctself.path%20%3D%20textfield.text%5Cn%5Ct%5Ct%23%20Test%20to%20see%20if%20the%20new%20path%20is%20a%20valid%20directory...%5Cn%5Ct%5Cttry%3A%5Cn%5Ct%5Ct%5Ct%23%20If%20it%20is%2C%20build%20that%20directory%20and%20load%20it%20into%20the%20ListDataSource%20element%5Cn%5Ct%5Ct%5Cttextfield.superview.list_source.items%20%3D%20build_directory%28self.path%29%5Cn%5Ct%5Ctexcept%3A%5Cn%5Ct%5Ct%5Ct%23%20If%20it%20is%20not%20a%20valid%20path%2C%20alert%20the%20user%20and%20reset%20the%20path%20in%20the%20TextField%20to%20what%20it%20was%20previously%5Cn%5Ct%5Ct%5Ctconsole.hud_alert%28%27Directory%20%5C%5C%27%27%20%2B%20self.path%20%2B%20%27%5C%5C%27%20Does%20Not%20Seem%20To%20Exist%27%2C%20%27error%27%2C%205.0%29%5Cn%5Ct%5Ct%5Cttextfield.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ct%5Cttextfield.end_editing%28%29%5Cn%5Ct%23%20If%20keyboard%20is%20dismissed%20without%20return%20being%20hit%2C%20reset%20the%20path%20in%20the%20TextField%20to%20the%20current%20directory%5Cn%5Ctdef%20textfield_did_end_editing%28self%2Ctextfield%29%3A%5Cn%5Ct%5Cttextfield.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ct%5Ct%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20File%20Label%20Delegate%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cnclass%20file_label_delegate%28%29%3A%5Cn%5Ctdef%20__init__%28self%2C%20textview%2C%20type%29%3A%5Cn%5Ct%5Ctself.type%20%3D%20type%5Cn%5Ctdef%20textview_should_begin_editing%28self%2C%20textview%29%3A%5Cn%5Ct%5Ctreturn%20True%5Cn%5Ctdef%20textview_did_begin_editing%28self%2C%20textview%29%3A%5Cn%5Ct%5Ctif%20self.type%20%3D%3D%20%27upload%27%3A%5Cn%5Ct%5Ct%5Cttextview.text%20%3D%20%27filename.txt%27%5Cn%5Ct%5Ctelif%20self.type%20%3D%3D%20%27new_folder%27%3A%5Cn%5Ct%5Ct%5Cttextview.text%20%3D%20%27foldername%27%5Cn%5Ct%5Ctelif%20self.type%20%3D%3D%20%27new_image%27%3A%5Cn%5Ct%5Ct%5Cttextview.text%20%3D%20%27imagename.png%27%5Cn%5Ctdef%20textview_did_end_editing%28self%2C%20textview%29%3A%5Cn%5Ct%5Cttextview.text%20%3D%20textview.name%5Cn%5Ctdef%20textview_should_change%28self%2C%20textview%2C%20range%2C%20replacement%29%3A%5Cn%5Ct%5Ctreturn%20True%5Cn%5Ctdef%20textview_did_change%28self%2C%20textview%29%3A%5Cn%5Ct%5Ctif%20self.type%20%3D%3D%20%27upload%27%20or%20self.type%20%3D%3D%20%27new_folder%27%20or%20self.type%20%3D%3D%20%27new_image%27%3A%5Cn%5Ct%5Ct%5Cttextview.superview.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ct%5Ctif%20%27%5C%5Cn%27%20in%20textview.text%3A%5Cn%5Ct%5Ct%5Cttextview.text%20%3D%20textview.text.rstrip%28%27%5C%5Cn%27%29%5Cn%5Ct%5Ct%5Cttextview.end_editing%28%29%5Cn%5Ct%5Ct%5Ctif%20textview.superview.superview.secondary_button1.enabled%20%3D%3D%20True%3A%5Cn%5Ct%5Ct%5Ct%5Ctif%20self.type%20%3D%3D%20%27folder%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctrename_folder%28textview.superview.superview.secondary_button1%29%5Cn%5Ct%5Ct%5Ct%5Ctelif%20self.type%20%3D%3D%20%27file%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctrename_file%28textview.superview.superview.secondary_button1%29%5Cn%5Ct%5Ct%5Ct%5Ctelif%20self.type%20%3D%3D%20%27upload%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctupload_file_in_editor%28textview.superview.superview.secondary_button1%29%5Cn%5Ct%5Ct%5Ct%5Ctelif%20self.type%20%3D%3D%20%27new_folder%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctcreate_folder%28textview.superview.superview.secondary_button1%29%5Cn%5Ct%5Ct%5Ct%5Ctelif%20self.type%20%3D%3D%20%27new_image%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctupload_image%28textview.superview.superview.secondary_button1%29%5Cn%5Ct%5Ctif%20self.type%20%21%3D%20%27upload%27%20and%20self.type%20%21%3D%20%27new_folder%27%20and%20self.type%20%21%3D%20%27new_image%27%3A%5Cn%5Ct%5Ct%5Ctif%20textview.text%20%21%3D%20textview.name%3A%5Cn%5Ct%5Ct%5Ct%5Cttextview.superview.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Cttextview.superview.superview.secondary_button1.enabled%20%3D%20False%5Cn%5Ctdef%20textview_did_change_selection%28self%2C%20textview%29%3A%5Cn%5Ct%5Ctpass%5Cn%5Ct%5Ct%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20Move%20File%20Delegate%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cnclass%20move_delegate%28%29%3A%5Cn%5Ctdef%20tableview_did_select%28self%2C%20tableview%2C%20section%2C%20row%29%3A%5Cn%5Ct%5Ct%23%20Save%20title%20of%20tapped%20row%5Cn%5Ct%5Ctselection%20%3D%20tableview.data_source.items%5Brow%5D%5B%27title%27%5D%5Cn%5Ct%5Ct%23%20If%20selected%20item%20is%20a%20folder...%5Cn%5Ct%5Ctif%20tableview.data_source.items%5Brow%5D%5B%27accessory_type%27%5D%20%21%3D%20%27none%27%3A%5Cn%5Ct%5Ct%5Ct%23%20Build%20the%20new%20directory%5Cn%5Ct%5Ct%5Ctif%20tableview.superview.superview.move_path_field.text%5B-1%3A%5D%20%21%3D%20%27%2F%27%3A%5Cn%5Ct%5Ct%5Ct%5Cttableview.superview.superview.move_list_source.items%20%3D%20build_move_directory%28tableview.superview.superview.move_path_field.text%20%2B%20%27%2F%27%20%2B%20selection%29%5Cn%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Cttableview.superview.superview.move_list_source.items%20%3D%20build_directory%28tableview.superview.superview.move_path_field.text%20%2B%20selection%29%5Cn%5Ct%5Ct%5Ct%23%20Set%20text%20field%20to%20display%20new%20path%5Cn%5Ct%5Ct%5Cttableview.superview.superview.move_path_field.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ct%5Ct%5Cttableview.superview.superview.select_folder.title%20%3D%20%20%27Move%20to%20%5C%5C%27%27%20%2B%20tableview.superview.superview.move_path_field.text%20%2B%20%27%5C%5C%27%27%5Cn%5Ct%5Ct%5Ct%23%20Enable%20the%20back%20button%20if%20you%20are%20no%20longer%20on%20the%20top%20level%20directory%5Cn%5Ct%5Ct%5Ctif%20tableview.superview.superview.move_path_field.text%20%21%3D%20%27%2F%27%3A%5Cn%5Ct%5Ct%5Ct%5Cttableview.superview.superview.move_back_button.enabled%20%3D%20True%5Cn%5Cn%23%20Build%20directory%20to%20be%20displayed%20in%20rows%20of%20TableView%20for%20moving%20files%5Cndef%20build_move_directory%28path%3Dparams%5B%27Initial_Path%27%5D%29%3A%5Cn%5Ct%23%20Get%20directory%20as%20dictionary%20with%20keys%20marking%20items%20as%20files%20or%20folders%5Cn%5Ctlist_items%20%3D%20ftp.directory_with_types%28path%29%5Cn%5Ctsource_list%20%3D%20%5B%5D%5Cn%5Ct%23%20Pull%20data%20from%20list_items%20and%20prepare%20a%20list%20of%20dictionaries%20readable%20by%20ListDataSource%20element%5Cn%5Ctfor%20item%20in%20list_items%3A%5Cn%5Ct%5Ctd%20%3D%20%7B%7D%5Cn%5Ct%5Ctd%5B%27title%27%5D%20%3D%20list_items%5Bitem%5D%5B%27title%27%5D%5Cn%5Ct%5Ct%23%20For%20files%2C%20do%20not%20include%20accessory%20action%20icons%20in%20their%20rows%2C%20but%20mark%20them%20with%20file%20icons%5Cn%5Ct%5Ctif%20list_items%5Bitem%5D%5B%27type%27%5D%20%3D%3D%20%27file%27%3A%5Cn%5Ct%5Ct%5Ctd%5B%27accessory_type%27%5D%20%3D%20%27none%27%5Cn%5Ct%5Ct%5Ctd%5B%27image%27%5D%20%3D%20%27ionicons-document-24%27%5Cn%5Ct%5Ct%23%20For%20folders%2C%20add%20chevron%20arrow%20accessory%20action%20icons%20to%20rows%20and%20mark%20with%20folder%20icons%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctd%5B%27accessory_type%27%5D%20%3D%20%27disclosure_indicator%27%5Cn%5Ct%5Ct%5Ctd%5B%27image%27%5D%20%3D%20%27ionicons-folder-24%27%5Cn%5Ct%5Ct%23%20Add%20each%20prepared%20dictionary%20to%20overall%20list%20of%20dictionaries%5Cn%5Ct%5Ctif%20d%5B%27title%27%5D%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ctsource_list.append%28d%29%5Cn%5Ct%23%20Return%20list%20of%20dictionaries%20with%20all%20files%20and%20folders%20properly%20flagged%5Ct%5Cn%5Ctreturn%20source_list%5Cn%5Ct%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%23%23%23%23%20Move%20File%2FFolder%20Buttons%20%23%23%23%23%23%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cndef%20move_back_button_tapped%28sender%29%3A%5Cn%5Ct%23%20Get%20current%20path%5Cn%5Ctpath%20%3D%20sender.superview.superview.move_path_field.text%5Cn%5Ct%23%20Split%20the%20path%20at%20slashes%5Cn%5Ctpath%20%3D%20path.split%28%27%2F%27%29%5Cn%5Ctnew_path%20%3D%20%27%27%5Cn%5Ct%23%20Put%20the%20path%20back%20together%20with%20slashes%2C%20but%20leave%20the%20final%20path%20item%20removed%20%28path%20is%20back%20one%20level%29%5Cn%5Ctfor%20i%20in%20range%28len%28path%29%20-%201%29%3A%5Cn%5Ct%5Ctnew_path%20%2B%3D%20path%5Bi%5D%20%2B%20%27%2F%27%5Cn%5Ct%23%20Remove%20trailing%20backslash%2C%20unless%20you%20are%20in%20the%20top%20level%20directory%20%27%2F%27%5Cn%5Ctif%20len%28new_path%29%20%3E%201%3A%5Cn%5Ct%5Ctnew_path%20%3D%20new_path%5B%3A-1%5D%5Cn%5Ct%23%20Build%20the%20directory%20for%20the%20new%20path%20and%20send%20it%20to%20the%20ListDataSource%20element%5Cn%5Ctsender.superview.superview.move_list_source.items%20%3D%20build_move_directory%28new_path%29%5Cn%5Ct%23%20Adjust%20the%20title%20TextField%20to%20display%20the%20new%20path%5Cn%5Ctsender.superview.superview.move_path_field.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ctsender.superview.superview.select_folder.title%20%3D%20%27Move%20to%20%5C%5C%27%27%20%2B%20sender.superview.superview.move_path_field.text%20%2B%20%27%5C%5C%27%27%5Cn%5Ct%23%20If%20the%20new%20path%20leaves%20you%20at%20the%20top%20level%20directory%2C%20disable%20the%20back%20button%5Cn%5Ctif%20new_path%20%3D%3D%20%27%2F%27%3A%5Cn%5Ct%5Ctsender.enabled%20%3D%20False%5Cn%5Ct%5Ct%5Cndef%20move_cancel_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.move_table_view.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.move_back_button.hidden%20%3D%20True%5Cn%5Ctsender.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.select_folder.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.move_label_background.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.table_view.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.back_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.home_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.file_label.editable%20%3D%20False%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%23%23%23%23%20User%20Interface%20%23%23%23%23%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cnclass%20FTP_Client%28ui.View%29%3A%5Cn%5Ctdef%20__init__%28self%2Cdata_source%29%3A%5Cn%5Ct%5Ct%23%20Set%20up%20the%20view%5Cn%5Ct%5Ctself.bounds%20%3D%20%280%2C0%2C320%2C500%29%5Cn%5Ct%5Ctself.background_color%20%3D%20%27%23F6F6F6%27%5Cn%5Ct%5Ctself.name%20%3D%20%27FTP_Client%27%5Cn%5Ct%5Ct%23%20Set%20up%20the%20loading%20icon%5Cn%5Ct%5Ctself.loading_view%20%3D%20ui.ActivityIndicator%28%29%5Cn%5Ct%5Ctself.loading_view.center%20%3D%20%28self.width%20%2F%202%2C%20self.height%20%2F%202%29%5Cn%5Ct%5Ctself.loading_view.style%20%3D%20ui.ACTIVITY_INDICATOR_STYLE_GRAY%5Cn%5Ct%5Ctself.add_subview%28self.loading_view%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20TextField%20where%20the%20path%20will%20be%20displayed%5Cn%5Ct%5Ctself.path_field%20%3D%20ui.TextField%28%29%5Cn%5Ct%5Ctself.path_field.placeholder%20%3D%20%27%2F%27%5Cn%5Ct%5Ctself.path_field.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ct%5Ctself.path_field.frame%20%3D%20%2815%2C60%2Cself.width-30%2C32%29%20%23%20Define%20the%20field%27s%20coordinates%20and%20measurments%5Cn%5Ct%5Ctself.path_field.alignment%20%3D%20ui.ALIGN_CENTER%5Cn%5Ct%5Ctself.path_field.delegate%20%3D%20path_navigation_delegate%28%29%20%23%20Set%20up%20the%20TextField%27s%20delegate%5Cn%5Ct%5Ctself.add_subview%28self.path_field%29%5Cn%5Ct%5Ctnav_background%20%3D%20ui.Label%28%29%5Cn%5Ct%5Ctnav_background.frame%20%3D%20%2847%2C0%2Cself.width%2C50%29%5Cn%5Ct%5Ctnav_background.background_color%20%3D%20%27%23f0f0f0%27%5Cn%5Ct%5Ctnav_background.center%20%3D%20%28self.width%2F2%2C25%29%5Cn%5Ct%5Ctnav_background.alignment%20%3D%20ui.ALIGN_CENTER%5Cn%5Ct%5Ctnav_background.send_to_back%28%29%5Cn%5Ct%5Ctself.add_subview%28nav_background%29%5Cn%5Ct%5Cttitle%20%3D%20ui.Label%28%29%5Cn%5Ct%5Cttitle.text%20%3D%20params%5B%27FTP_Server%27%5D%20%23%20Text%20to%20display%20on%20title%20bar%5Cn%5Ct%5Cttitle.frame%20%3D%20%2847%2C0%2Cself.width-128%2C50%29%5Cn%5Ct%5Cttitle.background_color%20%3D%20%27%23f0f0f0%27%5Cn%5Ct%5Cttitle.center%20%3D%20%28self.width%2F2%2B15%2C25%29%5Cn%5Ct%5Cttitle.alignment%20%3D%20ui.ALIGN_CENTER%5Cn%5Ct%5Cttitle.send_to_back%28%29%5Cn%5Ct%5Ctself.add_subview%28title%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20back%20button%5Cn%5Ct%5Ctself.back_button%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.back_button.image%20%3D%20ui.Image.named%28%27ionicons-chevron-left-24%27%29%5Cn%5Ct%5Ctself.back_button.frame%20%3D%20%2810%2C10%2C32%2C32%29%5Cn%5Ct%5Ctself.back_button.font%20%3D%20%28%27%3Csystem%3E%27%2C%2025%29%5Cn%5Ct%5Ctself.back_button.action%20%3D%20back_button_tapped%20%23%20Set%20the%20back%20button%27s%20action%20to%20back_button_tapped%20function%5Cn%5Ct%5Ctself.add_subview%28self.back_button%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20plus%20button%5Cn%5Ct%5Ctself.plus_button%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.plus_button.image%20%3D%20ui.Image.named%28%27ionicons-plus-24%27%29%5Cn%5Ct%5Ctself.plus_button.frame%20%3D%20%28275%2C10%2C32%2C32%29%5Cn%5Ct%5Ctself.plus_button.font%20%3D%20%28%27%3Csystem%3E%27%2C%2025%29%5Cn%5Ct%5Ctself.plus_button.action%20%3D%20plus_button_tapped%20%23%20Set%20the%20plus%20button%27s%20action%20to%20plus_button_tapped%20function%5Cn%5Ct%5Ctself.add_subview%28self.plus_button%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20home%20button%5Cn%5Ct%5Ctself.home_button%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.home_button.image%20%3D%20ui.Image.named%28%27ionicons-home-24%27%29%5Cn%5Ct%5Ctself.home_button.frame%20%3D%20%2845%2C10%2C32%2C32%29%5Cn%5Ct%5Ctself.home_button.font%20%3D%20%28%27%3Csystem%3E%27%2C%2025%29%5Cn%5Ct%5Ctself.home_button.action%20%3D%20home_button_tapped%20%23%20Set%20the%20back%20button%27s%20action%20to%20back_button_tapped%20function%5Cn%5Ct%5Ctself.add_subview%28self.home_button%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20data%20source%20element%20for%20the%20TableView%5Cn%5Ct%5Ctself.list_source%20%3D%20ui.ListDataSource%28items%3D%5B%5D%29%5Cn%5Ct%5Ctself.list_source.move_enabled%20%3D%20False%5Cn%5Ct%5Ctself.list_source.delete_enabled%20%3D%20False%5Cn%5Ct%5Ctself.list_source.items%20%3D%20data_source%20%23%20Set%20data%20source%20to%20the%20element%20that%20will%20be%20passed%20into%20this%20class%20upon%20initiation%5Cn%5Ct%5Ct%23%20Set%20up%20the%20TableView%5Cn%5Ct%5Ctself.table_view%20%3D%20ui.TableView%28%29%5Cn%5Ct%5Ctself.table_view.row_height%20%3D%2044%5Cn%5Ct%5Ctself.table_view.delegate%20%3D%20navigation_delegate%28%29%20%23%20Link%20the%20navigation%20delegate%5Cn%5Ct%5Ctself.table_view.frame%20%3D%20%280%2C100%2Cself.width%2C%20self.height%20-%20100%29%5Cn%5Ct%5Ctself.table_view.flex%20%3D%20%27H%27%5Cn%5Ct%5Ctself.table_view.data_source%20%3D%20self.list_source%20%23%20Set%20the%20data%20source%20to%20the%20ListDataSource%20element%5Cn%5Ct%5Ctself.add_subview%28self.table_view%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20view%20for%20button%20actions%5Cn%5Ct%5Ctself.button_actions%20%3D%20ui.View%28%29%5Cn%5Ct%5Ctself.button_actions.bounds%20%3D%20%280%2C0%2C320%2C460%29%5Cn%5Ct%5Ctself.button_actions.center%20%3D%20%28self.width%2F2%2Cself.height%2F2%2B40%29%5Cn%5Ct%5Ctself.button_actions.background_color%20%3D%20%27%23f0f0f0%27%5Cn%5Ct%5Ctself.button_actions.name%20%3D%20%27button_actions%27%5Cn%5Ct%5Ctself.button_actions.flex%20%3D%20%27WH%27%5Cn%5Ct%5Ctself.button_actions.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.button_actions.hidden%20%3D%20True%20%23%20Hide%20view%20until%20needed%5Cn%5Ct%5Ctself.add_subview%28self.button_actions%29%5Cn%5Ct%5Ctself.label_background%20%3D%20ui.Label%28%29%5Cn%5Ct%5Ctself.label_background.text%20%3D%20%27%27%5Cn%5Ct%5Ctself.label_background.frame%20%3D%20%280%2C0%2Cself.width%2C50%29%5Cn%5Ct%5Ctself.label_background.center%20%3D%20%28self.width%2F2%2Cself.height%2F8-28%29%5Cn%5Ct%5Ctself.label_background.background_color%20%3D%20%27%23f8f8f8%27%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.label_background%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20title%20label%20to%20display%20which%20file%20was%20selected%5Cn%5Ct%5Ctself.file_label%20%3D%20ui.TextView%28%29%5Cn%5Ct%5Ctself.file_label.font%20%3D%20%28%27%3Csystem%3E%27%2C%2018%29%5Cn%5Ct%5Ctself.file_label.frame%20%3D%20%280%2C0%2Cself.width-55%2C45%29%5Cn%5Ct%5Ctself.file_label.center%20%3D%20%28self.width%2F2%2B25%2Cself.height%2F8-25%29%5Cn%5Ct%5Ctself.file_label.background_color%20%3D%20%27%23f8f8f8%27%5Cn%5Ct%5Ctself.file_label.alignment%20%3D%20ui.ALIGN_LEFT%5Cn%5Ct%5Ctself.file_label.editable%20%3D%20False%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.file_label%29%5Cn%5Ct%5Ctself.file_icon%20%3D%20ui.ImageView%28%29%5Cn%5Ct%5Ctself.file_icon.frame%20%3D%20%280%2C0%2C23%2C23%29%5Cn%5Ct%5Ctself.file_icon.center%20%3D%20%2830%2Cself.height%2F8-28%29%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.file_icon%29%5Cn%5Ct%5Ct%23%20Set%20up%20scroll%20view%20so%20all%20buttons%20can%20be%20accessed%20if%20keyboard%20is%20up%5Cn%5Ct%5Ctself.scroll_buttons%20%3D%20ui.ScrollView%28%29%5Cn%5Ct%5Ctself.scroll_buttons.frame%20%3D%20%280%2C58%2Cself.width%2C%20self.height%20-%20100%29%5Cn%5Ct%5Ctself.scroll_buttons.background_color%20%3D%20%27%23f0f0f0%27%5Cn%5Ct%5Ctself.scroll_buttons.flex%20%3D%20%27H%27%5Cn%5Ct%5Ctself.scroll_buttons.always_bounce_vertical%20%3D%20True%5Cn%5Ct%5Ctself.scroll_buttons.bounces%20%3D%20True%5Cn%5Ct%5Ctself.scroll_buttons.content_size%20%3D%20%28self.width%2C%20self.height%20-%20100%29%5Cn%5Ct%5Ctself.scroll_buttons.paging_enabled%20%3D%20True%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.scroll_buttons%29%5Cn%5Ct%5Ct%23%20Set%20up%20button1%5Cn%5Ct%5Ctself.button1%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.button1.frame%20%3D%20%280%2C15%2Cself.width%2F2.2%2C50%29%5Cn%5Ct%5Ctself.button1.center%20%3D%20%28self.width%2F4%2B3%2Cself.height%2F8-27%29%5Cn%5Ct%5Ctself.button1.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.scroll_buttons.add_subview%28self.button1%29%5Cn%5Ct%5Ct%23%20Set%20up%20button2%5Cn%5Ct%5Ctself.button2%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.button2.frame%20%3D%20%280%2C15%2Cself.width%2F2.2%2C50%29%5Cn%5Ct%5Ctself.button2.center%20%3D%20%28self.width%2F2%2B77%2Cself.height%2F8-27%29%5Cn%5Ct%5Ctself.button2.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.button2.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.scroll_buttons.add_subview%28self.button2%29%5Cn%5Ct%5Ct%23%20Set%20up%20button3%5Cn%5Ct%5Ctself.button3%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.button3.frame%20%3D%20%280%2C15%2Cself.width%2F2.2%2C50%29%5Cn%5Ct%5Ctself.button3.center%20%3D%20%28self.width%2F4%2B3%2Cself.height%2F8%2B32%29%5Cn%5Ct%5Ctself.button3.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.button3.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.scroll_buttons.add_subview%28self.button3%29%5Cn%5Ct%5Ct%23%20Set%20up%20button4%5Cn%5Ct%5Ctself.button4%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.button4.frame%20%3D%20%280%2C15%2Cself.width%2F2.2%2C50%29%5Cn%5Ct%5Ctself.button4.center%20%3D%20%28self.width%2F2%2B77%2Cself.height%2F8%2B32%29%5Cn%5Ct%5Ctself.button4.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.button4.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.scroll_buttons.add_subview%28self.button4%29%5Cn%5Ct%5Ct%23%20Set%20up%20button5%5Cn%5Ct%5Ctself.button5%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.button5.frame%20%3D%20%280%2C15%2Cself.width%2F2.2%2C50%29%5Cn%5Ct%5Ctself.button5.center%20%3D%20%28self.width%2F4%2B3%2Cself.height%2F8%2B91%29%5Cn%5Ct%5Ctself.button5.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.button5.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.scroll_buttons.add_subview%28self.button5%29%5Cn%5Ct%5Ct%23%20Set%20up%20button6%5Cn%5Ct%5Ctself.button6%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.button6.frame%20%3D%20%280%2C15%2Cself.width%2F2.2%2C50%29%5Cn%5Ct%5Ctself.button6.center%20%3D%20%28self.width%2F2%2B77%2Cself.height%2F8%2B91%29%5Cn%5Ct%5Ctself.button6.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.button6.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.scroll_buttons.add_subview%28self.button6%29%5Cn%5Ct%5Ct%23%20Set%20up%20button7%5Cn%5Ct%5Ctself.button7%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.button7.frame%20%3D%20%280%2C15%2Cself.width%2F2.2%2C50%29%5Cn%5Ct%5Ctself.button7.center%20%3D%20%28self.width%2F4%2B3%2Cself.height%2F8%2B150%29%5Cn%5Ct%5Ctself.button7.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.button7.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.scroll_buttons.add_subview%28self.button7%29%5Cn%5Ct%5Ct%23%20Set%20up%20button8%5Cn%5Ct%5Ctself.button8%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.button8.frame%20%3D%20%280%2C15%2Cself.width%2F2.2%2C50%29%5Cn%5Ct%5Ctself.button8.center%20%3D%20%28self.width%2F2%2B77%2Cself.height%2F8%2B150%29%5Cn%5Ct%5Ctself.button8.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.button8.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.scroll_buttons.add_subview%28self.button8%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20close%20button%20to%20dismiss%20the%20button%20actions%20view%5Cn%5Ct%5Ctself.close_button%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.close_button.title%20%3D%20%27Close%27%5Cn%5Ct%5Ctself.close_button.frame%20%3D%20%280%2C15%2Cself.width-20%2C50%29%5Cn%5Ct%5Ctself.close_button.center%20%3D%20%28self.width%2F2%2Cself.height%2F8%2B210%29%5Cn%5Ct%5Ctself.close_button.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.close_button.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.close_button.action%20%3D%20close_button_tapped%5Cn%5Ct%5Ctself.scroll_buttons.add_subview%28self.close_button%29%5Cn%5Ct%5Ct%23%20Set%20up%20view%20for%20secondary%20actions%5Cn%5Ct%5Ctself.secondary_actions%20%3D%20ui.View%28%29%5Cn%5Ct%5Ctself.secondary_actions.bounds%20%3D%20%280%2C0%2C320%2C460%29%5Cn%5Ct%5Ctself.secondary_actions.center%20%3D%20%28self.width%2F2%2Cself.height%2F2%2B40%29%5Cn%5Ct%5Ctself.secondary_actions.background_color%20%3D%20%27%23f0f0f0%27%5Cn%5Ct%5Ctself.secondary_actions.name%20%3D%20%27secondary_actions%27%5Cn%5Ct%5Ctself.secondary_actions.flex%20%3D%20%27WH%27%5Cn%5Ct%5Ctself.secondary_actions.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.secondary_actions.hidden%20%3D%20True%20%23%20Hide%20view%20until%20needed%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.secondary_actions%29%5Cn%5Ct%5Ct%23%20Set%20up%20Secondary%20button1%5Cn%5Ct%5Ctself.secondary_button1%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.secondary_button1.frame%20%3D%20%280%2C15%2Cself.width-21%2C50%29%5Cn%5Ct%5Ctself.secondary_button1.center%20%3D%20%28self.width%2F2%2Cself.height%2F8-29%29%5Cn%5Ct%5Ctself.secondary_button1.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.secondary_button1.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.secondary_actions.add_subview%28self.secondary_button1%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20cancel%20button%20to%20dismiss%20the%20secondary%20actions%20view%5Cn%5Ct%5Ctself.cancel_button%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.cancel_button.title%20%3D%20%27Cancel%27%5Cn%5Ct%5Ctself.cancel_button.frame%20%3D%20%280%2C15%2Cself.width-20%2C50%29%5Cn%5Ct%5Ctself.cancel_button.center%20%3D%20%28self.width%2F2%2C94%29%5Cn%5Ct%5Ctself.cancel_button.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.cancel_button.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.cancel_button.action%20%3D%20cancel_button_tapped%5Cn%5Ct%5Ctself.secondary_actions.add_subview%28self.cancel_button%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20data%20source%20element%20for%20the%20TableView%20for%20moving%20files%5Cn%5Ct%5Ctself.move_list_source%20%3D%20ui.ListDataSource%28items%3D%5B%5D%29%5Cn%5Ct%5Ctself.move_list_source.move_enabled%20%3D%20False%5Cn%5Ct%5Ctself.move_list_source.delete_enabled%20%3D%20False%5Cn%5Ct%5Ct%23%20Set%20up%20the%20TableView%20for%20Moving%20Files%5Cn%5Ct%5Ctself.move_table_view%20%3D%20ui.TableView%28%29%5Cn%5Ct%5Ctself.move_table_view.row_height%20%3D%2044%5Cn%5Ct%5Ctself.move_table_view.delegate%20%3D%20move_delegate%28%29%20%23%20Link%20the%20navigation%20delegate%20for%20moving%20files%5Cn%5Ct%5Ctself.move_table_view.frame%20%3D%20%280%2C127%2Cself.width%2C%20self.height%20-%20185%29%5Cn%5Ct%5Ctself.move_table_view.flex%20%3D%20%27H%27%5Cn%5Ct%5Ctself.move_table_view.data_source%20%3D%20self.move_list_source%20%23%20Set%20the%20data%20source%20to%20the%20ListDataSource%20element%5Cn%5Ct%5Ctself.move_table_view.hidden%20%3D%20True%5Cn%5Ct%5Ctself.move_table_view.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.move_table_view.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.move_table_view%29%5Cn%5Ct%5Ctself.move_label_background%20%3D%20ui.Label%28%29%5Cn%5Ct%5Ctself.move_label_background.text%20%3D%20%27%27%5Cn%5Ct%5Ctself.move_label_background.frame%20%3D%20%280%2C0%2Cself.width%2C170%29%5Cn%5Ct%5Ctself.move_label_background.center%20%3D%20%28self.width%2F2%2Cself.height%2F8-28%29%5Cn%5Ct%5Ctself.move_label_background.hidden%20%3D%20True%5Cn%5Ct%5Ctself.move_label_background.background_color%20%3D%20%27%23f0f0f0%27%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.move_label_background%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20button%20to%20select%20folder%20to%20move%20file%20into%5Cn%5Ct%5Ctself.select_folder%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.select_folder.frame%20%3D%20%280%2C0%2Cself.width-20%2C50%29%5Cn%5Ct%5Ctself.select_folder.center%20%3D%20%28self.width%2F2%2Cself.height%2F8-28%29%5Cn%5Ct%5Ctself.select_folder.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.select_folder.hidden%20%3D%20True%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.select_folder%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20back%20button%20for%20the%20move%20file%20view%5Cn%5Ct%5Ctself.move_back_button%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.move_back_button.image%20%3D%20ui.Image.named%28%27ionicons-chevron-left-24%27%29%5Cn%5Ct%5Ctself.move_back_button.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.move_back_button.frame%20%3D%20%2810%2C69%2C50%2C50%29%5Cn%5Ct%5Ctself.move_back_button.font%20%3D%20%28%27%3Csystem%3E%27%2C%2025%29%5Cn%5Ct%5Ctself.move_back_button.action%20%3D%20move_back_button_tapped%20%23%20Set%20the%20back%20button%27s%20action%20to%20move_back_button_tapped%20function%5Cn%5Ct%5Ctself.move_back_button.hidden%20%3D%20True%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.move_back_button%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20cancel%20button%20to%20dismiss%20the%20move%20file%20view%5Cn%5Ct%5Ctself.move_cancel_button%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.move_cancel_button.title%20%3D%20%27Cancel%27%5Cn%5Ct%5Ctself.move_cancel_button.frame%20%3D%20%280%2C15%2Cself.width-80%2C50%29%5Cn%5Ct%5Ctself.move_cancel_button.center%20%3D%20%28self.width%2F2%2B30%2Cself.height%2F8%2B31%29%5Cn%5Ct%5Ctself.move_cancel_button.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.move_cancel_button.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.move_cancel_button.action%20%3D%20move_cancel_button_tapped%5Cn%5Ct%5Ctself.move_cancel_button.hidden%20%3D%20True%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.move_cancel_button%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20TextField%20where%20the%20current%20path%20will%20be%20held%5Cn%5Ct%5Ctself.move_path_field%20%3D%20ui.TextField%28%29%5Cn%5Ct%5Ctself.move_path_field.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ct%5Ctself.move_path_field.hidden%20%3D%20True%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.move_path_field%29%5Cn%5Cn%23%20Build%20the%20initial%20directory%20and%20store%20it%20to%20the%20source_list%20variable%5Cnsource_list%20%3D%20build_directory%28%29%5Cn%5Cn%23%20Initiate%20the%20view%20and%20pass%20it%20the%20source_list%5Cnview%20%3D%20FTP_Client%28source_list%29%5Cn%23%20Present%20the%20view%20in%20a%20popover%5Cnview.present%28style%20%3D%20%27popover%27%2C%20hide_title_bar%20%3D%20True%29%5Cn%22%2C%20%2226DF96A7-B364-42B8-93AE-439D0650676A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A9D399AD-1AE7-453D-9F37-9B66FE3DF0A9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%227C719344-C891-4AB0-95AE-A113A91D1248%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%221E45370D-12DA-4162-BE1D-00E57FD826A1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%226BB5C954-DACE-44BC-BAA5-BA386343A159%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2293D7ECD9-8FF4-4ED4-910A-1024DFFA875F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223D76ECEE-8D86-4F1F-B6CE-161124D878F3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2215E08D0D-F62D-4AC0-92EF-A2809B7DFBB6%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F276A4A8-DABC-4867-A241-5D85D5A2F8D4%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229EF136C5-4458-4EC1-8B41-2CEC520138DB%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E4A933E5-76E4-4B94-8996-0AEEF41399E8%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%226A5B2A56-80C7-4E7B-8E2F-EBF2993ED68B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%226D17DF79-ECA4-4EF9-B5D2-1AAB32E34D11%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22DD306F77-489E-4A09-BAAD-01E9D233934E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ui%22%3A%20%22%5B%7B%5C%22class%5C%22%3A%5C%22View%5C%22%2C%5C%22attributes%5C%22%3A%7B%5C%22background_color%5C%22%3A%5C%22RGBA%281.000000%2C1.000000%2C1.000000%2C1.000000%29%5C%22%2C%5C%22tint_color%5C%22%3A%5C%22RGBA%280.000000%2C0.478000%2C1.000000%2C1.000000%29%5C%22%2C%5C%22enabled%5C%22%3Atrue%2C%5C%22border_color%5C%22%3A%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5C%22flex%5C%22%3A%5C%22%5C%22%7D%2C%5C%22frame%5C%22%3A%5C%22%7B%7B0%2C%200%7D%2C%20%7B540%2C%20575%7D%7D%5C%22%2C%5C%22nodes%5C%22%3A%5B%7B%5C%22class%5C%22%3A%5C%22View%5C%22%2C%5C%22attributes%5C%22%3A%7B%5C%22name%5C%22%3A%5C%22view1%5C%22%2C%5C%22uuid%5C%22%3A%5C%22691D7635-ED21-47B1-BB0C-D03DF74DFA8B%5C%22%2C%5C%22enabled%5C%22%3Atrue%2C%5C%22border_color%5C%22%3A%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5C%22flex%5C%22%3A%5C%22%5C%22%7D%2C%5C%22frame%5C%22%3A%5C%22%7B%7B162%2C%20279%7D%2C%20%7B215%2C%2058%7D%7D%5C%22%2C%5C%22nodes%5C%22%3A%5B%5D%7D%2C%7B%5C%22class%5C%22%3A%5C%22Button%5C%22%2C%5C%22attributes%5C%22%3A%7B%5C%22font_size%5C%22%3A15%2C%5C%22enabled%5C%22%3Atrue%2C%5C%22flex%5C%22%3A%5C%22%5C%22%2C%5C%22font_bold%5C%22%3Afalse%2C%5C%22name%5C%22%3A%5C%22button1%5C%22%2C%5C%22uuid%5C%22%3A%5C%22891737B6-0D9F-4C3A-AABF-15D9B73D64AB%5C%22%2C%5C%22border_color%5C%22%3A%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5C%22title%5C%22%3A%5C%22Download%5C%22%7D%2C%5C%22frame%5C%22%3A%5C%22%7B%7B162%2C%20279%7D%2C%20%7B107%2C%2058%7D%7D%5C%22%2C%5C%22nodes%5C%22%3A%5B%5D%7D%2C%7B%5C%22class%5C%22%3A%5C%22Button%5C%22%2C%5C%22attributes%5C%22%3A%7B%5C%22font_size%5C%22%3A15%2C%5C%22enabled%5C%22%3Atrue%2C%5C%22flex%5C%22%3A%5C%22%5C%22%2C%5C%22font_bold%5C%22%3Afalse%2C%5C%22name%5C%22%3A%5C%22button2%5C%22%2C%5C%22uuid%5C%22%3A%5C%2293DF31A4-D186-45A9-8180-04EB9C517035%5C%22%2C%5C%22border_color%5C%22%3A%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5C%22title%5C%22%3A%5C%22Overwrite%5C%22%7D%2C%5C%22frame%5C%22%3A%5C%22%7B%7B270%2C%20279%7D%2C%20%7B107%2C%2058%7D%7D%5C%22%2C%5C%22nodes%5C%22%3A%5B%5D%7D%5D%7D%5D%22%2C%20%2268A2A40E-0E92-4737-8FF2-F176B3645CBC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22D4B85DD2-E06A-467A-9137-868147CB5EF5%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E48FCCAE-719D-4713-936F-4217132FB7F9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22BFEAA0EA-62A6-4DA4-976D-493B3F338463%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2207E5006D-CD8C-4383-8BE9-6A8D8F6CCC07%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22AA0729B7-4EA3-4539-98A3-9FA5550C5AF3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%5D%2C%20%22name%22%3A%20%22FTP_Client%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone9%2C4%22%2C%20%22systemVersion%22%3A%20%2213.1.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-transfer-upload-5.png%22%7D", "description": "This is a custom UI for Editorial which will present a fully featured FTP client in a popup window over the editor.\n\nAfter downloading you will need to tap the Info button next to the workflow, go to the Edit Workflow page, tap on the action block to expand it, and fill in your FTP login credentials in the variables below. Once you've done that just run it from the workflow menu and you should be set.", "title": "FTP_Client"}, {"url": "http://editorial-app.appspot.com/workflow/5847798767419392/ZX-MzKkUbyc", "workflow_data": {"username": "", "description": "This is a custom UI for Editorial which will present a fully featured FTP client in a popup window over the editor.\n\nAfter downloading you will need to tap the Info button next to the workflow, go to the Edit Workflow page, tap on the action block to expand it, and fill in your FTP login credentials in the variables below. Once you've done that just run it from the workflow menu and you should be set.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "FTP UI", "parameters": {"76A5A84D-0561-4834-856C-545D188ABC42": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "17F9FFEF-24E7-4B85-80AF-E6FFD48F26E9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "12CB7DEE-EEC1-4FCB-97BF-BBB95A56A03B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "17DDDC80-EB5C-4A4A-BE33-F29B1EA496A1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3DD56DC4-7B69-49DC-8A3B-2DB7A851AC30": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "D74B99FF-2F76-4624-9C02-A0E1785348A5": "", "F953659E-E15A-4FE6-82B4-1BB1CE613B3E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "DBA7A162-8790-4615-A5C1-EFF8EB870E0B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "350C4857-3A55-4278-A792-F144FA8B92F1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "D95E75B5-2181-465B-A147-20D14D1B88A7": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "7B2C7297-7737-47B0-8548-2F6579D63B3A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "AF803B87-F589-4DDF-8D61-888339533174": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "74EE867C-63BF-42F5-8F85-2AD1663D9528": "172.16.1.48", "E03DEE1B-0607-4EBE-9F82-434D690A3588": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "B42E2195-685F-4022-B61E-14A19BDACD7D": "angel_augusto", "9B35529B-8F25-4F88-A9B4-781FB250B846": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"placeholder": "/", "type": "basicText", "key": "D74B99FF-2F76-4624-9C02-A0E1785348A5", "title": "Initial_Path"}, {"placeholder": "ftp.example.com", "keyboardType": 3, "type": "basicText", "key": "74EE867C-63BF-42F5-8F85-2AD1663D9528", "title": "FTP_Server"}, {"placeholder": "guyot@unapologetic.io", "keyboardType": 7, "type": "basicText", "key": "B42E2195-685F-4022-B61E-14A19BDACD7D", "title": "FTP_Username"}, {"placeholder": "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022", "type": "basicText", "key": "FCF40D27-4DB7-4121-97F6-F968A900E92E", "title": "FTP_Password"}], "B8C377DB-C007-491E-9B69-9967410CC875": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "FCF40D27-4DB7-4121-97F6-F968A900E92E": "B2esaL1a", "6E695F21-0664-4FC9-920E-12821330B610": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "17E340BF-6CF0-45D7-AA81-F135B91DE224": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "BE013931-6B92-45BB-A3F9-5747D2BD1587": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9C3FFE2C-6C49-46C9-BD53-E5AAAE2BD8CA": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "6A2FC1A6-979E-4125-87D1-52EB38FC4527": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "ABBDEFCC-F896-4F7A-B35F-5023B651DD88": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "98F26812-BFCB-4DC1-8FC4-E7282BCAF39A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C8D3ACB2-86C1-479E-979E-666D5FE5BB97": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9E029915-8290-426B-9B8E-326654FA13DC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "6A5B2A56-80C7-4E7B-8E2F-EBF2993ED68B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "AD8FDF1C-B8D2-48EB-A547-37B910262AAB": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F2C3515D-1C29-423D-99C0-95B6FB4887DC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "95FA6C87-6EB6-4562-B4B0-38C99BF57114": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3A9BD136-9079-44AD-89C5-53D329731D83": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "1C7EAC87-52E9-42C6-A8C7-18AB70F3FD23": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "6C12A397-2296-483B-BE29-87C6F9D8013B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "867B865E-787D-45E1-B3BF-64412F9D6FA4": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "6CC50A85-8999-47B5-B830-88C48A0443AB": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "BE54AC05-8D78-4F95-822A-AC4907F58791": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "2D8A39CF-8976-4772-A439-9A46FA9C79D3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "2B5E2C3D-F83E-4B48-B316-FFC6DC26E26A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "DBD9CAA1-1A12-4ABE-A9C7-EBBF0D77357E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "CF4A2FE6-4960-4F51-BAE9-3218272C1C6E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "25171F4E-EB9B-47E7-9902-E3ED071C0362": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8913248B-FE4C-4839-BD1E-22533BA6586B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9D387E48-805E-46E4-83A9-30876058FD42": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "90D8071E-9FC5-4FFA-94E6-0BC3006E4236": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "77021432-36A0-48A7-8A82-9C4609E71B23": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "68AE2162-AF92-4CE6-B5E5-A99BA2D7CFB9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "FC89D8BA-5448-455D-BBAC-21F1F0775A66": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E34AD0C6-2E7C-46DF-8E5C-A61D619E4063": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C4ACD630-2532-48C6-88DE-EA95FB7FA074": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C57929EE-43A1-4384-BF54-95AF57E3552A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "010A0730-7B55-419F-AD63-86DAE22BCFF3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "93D9F4AF-C4DB-4E00-A32E-52AE27A1E174": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "BEA876CA-3C94-415F-B229-B5DAC3A68DD7": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "1E06CA8B-C928-4F60-8418-D04B6D3E0AA3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "0FE68B9D-5A5D-4746-94A6-E183EEC712E1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E6FC01C2-5EB7-4867-B73C-FA4A657FE032": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "#coding: utf-8\nimport workflow\nimport ui\nimport console\nimport editor\nimport time\nimport clipboard\nimport photos\nfrom PIL import Image\nfrom io import BytesIO\nimport webbrowser\nfrom ftplib import FTP\n\n# Get the custom parameters as a dictionary (titles are keys):\nparams = workflow.get_parameters()\n# Get the action's input (a string):\naction_in = workflow.get_input()\n\n##############################\n##### FTP Protocol Class #####\n##############################\n\nclass FTP_Instance:\n\tdef __init__(self):\n\t\tself.initial_path = params['Initial_Path']\n\t\tself.ftp = FTP(params['FTP_Server'])\n\t\tself.ftp.login(params['FTP_Username'], params['FTP_Password'])\n\t\tself.ftp.cwd(self.initial_path)\n\n\tdef open_file(self, filename, path):\n\t\tself.ftp.cwd(path)\n\t\ttemp = open('temp', \"wb\")\n\t\tself.ftp.retrbinary('RETR ' + filename, temp.write)\n\t\ttemp.close()\n\t\tread = open('temp', 'r')\n\t\tfile_contents = read.read()\n\t\tread.close()\n\t\treturn file_contents\n\n\tdef check_file_exists(self, filename, path):\n\t\texisting_files = self.ftp.nlst(path)\n\t\treturn filename in existing_files\n\t\t\n\tdef mkd(self, path):\n\t\tchecked_path = ''\n\t\tdirectories = path[1:].split('/')\n\t\tself.ftp.cwd(self.initial_path)\n\t\tfor i in range(len(directories)):\n\t\t\tcurrent_dir = self.ftp.nlst(self.initial_path + checked_path)\n\t\t\tif directories[i] in current_dir:\n\t\t\t\tchecked_path += '/' + directories[i]\n\t\t\t\tself.ftp.cwd(self.initial_path + checked_path)\n\t\t\telse:\n\t\t\t\tchecked_path += '/' + directories[i]\n\t\t\t\tself.ftp.mkd(self.initial_path + checked_path)\n\t\t\t\tself.ftp.cwd(self.initial_path + checked_path)\n\t\t\n\tdef overwrite_file(self, filename, text, path):\n\t\tself.ftp.cwd(path)\n\t\tfile = open('temp', 'w')\n\t\tfile.write(text)\n\t\tfile.close()\n\t\tfile = open('temp', 'r')\n\t\tself.ftp.cwd(path)\n\t\tself.ftp.storbinary('STOR ' + filename, file)\n\t\tif text != self.open_file(filename,path):\n\t\t\tconsole.hud_alert('File Overwrite Failed', 'error', 5.0)\n\t\telse:\n\t\t\tconsole.hud_alert('File Overwritten', 'success', 5.0)\n\t\tfile.close()\n\t\n\tdef upload_image(self, imagename, path):\n\t\timage = photos.pick_image()\n\t\tbuffer = BytesIO()\n\t\timage.save(buffer, 'PNG')\n\t\tbuffer.seek(0)\n\t\tself.ftp.cwd(path)\n\t\tself.ftp.storbinary('STOR ' + imagename, buffer)\n\t\n\tdef create_and_upload_file(self, filename, text, path):\n\t\tfile = open('temp', 'w')\n\t\tfile.write(text)\n\t\tfile.close()\n\t\tfile = open('temp', 'r')\n\t\tself.upload_file(file, filename, path)\n\t\tfile.close()\n\n\tdef upload_file(self, file, filename, path):\n\t\tif path != '':\n\t\t\tself.mkd(path)\n\t\tself.ftp.cwd(path)\n\t\tself.ftp.storbinary('STOR ' + filename, file)\n\n\tdef print_directory(self, path):\n\t\tprint self.ftp.nlst(path)\n\t\t\n\tdef duplicate_file(self, filename, path):\n\t\ti = 1\n\t\tfind_extension = filename.split('.')\n\t\tnew_filename = ''\n\t\tfor n in range(len(find_extension)-1):\n\t\t\tnew_filename += find_extension[n] + '.'\n\t\tnew_filename = new_filename[:-1]\n\t\tcheck_filename = new_filename + '-' + str(i) + '.' + find_extension[n+1]\n\t\tfile_contents = self.open_file(filename, path)\n\t\twhile self.check_file_exists(check_filename, path):\n\t\t\ti += 1\n\t\t\tcheck_filename = new_filename + '-' + str(i) + '.' + find_extension[n+1]\n\t\tself.create_and_upload_file(check_filename, file_contents, path)\n\t\t\n\tdef duplicate_folder(self, foldername, path):\n\t\ti = 1\n\t\tnew_foldername = foldername + '-' + str(i)\n\t\twhile self.check_file_exists(new_foldername, path):\n\t\t\ti += 1\n\t\t\tnew_foldername = foldername + '-' + str(i)\n\t\tself.ftp.mkd(path + '/' + new_foldername)\n\t\t# Get directory to duplicate as dictionary with keys marking items as files or folders\n\t\tdir_items = ftp.directory_with_types(path + '/' + foldername)\n\t\tfor item in dir_items:\n\t\t\tif dir_items[item]['type'] == 'file':\n\t\t\t\tfile_contents = self.open_file(dir_items[item]['title'], path + '/' + foldername)\n\t\t\t\tself.create_and_upload_file(dir_items[item]['title'], file_contents, path + '/' + new_foldername)\n\t\t\telse:\n\t\t\t\tif dir_items[item]['title'][:1] != '.':\n\t\t\t\t\tself.ftp.mkd(path + '/' + new_foldername + '/' + dir_items[item]['title'])\n\t\t\t\t\titems_in_folder = self.ftp.nlst(path + '/' + foldername + '/' + dir_items[item]['title'])\n\t\t\t\t\titems_to_duplicate = False\n\t\t\t\t\tfor folderitem in items_in_folder:\n\t\t\t\t\t\tif folderitem[:1] != '.':\n\t\t\t\t\t\t\titems_to_duplicate = True\n\t\t\t\t\tif items_to_duplicate == True:\n\t\t\t\t\t\tself.duplicate_folder_helper(dir_items[item]['title'], path + '/' + foldername, path + '/' + new_foldername)\n\t# Helper action\n\tdef duplicate_folder_helper(self, foldername, from_path, to_path):\n\t\t# Get directory to duplicate as dictionary with keys marking items as files or folders\n\t\tdir_items = ftp.directory_with_types(from_path + '/' + foldername)\n\t\tfor item in dir_items:\n\t\t\tif dir_items[item]['type'] == 'file':\n\t\t\t\tfile_contents = self.open_file(dir_items[item]['title'], from_path + '/' + foldername)\n\t\t\t\tself.create_and_upload_file(dir_items[item]['title'], file_contents, to_path + '/' + foldername)\n\t\t\telse:\n\t\t\t\tif dir_items[item]['title'][:1] != '.':\n\t\t\t\t\tself.ftp.mkd(to_path + '/' + foldername + '/' + dir_items[item]['title'])\n\t\t\t\t\titems_in_folder = self.ftp.nlst(from_path + '/' + foldername + '/' + dir_items[item]['title'])\n\t\t\t\t\titems_to_duplicate = False\n\t\t\t\t\tfor folderitem in items_in_folder:\n\t\t\t\t\t\tif folderitem[:1] != '.':\n\t\t\t\t\t\t\titems_to_duplicate = True\n\t\t\t\t\tif items_to_duplicate == True:\n\t\t\t\t\t\tself.duplicate_folder_helper(dir_items[item]['title'], from_path + '/' + foldername, to_path + '/' + foldername)\n\n\tdef move_file(self, filename, from_path, to_path):\n\t\tif not self.check_file_exists(filename, to_path):\n\t\t\tfile_contents = self.open_file(filename, from_path)\n\t\t\tself.create_and_upload_file(filename, file_contents, to_path)\n\t\t\tif self.check_file_exists(filename, to_path):\n\t\t\t\tif self.open_file(filename, to_path) == file_contents:\n\t\t\t\t\tself.ftp.cwd(from_path)\n\t\t\t\t\tself.ftp.delete(filename)\n\t\telse:\n\t\t\tconsole.hud_alert('File with same name already exists in this location', 'error', 5.0)\n\t\t\t\n\tdef move_folder(self, foldername, from_path, to_path):\n\t\tall_files_moved = True\n\t\tif not self.check_file_exists(foldername, to_path):\n\t\t\tself.ftp.mkd(to_path + '/' + foldername)\n\t\t\t# Get directory of folder contents to be moved\n\t\t\tdir_items = ftp.directory_with_types(from_path + '/' + foldername)\n\t\t\tfor item in dir_items:\n\t\t\t\tif dir_items[item]['type'] == 'file':\n\t\t\t\t\tfile_contents = self.open_file(dir_items[item]['title'], from_path + '/' + foldername)\n\t\t\t\t\tself.create_and_upload_file(dir_items[item]['title'], file_contents, to_path + '/' + foldername)\n\t\t\t\t\tif not self.check_file_exists(dir_items[item]['title'], to_path + '/' + foldername):\n\t\t\t\t\t\tall_files_moved = False\n\t\t\t\t\t\tprint 'false'\n\t\t\t\telse:\n\t\t\t\t\tif dir_items[item]['title'][:1] != '.':\n\t\t\t\t\t\tself.ftp.mkd(to_path + '/' + foldername + '/' + dir_items[item]['title'])\n\t\t\t\t\t\titems_in_folder = self.ftp.nlst(from_path + '/' + foldername + '/' + dir_items[item]['title'])\n\t\t\t\t\t\titems_to_duplicate = False\n\t\t\t\t\t\tfor folderitem in items_in_folder:\n\t\t\t\t\t\t\tif folderitem[:1] != '.':\n\t\t\t\t\t\t\t\titems_to_duplicate = True\n\t\t\t\t\t\tif items_to_duplicate == True:\n\t\t\t\t\t\t\tself.duplicate_folder_helper(dir_items[item]['title'], from_path + '/' + foldername, to_path + '/' + foldername)\n\t\telse:\n\t\t\tconsole.hud_alert('Folder of same name already exists in this location', 'error', 5.0)\n\t\t\treturn\n\t\tif all_files_moved:\n\t\t\tself.delete_folder(foldername, from_path)\n\t\telse:\n\t\t\tconsole.hud_alert('All files may not have been moved', 'error')\n\t\t\t\t\t\t\t\n\tdef delete_folder(self, foldername, path):\n\t\tftp.delete_folder_helper(path + '/' + foldername)\n\t\tftp.ftp.cwd(path)\n\t\tftp.ftp.rmd(foldername)\n\t# Helper action\n\tdef delete_folder_helper(self, path):\n\t\tself.ftp.cwd(path)\n\t\tdir_items = ftp.directory_with_types(path)\n\t\tfor item in dir_items:\n\t\t\tif dir_items[item]['type'] == 'file':\n\t\t\t\tself.ftp.delete(dir_items[item]['title'])\n\t\t\telse:\n\t\t\t\tif dir_items[item]['title'][:1] != '.':\n\t\t\t\t\titems_in_folder = self.ftp.nlst(path + '/' + dir_items[item]['title'])\n\t\t\t\t\titems_inside = False\n\t\t\t\t\tfor folderitem in items_in_folder:\n\t\t\t\t\t\tif folderitem[:1] != '.':\n\t\t\t\t\t\t\titems_inside = True\n\t\t\t\t\tif items_inside == True:\n\t\t\t\t\t\tsave_path = path\n\t\t\t\t\t\tself.delete_folder_helper(path + '/' + dir_items[item]['title'])\n\t\t\t\t\t\tself.ftp.cwd(save_path)\n\t\t\t\t\t\tself.ftp.rmd(dir_items[item]['title'])\n\t\t\t\t\telse:\n\t\t\t\t\t\tself.ftp.rmd(dir_items[item]['title'])\n\t\t\n\tdef directory_with_types(self, path):\n\t\ti = 0\n\t\tdirectory_list = []\n\t\tdirectory_dict = {}\n\t\ttitle_list = self.ftp.nlst(path)\n\t\tself.ftp.cwd(path)\n\t\tself.ftp.retrlines('LIST', callback=directory_list.append)\n\t\tfor item in directory_list:\n\t\t\tif i < len(title_list):\n\t\t\t\tlisting = {}\n\t\t\t\tif item.upper().startswith('D'):\n\t\t\t\t\tlisting['type'] = 'folder'\n\t\t\t\telse:\n\t\t\t\t\tlisting['type'] = 'file'\n\t\t\t\tdirectory_dict[i] = listing\n\t\t\t\tdirectory_dict[i]['title'] = title_list[i]\n\t\t\t\ti += 1\n\t\treturn directory_dict\n\n\tdef quit(self):\n\t\tself.ftp.quit()\n\n##########################\n##### FTP UI Client ######\n##########################\n\n# Initiate FTP Connection\nftp = FTP_Instance()\n\n# Build directory to be displayed in rows of file manager\ndef build_directory(path=params['Initial_Path']):\n\t# Get directory as dictionary with keys marking items as files or folders\n\tlist_items = ftp.directory_with_types(path)\n\tsource_list = []\n\t# Pull data from list_items and prepare a list of dictionaries readable by ListDataSource element\n\tfor item in list_items:\n\t\td = {}\n\t\td['title'] = list_items[item]['title']\n\t\t# For files, do not include accessory action icons in their rows, but mark them with file icons\n\t\tif list_items[item]['type'] == 'file':\n\t\t\td['accessory_type'] = 'none'\n\t\t\td['image'] = 'ionicons-document-24'\n\t\t# For folders, add chevron arrow accessory action icons to rows and mark with folder icons\n\t\telse:\n\t\t\td['accessory_type'] = 'detail_disclosure_button'\n\t\t\td['image'] = 'ionicons-folder-24'\n\t\t# Add each prepared dictionary to overall list of dictionaries\n\t\tif d['title'][:1] != '.':\n\t\t\tsource_list.append(d)\n\t# Return list of dictionaries with all files and folders properly flagged\t\n\treturn source_list\n\n###############\n# Back Button #\n###############\n# Action to be run when user taps the back button in the top left of the UI\ndef back_button_tapped(sender):\n\tif not sender.superview.secondary_actions.hidden:\n\t\tsender.superview.secondary_actions.hidden = True\n\t\tsender.superview.secondary_button1.enabled = True\n\t\tsender.superview.file_label.editable = False\n\t\tbutton_actions_closed = False\n\telif not sender.superview.button_actions.hidden:\n\t\tsender.superview.plus_button.enabled = True\n\t\tsender.superview.button_actions.hidden = True\n\t\tsender.superview.file_label.editable = False\n\t\tbutton_actions_closed = False\n\t\tif sender.superview.path_field.text == '/':\n\t\t\tsender.superview.back_button.enabled = False\n\telse:\n\t\tbutton_actions_closed = True\n\t\n\tif button_actions_closed == True:\n\t\t# Get current path\n\t\tpath = sender.superview.path_field.text\n\t\t# Split the path at slashes\n\t\tpath = path.split('/')\n\t\tnew_path = ''\n\t\t# Put the path back together with slashes, but leave the final path item removed (path is back one level)\n\t\tfor i in range(len(path) - 1):\n\t\t\tnew_path += path[i] + '/'\n\t\t# Remove trailing backslash, unless you are in the top level directory '/'\n\t\tif len(new_path) > 1:\n\t\t\tnew_path = new_path[:-1]\n\t\t# Build the directory for the new path and send it to the ListDataSource element\n\t\tsender.superview.list_source.items = build_directory(new_path)\n\t\t# Adjust the title TextField to display the new path\n\t\tsender.superview.path_field.text = ftp.ftp.pwd()\n\t\t# If the new path leaves you at the top level directory, disable the back button\n\t\tif new_path == '/':\n\t\t\tsender.enabled = False\n\n###############\n# Plus Button #\n###############\ndef plus_button_tapped(sender):\n\tsender.superview.back_button.enabled = True\n\tsender.superview.button1.title = 'Upload File in Editor'\n\tsender.superview.button1.action = upload_file_in_editor\n\tsender.superview.button2.title = 'New folder'\n\tsender.superview.button2.action = new_folder\n\tsender.superview.button3.title = 'Upload Image'\n\tsender.superview.button3.action = upload_image_button_tapped\n\tsender.superview.button4.title = 'Run Custom Code'\n\tsender.superview.button5.title = 'Upload Dropbox File'\n\tsender.superview.button6.title = 'Upload Local File'\n\tsender.superview.button3.hidden = False\n\tsender.superview.button4.hidden = True\n\tsender.superview.button5.hidden = True\n\tsender.superview.button6.hidden = True\n\tsender.superview.button7.hidden = True\n\tsender.superview.button8.hidden = True\n\tsender.superview.file_icon.image = ui.Image.named('ionicons-plus-24')\n\tsender.superview.file_label.text = sender.superview.path_field.text\n\tsender.superview.button_actions.hidden = False\n\tsender.superview.plus_button.enabled = False\n\tsender.superview.close_button.center = (sender.superview.width/2,155)\n\tif sender.superview.height < 500:\n\t\tsender.superview.scroll_buttons.content_size = (sender.superview.width, 207)\n\tsender.superview.scroll_buttons.content_offset = (0,0)\n\t\n###############\n# Home Button #\n###############\ndef home_button_tapped(sender):\n\tif not sender.superview.secondary_actions.hidden:\n\t\tsender.superview.secondary_actions.hidden = True\n\t\tsender.superview.secondary_button1.enabled = True\n\t\tsender.superview.file_label.editable = False\n\tif not sender.superview.button_actions.hidden:\n\t\tsender.superview.plus_button.enabled = True\n\t\tsender.superview.button_actions.hidden = True\n\t\tsender.superview.file_label.editable = False\n\tsender.superview.back_button.enabled = True\n\tsender.superview.list_source.items = build_directory()\n\t# Adjust the title TextField to display the new path\n\tsender.superview.path_field.text = ftp.ftp.pwd()\n\n##########################\n##### Button Actions #####\n##########################\ndef close_button_tapped(sender):\n\tsender.superview.superview.superview.plus_button.enabled = True\n\tsender.superview.superview.hidden = True\n\ndef cancel_button_tapped(sender):\n\tsender.superview.hidden = True\n\tsender.superview.superview.superview.secondary_button1.enabled = True\n\tsender.superview.superview.superview.file_label.editable = False\n\t\ndef copy_path_button_tapped(sender):\n\tclipboard.set(sender.superview.superview.superview.path_field.text + '/' + sender.superview.superview.superview.file_label.text)\n\tconsole.hud_alert('Copied', 'success')\n\n#######################\n# Plus Button Actions #\n#######################\ndef upload_file_in_editor(sender):\n\tsender.superview.superview.superview.secondary_button1.enabled = False\n\tsender.superview.superview.superview.file_label.delegate = file_label_delegate(sender.superview.superview.superview.file_label, 'upload')\n\tsender.superview.superview.superview.file_label.editable = True\n\tsender.superview.superview.superview.file_label.name = sender.superview.superview.superview.file_label.text\n\tsender.superview.superview.superview.file_label.begin_editing()\n\tsender.superview.superview.superview.secondary_button1.title = 'Upload File'\n\tsender.superview.superview.superview.secondary_button1.action = upload_file\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary action\ndef upload_file(sender):\n\tfilename = sender.superview.superview.superview.file_label.text\n\ttext = editor.get_text()\n\tpath = sender.superview.superview.superview.path_field.text\n\tif not ftp.check_file_exists(sender.superview.superview.superview.file_label.text,sender.superview.superview.superview.path_field.text):\n\t\tftp.create_and_upload_file(filename, text, path)\n\t\tsender.superview.superview.superview.list_source.items = build_directory(sender.superview.superview.superview.path_field.text)\n\t\tsender.superview.hidden = True\n\t\tsender.superview.superview.hidden = True\n\t\tsender.superview.superview.superview.plus_button.enabled = True\n\t\tsender.superview.superview.superview.file_label.text = sender.superview.superview.superview.file_label.name\n\t\tsender.superview.superview.superview.secondary_button1.enabled = True\n\t\tsender.superview.superview.superview.file_label.editable = False\n\telse:\n\t\tconsole.hud_alert('File \\'' + sender.superview.superview.superview.file_label.text + '\\' Already Exists')\n\t\ndef new_folder(sender):\n\tsender.superview.superview.superview.secondary_button1.enabled = False\n\tsender.superview.superview.superview.file_label.delegate = file_label_delegate(sender.superview.superview.superview.file_label, 'new_folder')\n\tsender.superview.superview.superview.file_label.editable = True\n\tsender.superview.superview.superview.file_label.name = sender.superview.superview.superview.file_label.text\n\tsender.superview.superview.superview.file_label.begin_editing()\n\tsender.superview.superview.superview.secondary_button1.title = 'Create Folder'\n\tsender.superview.superview.superview.secondary_button1.action = create_folder\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary action\ndef create_folder(sender):\n\tfoldername = sender.superview.superview.superview.file_label.text\n\tpath = sender.superview.superview.superview.path_field.text + '/' + foldername\n\tif not ftp.check_file_exists(sender.superview.superview.superview.file_label.text,sender.superview.superview.superview.path_field.text):\n\t\tftp.ftp.mkd(path)\n\t\tsender.superview.superview.superview.list_source.items = build_directory(sender.superview.superview.superview.path_field.text)\n\t\tsender.superview.hidden = True\n\t\tsender.superview.superview.hidden = True\n\t\tsender.superview.superview.superview.plus_button.enabled = True\n\t\tsender.superview.superview.superview.file_label.text = sender.superview.superview.superview.file_label.name\n\t\tsender.superview.superview.superview.secondary_button1.enabled = True\n\t\tsender.superview.superview.superview.file_label.editable = False\n\telse:\n\t\tconsole.hud_alert('Folder \\'' + sender.superview.superview.superview.file_label.text + '\\' Already Exists')\n\t\t\ndef upload_image_button_tapped(sender):\n\tsender.superview.superview.superview.secondary_button1.enabled = False\n\tsender.superview.superview.superview.file_label.delegate = file_label_delegate(sender.superview.superview.superview.file_label, 'new_image')\n\tsender.superview.superview.superview.file_label.editable = True\n\tsender.superview.superview.superview.file_label.name = sender.superview.superview.superview.file_label.text\n\tsender.superview.superview.superview.file_label.begin_editing()\n\tsender.superview.superview.superview.secondary_button1.title = 'Show Image Picker'\n\tsender.superview.superview.superview.secondary_button1.action = upload_image\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary action\n@ui.in_background\ndef upload_image(sender):\n\timagename = sender.superview.superview.superview.file_label.text\n\tpath = sender.superview.superview.superview.path_field.text\n\tif not ftp.check_file_exists(sender.superview.superview.superview.file_label.text,sender.superview.superview.superview.path_field.text):\n\t\tftp.upload_image(imagename, path)\n\t\tsender.superview.superview.superview.list_source.items = build_directory(sender.superview.superview.superview.path_field.text)\n\t\tsender.superview.hidden = True\n\t\tsender.superview.superview.hidden = True\n\t\tsender.superview.superview.superview.plus_button.enabled = True\n\t\tsender.superview.superview.superview.file_label.text = sender.superview.superview.superview.file_label.name\n\t\tsender.superview.superview.superview.secondary_button1.enabled = True\n\t\tsender.superview.superview.superview.file_label.editable = False\n\telse:\n\t\tconsole.hud_alert('File \\'' + sender.superview.superview.superview.file_label.text + '\\' Already Exists')\n\n################\n# File Actions #\n################\ndef open_button_tapped(sender):\n\tfile_contents = ftp.open_file(sender.superview.superview.superview.file_label.text, sender.superview.superview.superview.path_field.text)\n\teditor.set_file_contents(sender.superview.superview.superview.file_label.text, file_contents, 'local')\n\twebbrowser.open('editorial://open/' + sender.superview.superview.superview.file_label.text + '?root=local')\n\tsender.superview.superview.superview.close()\n\ndef overwrite_button_tapped(sender):\n\tsender.superview.superview.superview.secondary_button1.title = 'Overwrite With File in Editor'\n\tsender.superview.superview.superview.secondary_button1.action = overwrite_with_file_in_editor\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary action\ndef overwrite_with_file_in_editor(sender):\n\tfilename = sender.superview.superview.superview.file_label.text\n\ttext = editor.get_text()\n\tpath = sender.superview.superview.superview.path_field.text\n\tftp.overwrite_file(filename, text, path)\n\tsender.superview.superview.superview.plus_button.enabled = True\n\tsender.superview.hidden = True\n\tsender.superview.superview.hidden = True\n\t\ndef rename_file_button_tapped(sender):\n\tsender.superview.superview.superview.secondary_button1.enabled = False\n\tsender.superview.superview.superview.file_label.delegate = file_label_delegate(sender.superview.superview.superview.file_label, 'file')\n\tsender.superview.superview.superview.file_label.editable = True\n\tsender.superview.superview.superview.file_label.name = sender.superview.superview.superview.file_label.text\n\tsender.superview.superview.superview.file_label.begin_editing()\n\tsender.superview.superview.superview.secondary_button1.title = 'Rename File'\n\tsender.superview.superview.superview.secondary_button1.action = rename_file\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary Action\ndef rename_file(sender):\n\tif not ftp.check_file_exists(sender.superview.superview.superview.file_label.text,sender.superview.superview.superview.path_field.text):\n\t\tftp.ftp.rename(sender.superview.superview.superview.file_label.name, sender.superview.superview.superview.file_label.text)\n\t\tsender.superview.superview.superview.list_source.items = build_directory(sender.superview.superview.superview.path_field.text)\n\t\tsender.superview.superview.superview.plus_button.enabled = True\n\t\tsender.superview.superview.superview.file_label.editable = False\n\t\tsender.superview.hidden = True\n\t\tsender.superview.superview.hidden = True\n\telse:\n\t\tconsole.hud_alert('File \\'' + sender.superview.superview.superview.file_label.text + '\\' Already Exists')\n\t\ndef delete_file_button_tapped(sender):\n\tsender.superview.superview.superview.secondary_button1.title = 'Permanently Delete File?'\n\tsender.superview.superview.superview.secondary_button1.action = permanently_delete_file\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary action\ndef permanently_delete_file(sender):\n\tftp.ftp.delete(sender.superview.superview.superview.file_label.text)\n\tsender.superview.superview.superview.list_source.items = build_directory(sender.superview.superview.superview.path_field.text)\n\tsender.superview.superview.superview.plus_button.enabled = True\n\tsender.superview.hidden = True\n\tsender.superview.superview.hidden = True\n\t\ndef move_file_button_tapped(sender):\n\tsender.superview.superview.superview.back_button.enabled = False\n\tsender.superview.superview.superview.home_button.enabled = False\n\tsender.superview.superview.superview.move_path_field.text = ftp.ftp.pwd()\n\tsender.superview.superview.superview.move_list_source.items = build_move_directory(sender.superview.superview.superview.move_path_field.text)\n\tsender.superview.superview.superview.select_folder.title = 'Move to \\'' + sender.superview.superview.superview.move_path_field.text + '\\''\n\tsender.superview.superview.superview.move_table_view.hidden = False\n\tsender.superview.superview.superview.move_back_button.hidden = False\n\tsender.superview.superview.superview.move_cancel_button.hidden = False\n\tsender.superview.superview.superview.select_folder.hidden = False\n\tsender.superview.superview.superview.select_folder.action = file_select_folder_button_tapped\n\tsender.superview.superview.superview.move_label_background.hidden = False\n\tsender.superview.superview.superview.table_view.hidden = True\n# Secondary action\ndef file_select_folder_button_tapped(sender):\n\tftp.move_file(sender.superview.superview.file_label.text, sender.superview.superview.path_field.text, sender.superview.superview.move_path_field.text)\n\tsender.superview.superview.list_source.items = build_directory(sender.superview.superview.path_field.text)\n\tsender.hidden = True\n\tsender.superview.hidden = True\n\tsender.superview.superview.plus_button.enabled = True\n\tsender.superview.superview.secondary_button1.enabled = True\n\tsender.superview.superview.file_label.editable = False\n\tsender.superview.superview.move_table_view.hidden = True\n\tsender.superview.superview.move_back_button.hidden = True\n\tsender.superview.superview.move_cancel_button.hidden = True\n\tsender.superview.superview.move_label_background.hidden = True\n\tsender.superview.superview.table_view.hidden = False\n\tsender.superview.superview.back_button.enabled = True\n\tsender.superview.superview.home_button.enabled = True\n\t\ndef duplicate_file_button_tapped(sender):\n\tsender.superview.superview.superview.secondary_button1.title = 'Duplicate File?'\n\tsender.superview.superview.superview.secondary_button1.action = duplicate_file\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary action\ndef duplicate_file(sender):\n\tftp.duplicate_file(sender.superview.superview.superview.file_label.text, sender.superview.superview.superview.path_field.text)\n\tsender.superview.superview.superview.list_source.items = build_directory(sender.superview.superview.superview.path_field.text)\n\tsender.superview.superview.superview.plus_button.enabled = True\n\tsender.superview.hidden = True\n\tsender.superview.superview.hidden = True\n\t\n##################\n# Folder Actions #\n##################\ndef rename_folder_button_tapped(sender):\n\tsender.superview.superview.superview.secondary_button1.enabled = False\n\tsender.superview.superview.superview.file_label.delegate = file_label_delegate(sender.superview.superview.superview.file_label, 'folder')\n\tsender.superview.superview.superview.file_label.editable = True\n\tsender.superview.superview.superview.file_label.name = sender.superview.superview.superview.file_label.text\n\tsender.superview.superview.superview.file_label.begin_editing()\n\tsender.superview.superview.superview.secondary_button1.title = 'Rename Folder'\n\tsender.superview.superview.superview.secondary_button1.action = rename_folder\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary action\ndef rename_folder(sender):\n\tif not ftp.check_file_exists(sender.superview.superview.superview.file_label.text,sender.superview.superview.superview.path_field.text):\n\t\tftp.ftp.rename(sender.superview.superview.superview.file_label.name, sender.superview.superview.superview.file_label.text)\n\t\tsender.superview.superview.superview.list_source.items = build_directory(sender.superview.superview.superview.path_field.text)\n\t\tsender.superview.superview.superview.plus_button.enabled = True\n\t\tsender.superview.superview.superview.file_label.editable = False\n\t\tsender.superview.hidden = True\n\t\tsender.superview.superview.hidden = True\n\telse:\n\t\tconsole.hud_alert('Folder \\'' + sender.superview.superview.superview.file_label.text + '\\' Already Exists')\n\ndef delete_folder_button_tapped(sender):\n\tsender.superview.superview.superview.secondary_button1.title = 'Delete Folder & Contents?'\n\tsender.superview.superview.superview.secondary_button1.action = permanently_delete_folder\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary action\ndef permanently_delete_folder(sender):\n\tftp.delete_folder(sender.superview.superview.superview.file_label.text, sender.superview.superview.superview.path_field.text)\n\tsender.superview.superview.superview.list_source.items = build_directory(sender.superview.superview.superview.path_field.text)\n\tsender.superview.superview.superview.plus_button.enabled = True\n\tsender.superview.hidden = True\n\tsender.superview.superview.hidden = True\n\ndef move_folder_button_tapped(sender):\n\tsender.superview.superview.superview.back_button.enabled = False\n\tsender.superview.superview.superview.home_button.enabled = False\n\tsender.superview.superview.superview.move_path_field.text = ftp.ftp.pwd()\n\tsender.superview.superview.superview.move_list_source.items = build_move_directory(sender.superview.superview.superview.move_path_field.text)\n\tsender.superview.superview.superview.select_folder.title = 'Move to \\'' + sender.superview.superview.superview.move_path_field.text + '\\''\n\tsender.superview.superview.superview.move_table_view.hidden = False\n\tsender.superview.superview.superview.move_back_button.hidden = False\n\tsender.superview.superview.superview.move_cancel_button.hidden = False\n\tsender.superview.superview.superview.select_folder.hidden = False\n\tsender.superview.superview.superview.select_folder.action = folder_select_folder_button_tapped\n\tsender.superview.superview.superview.move_label_background.hidden = False\n\tsender.superview.superview.superview.table_view.hidden = True\n# Secondary action\ndef folder_select_folder_button_tapped(sender):\n\tftp.move_folder(sender.superview.superview.file_label.text, sender.superview.superview.path_field.text, sender.superview.superview.move_path_field.text)\n\tsender.superview.superview.list_source.items = build_directory(sender.superview.superview.path_field.text)\n\tsender.hidden = True\n\tsender.superview.hidden = True\n\tsender.superview.superview.plus_button.enabled = True\n\tsender.superview.superview.secondary_button1.enabled = True\n\tsender.superview.superview.file_label.editable = False\n\tsender.superview.superview.move_table_view.hidden = True\n\tsender.superview.superview.move_back_button.hidden = True\n\tsender.superview.superview.move_cancel_button.hidden = True\n\tsender.superview.superview.move_label_background.hidden = True\n\tsender.superview.superview.table_view.hidden = False\n\tsender.superview.superview.back_button.enabled = True\n\tsender.superview.superview.home_button.enabled = True\n\t\ndef duplicate_folder_button_tapped(sender):\n\tsender.superview.superview.superview.secondary_button1.title = 'Duplicate Folder & Contents?'\n\tsender.superview.superview.superview.secondary_button1.action = duplicate_entire_folder\n\tsender.superview.superview.superview.secondary_actions.hidden = False\n# Secondary action\ndef duplicate_entire_folder(sender):\n\tftp.duplicate_folder(sender.superview.superview.superview.file_label.text, sender.superview.superview.superview.path_field.text)\n\tsender.superview.superview.superview.list_source.items = build_directory(sender.superview.superview.superview.path_field.text)\n\tsender.superview.superview.superview.plus_button.enabled = True\n\tsender.superview.hidden = True\n\tsender.superview.superview.hidden = True\n\t\n#####################\n##### Delegates #####\n#####################\n\n#######################\n# Navigation Delegate #\n#######################\nclass navigation_delegate():\n\tdef tableview_did_select(self, tableview, section, row):\n\t\t# Save title of tapped row\n\t\tselection = tableview.data_source.items[row]['title']\n\t\t# If selected item is a folder...\n\t\tif tableview.data_source.items[row]['accessory_type'] != 'none':\n\t\t\t# Build the new directory\n\t\t\tif tableview.superview.path_field.text[-1:] != '/':\n\t\t\t\ttableview.superview.list_source.items = build_directory(tableview.superview.path_field.text + '/' + selection)\n\t\t\telse:\n\t\t\t\ttableview.superview.list_source.items = build_directory(tableview.superview.path_field.text + selection)\n\t\t\t# Set text field to display new path\n\t\t\ttableview.superview.path_field.text = ftp.ftp.pwd()\n\t\t\t# Enable the back button if you are no longer on the top level directory\n\t\t\tif tableview.superview.path_field.text != '/':\n\t\t\t\ttableview.superview.back_button.enabled = True\n\t\t# If selected item is a file...\n\t\telse:\n\t\t\ttableview.superview.button1.title = 'Download & Open'\n\t\t\ttableview.superview.button1.action = open_button_tapped\n\t\t\ttableview.superview.button2.title = 'Overwrite File'\n\t\t\ttableview.superview.button2.action = overwrite_button_tapped\n\t\t\ttableview.superview.button3.title = 'Rename File'\n\t\t\ttableview.superview.button3.action = rename_file_button_tapped\n\t\t\ttableview.superview.button4.title = 'Delete File'\n\t\t\ttableview.superview.button4.action = delete_file_button_tapped\n\t\t\ttableview.superview.button5.title = 'Move File'\n\t\t\ttableview.superview.button5.action = move_file_button_tapped\n\t\t\ttableview.superview.button6.title = 'Duplicate File'\n\t\t\ttableview.superview.button6.action = duplicate_file_button_tapped\n\t\t\ttableview.superview.button7.title = 'Copy File Path'\n\t\t\ttableview.superview.button7.action = copy_path_button_tapped\n\t\t\ttableview.superview.button3.hidden = False\n\t\t\ttableview.superview.button4.hidden = False\n\t\t\ttableview.superview.button5.hidden = False\n\t\t\ttableview.superview.button6.hidden = False\n\t\t\ttableview.superview.button7.hidden = False\n\t\t\ttableview.superview.button8.hidden = True\n\t\t\ttableview.superview.file_icon.image = ui.Image.named('ionicons-document-24')\n\t\t\ttableview.superview.file_label.text = selection\n\t\t\ttableview.superview.button_actions.hidden = False\n\t\t\ttableview.superview.plus_button.enabled = False\n\t\t\ttableview.superview.back_button.enabled = True\n\t\t\ttableview.superview.close_button.center = (tableview.superview.width/2,272)\n\t\t\tif tableview.superview.height < 500:\n\t\t\t\ttableview.superview.scroll_buttons.content_size = (tableview.superview.width, 325)\n\t\t\ttableview.superview.scroll_buttons.content_offset = (0,0)\n\t\n\tdef tableview_accessory_button_tapped(self, tableview, section, row):\n\t\t# Save title of tapped row\n\t\tselection = tableview.data_source.items[row]['title']\n\t\ttableview.superview.button1.title = 'Rename Folder'\n\t\ttableview.superview.button1.action = rename_folder_button_tapped\n\t\ttableview.superview.button2.title = 'Delete Folder'\n\t\ttableview.superview.button2.action = delete_folder_button_tapped\n\t\ttableview.superview.button3.title = 'Move Folder'\n\t\ttableview.superview.button3.action = move_folder_button_tapped\n\t\ttableview.superview.button4.title = 'Duplicate Folder'\n\t\ttableview.superview.button4.action = duplicate_folder_button_tapped\n\t\ttableview.superview.button5.title = 'Copy Folder Path'\n\t\ttableview.superview.button5.action = copy_path_button_tapped\n\t\ttableview.superview.button3.hidden = False\n\t\ttableview.superview.button4.hidden = False\n\t\ttableview.superview.button5.hidden = False\n\t\ttableview.superview.button6.hidden = True\n\t\ttableview.superview.button7.hidden = True\n\t\ttableview.superview.button8.hidden = True\n\t\ttableview.superview.file_icon.image = ui.Image.named('ionicons-folder-24')\n\t\ttableview.superview.file_label.text = selection\n\t\ttableview.superview.button_actions.hidden = False\n\t\ttableview.superview.plus_button.enabled = False\n\t\ttableview.superview.back_button.enabled = True\n\t\ttableview.superview.close_button.center = (tableview.superview.width/2,213)\n\t\tif tableview.superview.height < 500:\n\t\t\ttableview.superview.scroll_buttons.content_size = (tableview.superview.width, 266)\n\t\ttableview.superview.scroll_buttons.content_offset = (0,0)\n\n#######################\n# Path Field Delegate #\n#######################\nclass path_navigation_delegate():\n\tdef textfield_should_begin_editing(self,textfield):\n\t\treturn True\n\t# When user hits return after editing TextField...\n\tdef textfield_should_return(self,textfield):\n\t\t# Get the current path from the text field\n\t\tself.path = textfield.text\n\t\t# Test to see if the new path is a valid directory...\n\t\ttry:\n\t\t\t# If it is, build that directory and load it into the ListDataSource element\n\t\t\ttextfield.superview.list_source.items = build_directory(self.path)\n\t\texcept:\n\t\t\t# If it is not a valid path, alert the user and reset the path in the TextField to what it was previously\n\t\t\tconsole.hud_alert('Directory \\'' + self.path + '\\' Does Not Seem To Exist', 'error', 5.0)\n\t\t\ttextfield.text = ftp.ftp.pwd()\n\t\ttextfield.end_editing()\n\t# If keyboard is dismissed without return being hit, reset the path in the TextField to the current directory\n\tdef textfield_did_end_editing(self,textfield):\n\t\ttextfield.text = ftp.ftp.pwd()\n\t\t\n#######################\n# File Label Delegate #\n#######################\nclass file_label_delegate():\n\tdef __init__(self, textview, type):\n\t\tself.type = type\n\tdef textview_should_begin_editing(self, textview):\n\t\treturn True\n\tdef textview_did_begin_editing(self, textview):\n\t\tif self.type == 'upload':\n\t\t\ttextview.text = 'filename.txt'\n\t\telif self.type == 'new_folder':\n\t\t\ttextview.text = 'foldername'\n\t\telif self.type == 'new_image':\n\t\t\ttextview.text = 'imagename.png'\n\tdef textview_did_end_editing(self, textview):\n\t\ttextview.text = textview.name\n\tdef textview_should_change(self, textview, range, replacement):\n\t\treturn True\n\tdef textview_did_change(self, textview):\n\t\tif self.type == 'upload' or self.type == 'new_folder' or self.type == 'new_image':\n\t\t\ttextview.superview.superview.secondary_button1.enabled = True\n\t\tif '\\n' in textview.text:\n\t\t\ttextview.text = textview.text.rstrip('\\n')\n\t\t\ttextview.end_editing()\n\t\t\tif textview.superview.superview.secondary_button1.enabled == True:\n\t\t\t\tif self.type == 'folder':\n\t\t\t\t\trename_folder(textview.superview.superview.secondary_button1)\n\t\t\t\telif self.type == 'file':\n\t\t\t\t\trename_file(textview.superview.superview.secondary_button1)\n\t\t\t\telif self.type == 'upload':\n\t\t\t\t\tupload_file_in_editor(textview.superview.superview.secondary_button1)\n\t\t\t\telif self.type == 'new_folder':\n\t\t\t\t\tcreate_folder(textview.superview.superview.secondary_button1)\n\t\t\t\telif self.type == 'new_image':\n\t\t\t\t\tupload_image(textview.superview.superview.secondary_button1)\n\t\tif self.type != 'upload' and self.type != 'new_folder' and self.type != 'new_image':\n\t\t\tif textview.text != textview.name:\n\t\t\t\ttextview.superview.superview.secondary_button1.enabled = True\n\t\t\telse:\n\t\t\t\ttextview.superview.superview.secondary_button1.enabled = False\n\tdef textview_did_change_selection(self, textview):\n\t\tpass\n\t\t\n#######################\n# Move File Delegate #\n#######################\nclass move_delegate():\n\tdef tableview_did_select(self, tableview, section, row):\n\t\t# Save title of tapped row\n\t\tselection = tableview.data_source.items[row]['title']\n\t\t# If selected item is a folder...\n\t\tif tableview.data_source.items[row]['accessory_type'] != 'none':\n\t\t\t# Build the new directory\n\t\t\tif tableview.superview.superview.move_path_field.text[-1:] != '/':\n\t\t\t\ttableview.superview.superview.move_list_source.items = build_move_directory(tableview.superview.superview.move_path_field.text + '/' + selection)\n\t\t\telse:\n\t\t\t\ttableview.superview.superview.move_list_source.items = build_directory(tableview.superview.superview.move_path_field.text + selection)\n\t\t\t# Set text field to display new path\n\t\t\ttableview.superview.superview.move_path_field.text = ftp.ftp.pwd()\n\t\t\ttableview.superview.superview.select_folder.title =  'Move to \\'' + tableview.superview.superview.move_path_field.text + '\\''\n\t\t\t# Enable the back button if you are no longer on the top level directory\n\t\t\tif tableview.superview.superview.move_path_field.text != '/':\n\t\t\t\ttableview.superview.superview.move_back_button.enabled = True\n\n# Build directory to be displayed in rows of TableView for moving files\ndef build_move_directory(path=params['Initial_Path']):\n\t# Get directory as dictionary with keys marking items as files or folders\n\tlist_items = ftp.directory_with_types(path)\n\tsource_list = []\n\t# Pull data from list_items and prepare a list of dictionaries readable by ListDataSource element\n\tfor item in list_items:\n\t\td = {}\n\t\td['title'] = list_items[item]['title']\n\t\t# For files, do not include accessory action icons in their rows, but mark them with file icons\n\t\tif list_items[item]['type'] == 'file':\n\t\t\td['accessory_type'] = 'none'\n\t\t\td['image'] = 'ionicons-document-24'\n\t\t# For folders, add chevron arrow accessory action icons to rows and mark with folder icons\n\t\telse:\n\t\t\td['accessory_type'] = 'disclosure_indicator'\n\t\t\td['image'] = 'ionicons-folder-24'\n\t\t# Add each prepared dictionary to overall list of dictionaries\n\t\tif d['title'][:1] != '.':\n\t\t\tsource_list.append(d)\n\t# Return list of dictionaries with all files and folders properly flagged\t\n\treturn source_list\n\t\n#####################################\n##### Move File/Folder Buttons ######\n#####################################\ndef move_back_button_tapped(sender):\n\t# Get current path\n\tpath = sender.superview.superview.move_path_field.text\n\t# Split the path at slashes\n\tpath = path.split('/')\n\tnew_path = ''\n\t# Put the path back together with slashes, but leave the final path item removed (path is back one level)\n\tfor i in range(len(path) - 1):\n\t\tnew_path += path[i] + '/'\n\t# Remove trailing backslash, unless you are in the top level directory '/'\n\tif len(new_path) > 1:\n\t\tnew_path = new_path[:-1]\n\t# Build the directory for the new path and send it to the ListDataSource element\n\tsender.superview.superview.move_list_source.items = build_move_directory(new_path)\n\t# Adjust the title TextField to display the new path\n\tsender.superview.superview.move_path_field.text = ftp.ftp.pwd()\n\tsender.superview.superview.select_folder.title = 'Move to \\'' + sender.superview.superview.move_path_field.text + '\\''\n\t# If the new path leaves you at the top level directory, disable the back button\n\tif new_path == '/':\n\t\tsender.enabled = False\n\t\t\ndef move_cancel_button_tapped(sender):\n\tsender.superview.hidden = True\n\tsender.superview.superview.move_table_view.hidden = True\n\tsender.superview.superview.move_back_button.hidden = True\n\tsender.hidden = True\n\tsender.superview.superview.select_folder.hidden = True\n\tsender.superview.superview.move_label_background.hidden = True\n\tsender.superview.superview.table_view.hidden = False\n\tsender.superview.superview.plus_button.enabled = True\n\tsender.superview.superview.back_button.enabled = True\n\tsender.superview.superview.home_button.enabled = True\n\tsender.superview.superview.secondary_button1.enabled = True\n\tsender.superview.superview.file_label.editable = False\n\n##########################\n##### User Interface #####\n##########################\nclass FTP_Client(ui.View):\n\tdef __init__(self,data_source):\n\t\t# Set up the view\n\t\tself.bounds = (0,0,320,500)\n\t\tself.background_color = '#F6F6F6'\n\t\tself.name = 'FTP_Client'\n\t\t# Set up the loading icon\n\t\tself.loading_view = ui.ActivityIndicator()\n\t\tself.loading_view.center = (self.width / 2, self.height / 2)\n\t\tself.loading_view.style = ui.ACTIVITY_INDICATOR_STYLE_GRAY\n\t\tself.add_subview(self.loading_view)\n\t\t# Set up the TextField where the path will be displayed\n\t\tself.path_field = ui.TextField()\n\t\tself.path_field.placeholder = '/'\n\t\tself.path_field.text = ftp.ftp.pwd()\n\t\tself.path_field.frame = (15,60,self.width-30,32) # Define the field's coordinates and measurments\n\t\tself.path_field.alignment = ui.ALIGN_CENTER\n\t\tself.path_field.delegate = path_navigation_delegate() # Set up the TextField's delegate\n\t\tself.add_subview(self.path_field)\n\t\tnav_background = ui.Label()\n\t\tnav_background.frame = (47,0,self.width,50)\n\t\tnav_background.background_color = '#f0f0f0'\n\t\tnav_background.center = (self.width/2,25)\n\t\tnav_background.alignment = ui.ALIGN_CENTER\n\t\tnav_background.send_to_back()\n\t\tself.add_subview(nav_background)\n\t\ttitle = ui.Label()\n\t\ttitle.text = params['FTP_Server'] # Text to display on title bar\n\t\ttitle.frame = (47,0,self.width-128,50)\n\t\ttitle.background_color = '#f0f0f0'\n\t\ttitle.center = (self.width/2+15,25)\n\t\ttitle.alignment = ui.ALIGN_CENTER\n\t\ttitle.send_to_back()\n\t\tself.add_subview(title)\n\t\t# Set up the back button\n\t\tself.back_button = ui.Button()\n\t\tself.back_button.image = ui.Image.named('ionicons-chevron-left-24')\n\t\tself.back_button.frame = (10,10,32,32)\n\t\tself.back_button.font = ('<system>', 25)\n\t\tself.back_button.action = back_button_tapped # Set the back button's action to back_button_tapped function\n\t\tself.add_subview(self.back_button)\n\t\t# Set up the plus button\n\t\tself.plus_button = ui.Button()\n\t\tself.plus_button.image = ui.Image.named('ionicons-plus-24')\n\t\tself.plus_button.frame = (275,10,32,32)\n\t\tself.plus_button.font = ('<system>', 25)\n\t\tself.plus_button.action = plus_button_tapped # Set the plus button's action to plus_button_tapped function\n\t\tself.add_subview(self.plus_button)\n\t\t# Set up the home button\n\t\tself.home_button = ui.Button()\n\t\tself.home_button.image = ui.Image.named('ionicons-home-24')\n\t\tself.home_button.frame = (45,10,32,32)\n\t\tself.home_button.font = ('<system>', 25)\n\t\tself.home_button.action = home_button_tapped # Set the back button's action to back_button_tapped function\n\t\tself.add_subview(self.home_button)\n\t\t# Set up the data source element for the TableView\n\t\tself.list_source = ui.ListDataSource(items=[])\n\t\tself.list_source.move_enabled = False\n\t\tself.list_source.delete_enabled = False\n\t\tself.list_source.items = data_source # Set data source to the element that will be passed into this class upon initiation\n\t\t# Set up the TableView\n\t\tself.table_view = ui.TableView()\n\t\tself.table_view.row_height = 44\n\t\tself.table_view.delegate = navigation_delegate() # Link the navigation delegate\n\t\tself.table_view.frame = (0,100,self.width, self.height - 100)\n\t\tself.table_view.flex = 'H'\n\t\tself.table_view.data_source = self.list_source # Set the data source to the ListDataSource element\n\t\tself.add_subview(self.table_view)\n\t\t# Set up the view for button actions\n\t\tself.button_actions = ui.View()\n\t\tself.button_actions.bounds = (0,0,320,460)\n\t\tself.button_actions.center = (self.width/2,self.height/2+40)\n\t\tself.button_actions.background_color = '#f0f0f0'\n\t\tself.button_actions.name = 'button_actions'\n\t\tself.button_actions.flex = 'WH'\n\t\tself.button_actions.alpha = 1.0\n\t\tself.button_actions.hidden = True # Hide view until needed\n\t\tself.add_subview(self.button_actions)\n\t\tself.label_background = ui.Label()\n\t\tself.label_background.text = ''\n\t\tself.label_background.frame = (0,0,self.width,50)\n\t\tself.label_background.center = (self.width/2,self.height/8-28)\n\t\tself.label_background.background_color = '#f8f8f8'\n\t\tself.button_actions.add_subview(self.label_background)\n\t\t# Set up the title label to display which file was selected\n\t\tself.file_label = ui.TextView()\n\t\tself.file_label.font = ('<system>', 18)\n\t\tself.file_label.frame = (0,0,self.width-55,45)\n\t\tself.file_label.center = (self.width/2+25,self.height/8-25)\n\t\tself.file_label.background_color = '#f8f8f8'\n\t\tself.file_label.alignment = ui.ALIGN_LEFT\n\t\tself.file_label.editable = False\n\t\tself.button_actions.add_subview(self.file_label)\n\t\tself.file_icon = ui.ImageView()\n\t\tself.file_icon.frame = (0,0,23,23)\n\t\tself.file_icon.center = (30,self.height/8-28)\n\t\tself.button_actions.add_subview(self.file_icon)\n\t\t# Set up scroll view so all buttons can be accessed if keyboard is up\n\t\tself.scroll_buttons = ui.ScrollView()\n\t\tself.scroll_buttons.frame = (0,58,self.width, self.height - 100)\n\t\tself.scroll_buttons.background_color = '#f0f0f0'\n\t\tself.scroll_buttons.flex = 'H'\n\t\tself.scroll_buttons.always_bounce_vertical = True\n\t\tself.scroll_buttons.bounces = True\n\t\tself.scroll_buttons.content_size = (self.width, self.height - 100)\n\t\tself.scroll_buttons.paging_enabled = True\n\t\tself.button_actions.add_subview(self.scroll_buttons)\n\t\t# Set up button1\n\t\tself.button1 = ui.Button()\n\t\tself.button1.frame = (0,15,self.width/2.2,50)\n\t\tself.button1.center = (self.width/4+3,self.height/8-27)\n\t\tself.button1.background_color = '#fff'\n\t\tself.scroll_buttons.add_subview(self.button1)\n\t\t# Set up button2\n\t\tself.button2 = ui.Button()\n\t\tself.button2.frame = (0,15,self.width/2.2,50)\n\t\tself.button2.center = (self.width/2+77,self.height/8-27)\n\t\tself.button2.background_color = '#fff'\n\t\tself.button2.alpha = 1.0\n\t\tself.scroll_buttons.add_subview(self.button2)\n\t\t# Set up button3\n\t\tself.button3 = ui.Button()\n\t\tself.button3.frame = (0,15,self.width/2.2,50)\n\t\tself.button3.center = (self.width/4+3,self.height/8+32)\n\t\tself.button3.background_color = '#fff'\n\t\tself.button3.alpha = 1.0\n\t\tself.scroll_buttons.add_subview(self.button3)\n\t\t# Set up button4\n\t\tself.button4 = ui.Button()\n\t\tself.button4.frame = (0,15,self.width/2.2,50)\n\t\tself.button4.center = (self.width/2+77,self.height/8+32)\n\t\tself.button4.background_color = '#fff'\n\t\tself.button4.alpha = 1.0\n\t\tself.scroll_buttons.add_subview(self.button4)\n\t\t# Set up button5\n\t\tself.button5 = ui.Button()\n\t\tself.button5.frame = (0,15,self.width/2.2,50)\n\t\tself.button5.center = (self.width/4+3,self.height/8+91)\n\t\tself.button5.background_color = '#fff'\n\t\tself.button5.alpha = 1.0\n\t\tself.scroll_buttons.add_subview(self.button5)\n\t\t# Set up button6\n\t\tself.button6 = ui.Button()\n\t\tself.button6.frame = (0,15,self.width/2.2,50)\n\t\tself.button6.center = (self.width/2+77,self.height/8+91)\n\t\tself.button6.background_color = '#fff'\n\t\tself.button6.alpha = 1.0\n\t\tself.scroll_buttons.add_subview(self.button6)\n\t\t# Set up button7\n\t\tself.button7 = ui.Button()\n\t\tself.button7.frame = (0,15,self.width/2.2,50)\n\t\tself.button7.center = (self.width/4+3,self.height/8+150)\n\t\tself.button7.background_color = '#fff'\n\t\tself.button7.alpha = 1.0\n\t\tself.scroll_buttons.add_subview(self.button7)\n\t\t# Set up button8\n\t\tself.button8 = ui.Button()\n\t\tself.button8.frame = (0,15,self.width/2.2,50)\n\t\tself.button8.center = (self.width/2+77,self.height/8+150)\n\t\tself.button8.background_color = '#fff'\n\t\tself.button8.alpha = 1.0\n\t\tself.scroll_buttons.add_subview(self.button8)\n\t\t# Set up the close button to dismiss the button actions view\n\t\tself.close_button = ui.Button()\n\t\tself.close_button.title = 'Close'\n\t\tself.close_button.frame = (0,15,self.width-20,50)\n\t\tself.close_button.center = (self.width/2,self.height/8+210)\n\t\tself.close_button.background_color = '#fff'\n\t\tself.close_button.alpha = 1.0\n\t\tself.close_button.action = close_button_tapped\n\t\tself.scroll_buttons.add_subview(self.close_button)\n\t\t# Set up view for secondary actions\n\t\tself.secondary_actions = ui.View()\n\t\tself.secondary_actions.bounds = (0,0,320,460)\n\t\tself.secondary_actions.center = (self.width/2,self.height/2+40)\n\t\tself.secondary_actions.background_color = '#f0f0f0'\n\t\tself.secondary_actions.name = 'secondary_actions'\n\t\tself.secondary_actions.flex = 'WH'\n\t\tself.secondary_actions.alpha = 1.0\n\t\tself.secondary_actions.hidden = True # Hide view until needed\n\t\tself.button_actions.add_subview(self.secondary_actions)\n\t\t# Set up Secondary button1\n\t\tself.secondary_button1 = ui.Button()\n\t\tself.secondary_button1.frame = (0,15,self.width-21,50)\n\t\tself.secondary_button1.center = (self.width/2,self.height/8-29)\n\t\tself.secondary_button1.background_color = '#fff'\n\t\tself.secondary_button1.alpha = 1.0\n\t\tself.secondary_actions.add_subview(self.secondary_button1)\n\t\t# Set up the cancel button to dismiss the secondary actions view\n\t\tself.cancel_button = ui.Button()\n\t\tself.cancel_button.title = 'Cancel'\n\t\tself.cancel_button.frame = (0,15,self.width-20,50)\n\t\tself.cancel_button.center = (self.width/2,94)\n\t\tself.cancel_button.background_color = '#fff'\n\t\tself.cancel_button.alpha = 1.0\n\t\tself.cancel_button.action = cancel_button_tapped\n\t\tself.secondary_actions.add_subview(self.cancel_button)\n\t\t# Set up the data source element for the TableView for moving files\n\t\tself.move_list_source = ui.ListDataSource(items=[])\n\t\tself.move_list_source.move_enabled = False\n\t\tself.move_list_source.delete_enabled = False\n\t\t# Set up the TableView for Moving Files\n\t\tself.move_table_view = ui.TableView()\n\t\tself.move_table_view.row_height = 44\n\t\tself.move_table_view.delegate = move_delegate() # Link the navigation delegate for moving files\n\t\tself.move_table_view.frame = (0,127,self.width, self.height - 185)\n\t\tself.move_table_view.flex = 'H'\n\t\tself.move_table_view.data_source = self.move_list_source # Set the data source to the ListDataSource element\n\t\tself.move_table_view.hidden = True\n\t\tself.move_table_view.alpha = 1.0\n\t\tself.move_table_view.background_color = '#fff'\n\t\tself.button_actions.add_subview(self.move_table_view)\n\t\tself.move_label_background = ui.Label()\n\t\tself.move_label_background.text = ''\n\t\tself.move_label_background.frame = (0,0,self.width,170)\n\t\tself.move_label_background.center = (self.width/2,self.height/8-28)\n\t\tself.move_label_background.hidden = True\n\t\tself.move_label_background.background_color = '#f0f0f0'\n\t\tself.button_actions.add_subview(self.move_label_background)\n\t\t# Set up the button to select folder to move file into\n\t\tself.select_folder = ui.Button()\n\t\tself.select_folder.frame = (0,0,self.width-20,50)\n\t\tself.select_folder.center = (self.width/2,self.height/8-28)\n\t\tself.select_folder.background_color = '#fff'\n\t\tself.select_folder.hidden = True\n\t\tself.button_actions.add_subview(self.select_folder)\n\t\t# Set up the back button for the move file view\n\t\tself.move_back_button = ui.Button()\n\t\tself.move_back_button.image = ui.Image.named('ionicons-chevron-left-24')\n\t\tself.move_back_button.background_color = '#fff'\n\t\tself.move_back_button.frame = (10,69,50,50)\n\t\tself.move_back_button.font = ('<system>', 25)\n\t\tself.move_back_button.action = move_back_button_tapped # Set the back button's action to move_back_button_tapped function\n\t\tself.move_back_button.hidden = True\n\t\tself.button_actions.add_subview(self.move_back_button)\n\t\t# Set up the cancel button to dismiss the move file view\n\t\tself.move_cancel_button = ui.Button()\n\t\tself.move_cancel_button.title = 'Cancel'\n\t\tself.move_cancel_button.frame = (0,15,self.width-80,50)\n\t\tself.move_cancel_button.center = (self.width/2+30,self.height/8+31)\n\t\tself.move_cancel_button.background_color = '#fff'\n\t\tself.move_cancel_button.alpha = 1.0\n\t\tself.move_cancel_button.action = move_cancel_button_tapped\n\t\tself.move_cancel_button.hidden = True\n\t\tself.button_actions.add_subview(self.move_cancel_button)\n\t\t# Set up the TextField where the current path will be held\n\t\tself.move_path_field = ui.TextField()\n\t\tself.move_path_field.text = ftp.ftp.pwd()\n\t\tself.move_path_field.hidden = True\n\t\tself.button_actions.add_subview(self.move_path_field)\n\n# Build the initial directory and store it to the source_list variable\nsource_list = build_directory()\n\n# Initiate the view and pass it the source_list\nview = FTP_Client(source_list)\n# Present the view in a popover\nview.present(style = 'popover', hide_title_bar = True)\n", "8FA2F3A3-A33F-4E29-B492-31CA733496EC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "26DF96A7-B364-42B8-93AE-439D0650676A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A9D399AD-1AE7-453D-9F37-9B66FE3DF0A9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "7C719344-C891-4AB0-95AE-A113A91D1248": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "1E45370D-12DA-4162-BE1D-00E57FD826A1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "6BB5C954-DACE-44BC-BAA5-BA386343A159": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "93D7ECD9-8FF4-4ED4-910A-1024DFFA875F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3D76ECEE-8D86-4F1F-B6CE-161124D878F3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "15E08D0D-F62D-4AC0-92EF-A2809B7DFBB6": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F276A4A8-DABC-4867-A241-5D85D5A2F8D4": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E4A933E5-76E4-4B94-8996-0AEEF41399E8": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "BFEAA0EA-62A6-4DA4-976D-493B3F338463": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "6D17DF79-ECA4-4EF9-B5D2-1AAB32E34D11": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "68A2A40E-0E92-4737-8FF2-F176B3645CBC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "ui": "[{\"class\":\"View\",\"attributes\":{\"background_color\":\"RGBA(1.000000,1.000000,1.000000,1.000000)\",\"tint_color\":\"RGBA(0.000000,0.478000,1.000000,1.000000)\",\"enabled\":true,\"border_color\":\"RGBA(0.000000,0.000000,0.000000,1.000000)\",\"flex\":\"\"},\"frame\":\"{{0, 0}, {540, 575}}\",\"nodes\":[{\"class\":\"View\",\"attributes\":{\"name\":\"view1\",\"uuid\":\"691D7635-ED21-47B1-BB0C-D03DF74DFA8B\",\"enabled\":true,\"border_color\":\"RGBA(0.000000,0.000000,0.000000,1.000000)\",\"flex\":\"\"},\"frame\":\"{{162, 279}, {215, 58}}\",\"nodes\":[]},{\"class\":\"Button\",\"attributes\":{\"font_size\":15,\"enabled\":true,\"flex\":\"\",\"font_bold\":false,\"name\":\"button1\",\"uuid\":\"891737B6-0D9F-4C3A-AABF-15D9B73D64AB\",\"border_color\":\"RGBA(0.000000,0.000000,0.000000,1.000000)\",\"title\":\"Download\"},\"frame\":\"{{162, 279}, {107, 58}}\",\"nodes\":[]},{\"class\":\"Button\",\"attributes\":{\"font_size\":15,\"enabled\":true,\"flex\":\"\",\"font_bold\":false,\"name\":\"button2\",\"uuid\":\"93DF31A4-D186-45A9-8180-04EB9C517035\",\"border_color\":\"RGBA(0.000000,0.000000,0.000000,1.000000)\",\"title\":\"Overwrite\"},\"frame\":\"{{270, 279}, {107, 58}}\",\"nodes\":[]}]}]", "D4B85DD2-E06A-467A-9137-868147CB5EF5": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E48FCCAE-719D-4713-936F-4217132FB7F9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9EF136C5-4458-4EC1-8B41-2CEC520138DB": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "07E5006D-CD8C-4383-8BE9-6A8D8F6CCC07": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "AA0729B7-4EA3-4539-98A3-9FA5550C5AF3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}], "name": "FTP_Client", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone9,4", "systemVersion": "13.1.2"}, "type": "wkflw", "public": true, "icon": "minicons-icons-transfer-upload-5.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22This%20is%20a%20custom%20UI%20for%20Editorial%20which%20will%20present%20a%20fully%20featured%20FTP%20client%20in%20a%20popup%20window%20over%20the%20editor.%5Cn%5CnAfter%20downloading%20you%20will%20need%20to%20tap%20the%20Info%20button%20next%20to%20the%20workflow%2C%20go%20to%20the%20Edit%20Workflow%20page%2C%20tap%20on%20the%20action%20block%20to%20expand%20it%2C%20and%20fill%20in%20your%20FTP%20login%20credentials%20in%20the%20variables%20below.%20Once%20you%27ve%20done%20that%20just%20run%20it%20from%20the%20workflow%20menu%20and%20you%20should%20be%20set.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22FTP%20UI%22%2C%20%22parameters%22%3A%20%7B%2276A5A84D-0561-4834-856C-545D188ABC42%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2217F9FFEF-24E7-4B85-80AF-E6FFD48F26E9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2212CB7DEE-EEC1-4FCB-97BF-BBB95A56A03B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2217DDDC80-EB5C-4A4A-BE33-F29B1EA496A1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223DD56DC4-7B69-49DC-8A3B-2DB7A851AC30%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22D74B99FF-2F76-4624-9C02-A0E1785348A5%22%3A%20%22%22%2C%20%22F953659E-E15A-4FE6-82B4-1BB1CE613B3E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22DBA7A162-8790-4615-A5C1-EFF8EB870E0B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22350C4857-3A55-4278-A792-F144FA8B92F1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22D95E75B5-2181-465B-A147-20D14D1B88A7%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%227B2C7297-7737-47B0-8548-2F6579D63B3A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22AF803B87-F589-4DDF-8D61-888339533174%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2274EE867C-63BF-42F5-8F85-2AD1663D9528%22%3A%20%22172.16.1.48%22%2C%20%22E03DEE1B-0607-4EBE-9F82-434D690A3588%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22B42E2195-685F-4022-B61E-14A19BDACD7D%22%3A%20%22angel_augusto%22%2C%20%229B35529B-8F25-4F88-A9B4-781FB250B846%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22placeholder%22%3A%20%22%2F%22%2C%20%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%22D74B99FF-2F76-4624-9C02-A0E1785348A5%22%2C%20%22title%22%3A%20%22Initial_Path%22%7D%2C%20%7B%22placeholder%22%3A%20%22ftp.example.com%22%2C%20%22keyboardType%22%3A%203%2C%20%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%2274EE867C-63BF-42F5-8F85-2AD1663D9528%22%2C%20%22title%22%3A%20%22FTP_Server%22%7D%2C%20%7B%22placeholder%22%3A%20%22guyot%40unapologetic.io%22%2C%20%22keyboardType%22%3A%207%2C%20%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%22B42E2195-685F-4022-B61E-14A19BDACD7D%22%2C%20%22title%22%3A%20%22FTP_Username%22%7D%2C%20%7B%22placeholder%22%3A%20%22%5Cu2022%5Cu2022%5Cu2022%5Cu2022%5Cu2022%5Cu2022%5Cu2022%5Cu2022%5Cu2022%5Cu2022%22%2C%20%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%22FCF40D27-4DB7-4121-97F6-F968A900E92E%22%2C%20%22title%22%3A%20%22FTP_Password%22%7D%5D%2C%20%22B8C377DB-C007-491E-9B69-9967410CC875%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22FCF40D27-4DB7-4121-97F6-F968A900E92E%22%3A%20%22B2esaL1a%22%2C%20%226E695F21-0664-4FC9-920E-12821330B610%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2217E340BF-6CF0-45D7-AA81-F135B91DE224%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22BE013931-6B92-45BB-A3F9-5747D2BD1587%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229C3FFE2C-6C49-46C9-BD53-E5AAAE2BD8CA%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%226A2FC1A6-979E-4125-87D1-52EB38FC4527%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ABBDEFCC-F896-4F7A-B35F-5023B651DD88%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2298F26812-BFCB-4DC1-8FC4-E7282BCAF39A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C8D3ACB2-86C1-479E-979E-666D5FE5BB97%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229E029915-8290-426B-9B8E-326654FA13DC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%226A5B2A56-80C7-4E7B-8E2F-EBF2993ED68B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22AD8FDF1C-B8D2-48EB-A547-37B910262AAB%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F2C3515D-1C29-423D-99C0-95B6FB4887DC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2295FA6C87-6EB6-4562-B4B0-38C99BF57114%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223A9BD136-9079-44AD-89C5-53D329731D83%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%221C7EAC87-52E9-42C6-A8C7-18AB70F3FD23%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%226C12A397-2296-483B-BE29-87C6F9D8013B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22867B865E-787D-45E1-B3BF-64412F9D6FA4%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%226CC50A85-8999-47B5-B830-88C48A0443AB%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22BE54AC05-8D78-4F95-822A-AC4907F58791%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%222D8A39CF-8976-4772-A439-9A46FA9C79D3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%222B5E2C3D-F83E-4B48-B316-FFC6DC26E26A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22DBD9CAA1-1A12-4ABE-A9C7-EBBF0D77357E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22CF4A2FE6-4960-4F51-BAE9-3218272C1C6E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2225171F4E-EB9B-47E7-9902-E3ED071C0362%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228913248B-FE4C-4839-BD1E-22533BA6586B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229D387E48-805E-46E4-83A9-30876058FD42%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2290D8071E-9FC5-4FFA-94E6-0BC3006E4236%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2277021432-36A0-48A7-8A82-9C4609E71B23%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2268AE2162-AF92-4CE6-B5E5-A99BA2D7CFB9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22FC89D8BA-5448-455D-BBAC-21F1F0775A66%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E34AD0C6-2E7C-46DF-8E5C-A61D619E4063%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C4ACD630-2532-48C6-88DE-EA95FB7FA074%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C57929EE-43A1-4384-BF54-95AF57E3552A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22010A0730-7B55-419F-AD63-86DAE22BCFF3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2293D9F4AF-C4DB-4E00-A32E-52AE27A1E174%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22BEA876CA-3C94-415F-B229-B5DAC3A68DD7%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%221E06CA8B-C928-4F60-8418-D04B6D3E0AA3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%220FE68B9D-5A5D-4746-94A6-E183EEC712E1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E6FC01C2-5EB7-4867-B73C-FA4A657FE032%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20ui%5Cnimport%20console%5Cnimport%20editor%5Cnimport%20time%5Cnimport%20clipboard%5Cnimport%20photos%5Cnfrom%20PIL%20import%20Image%5Cnfrom%20io%20import%20BytesIO%5Cnimport%20webbrowser%5Cnfrom%20ftplib%20import%20FTP%5Cn%5Cn%23%20Get%20the%20custom%20parameters%20as%20a%20dictionary%20%28titles%20are%20keys%29%3A%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cn%23%20Get%20the%20action%27s%20input%20%28a%20string%29%3A%5Cnaction_in%20%3D%20workflow.get_input%28%29%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%23%23%23%23%20FTP%20Protocol%20Class%20%23%23%23%23%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%5Cnclass%20FTP_Instance%3A%5Cn%5Ctdef%20__init__%28self%29%3A%5Cn%5Ct%5Ctself.initial_path%20%3D%20params%5B%27Initial_Path%27%5D%5Cn%5Ct%5Ctself.ftp%20%3D%20FTP%28params%5B%27FTP_Server%27%5D%29%5Cn%5Ct%5Ctself.ftp.login%28params%5B%27FTP_Username%27%5D%2C%20params%5B%27FTP_Password%27%5D%29%5Cn%5Ct%5Ctself.ftp.cwd%28self.initial_path%29%5Cn%5Cn%5Ctdef%20open_file%28self%2C%20filename%2C%20path%29%3A%5Cn%5Ct%5Ctself.ftp.cwd%28path%29%5Cn%5Ct%5Cttemp%20%3D%20open%28%27temp%27%2C%20%5C%22wb%5C%22%29%5Cn%5Ct%5Ctself.ftp.retrbinary%28%27RETR%20%27%20%2B%20filename%2C%20temp.write%29%5Cn%5Ct%5Cttemp.close%28%29%5Cn%5Ct%5Ctread%20%3D%20open%28%27temp%27%2C%20%27r%27%29%5Cn%5Ct%5Ctfile_contents%20%3D%20read.read%28%29%5Cn%5Ct%5Ctread.close%28%29%5Cn%5Ct%5Ctreturn%20file_contents%5Cn%5Cn%5Ctdef%20check_file_exists%28self%2C%20filename%2C%20path%29%3A%5Cn%5Ct%5Ctexisting_files%20%3D%20self.ftp.nlst%28path%29%5Cn%5Ct%5Ctreturn%20filename%20in%20existing_files%5Cn%5Ct%5Ct%5Cn%5Ctdef%20mkd%28self%2C%20path%29%3A%5Cn%5Ct%5Ctchecked_path%20%3D%20%27%27%5Cn%5Ct%5Ctdirectories%20%3D%20path%5B1%3A%5D.split%28%27%2F%27%29%5Cn%5Ct%5Ctself.ftp.cwd%28self.initial_path%29%5Cn%5Ct%5Ctfor%20i%20in%20range%28len%28directories%29%29%3A%5Cn%5Ct%5Ct%5Ctcurrent_dir%20%3D%20self.ftp.nlst%28self.initial_path%20%2B%20checked_path%29%5Cn%5Ct%5Ct%5Ctif%20directories%5Bi%5D%20in%20current_dir%3A%5Cn%5Ct%5Ct%5Ct%5Ctchecked_path%20%2B%3D%20%27%2F%27%20%2B%20directories%5Bi%5D%5Cn%5Ct%5Ct%5Ct%5Ctself.ftp.cwd%28self.initial_path%20%2B%20checked_path%29%5Cn%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ctchecked_path%20%2B%3D%20%27%2F%27%20%2B%20directories%5Bi%5D%5Cn%5Ct%5Ct%5Ct%5Ctself.ftp.mkd%28self.initial_path%20%2B%20checked_path%29%5Cn%5Ct%5Ct%5Ct%5Ctself.ftp.cwd%28self.initial_path%20%2B%20checked_path%29%5Cn%5Ct%5Ct%5Cn%5Ctdef%20overwrite_file%28self%2C%20filename%2C%20text%2C%20path%29%3A%5Cn%5Ct%5Ctself.ftp.cwd%28path%29%5Cn%5Ct%5Ctfile%20%3D%20open%28%27temp%27%2C%20%27w%27%29%5Cn%5Ct%5Ctfile.write%28text%29%5Cn%5Ct%5Ctfile.close%28%29%5Cn%5Ct%5Ctfile%20%3D%20open%28%27temp%27%2C%20%27r%27%29%5Cn%5Ct%5Ctself.ftp.cwd%28path%29%5Cn%5Ct%5Ctself.ftp.storbinary%28%27STOR%20%27%20%2B%20filename%2C%20file%29%5Cn%5Ct%5Ctif%20text%20%21%3D%20self.open_file%28filename%2Cpath%29%3A%5Cn%5Ct%5Ct%5Ctconsole.hud_alert%28%27File%20Overwrite%20Failed%27%2C%20%27error%27%2C%205.0%29%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctconsole.hud_alert%28%27File%20Overwritten%27%2C%20%27success%27%2C%205.0%29%5Cn%5Ct%5Ctfile.close%28%29%5Cn%5Ct%5Cn%5Ctdef%20upload_image%28self%2C%20imagename%2C%20path%29%3A%5Cn%5Ct%5Ctimage%20%3D%20photos.pick_image%28%29%5Cn%5Ct%5Ctbuffer%20%3D%20BytesIO%28%29%5Cn%5Ct%5Ctimage.save%28buffer%2C%20%27PNG%27%29%5Cn%5Ct%5Ctbuffer.seek%280%29%5Cn%5Ct%5Ctself.ftp.cwd%28path%29%5Cn%5Ct%5Ctself.ftp.storbinary%28%27STOR%20%27%20%2B%20imagename%2C%20buffer%29%5Cn%5Ct%5Cn%5Ctdef%20create_and_upload_file%28self%2C%20filename%2C%20text%2C%20path%29%3A%5Cn%5Ct%5Ctfile%20%3D%20open%28%27temp%27%2C%20%27w%27%29%5Cn%5Ct%5Ctfile.write%28text%29%5Cn%5Ct%5Ctfile.close%28%29%5Cn%5Ct%5Ctfile%20%3D%20open%28%27temp%27%2C%20%27r%27%29%5Cn%5Ct%5Ctself.upload_file%28file%2C%20filename%2C%20path%29%5Cn%5Ct%5Ctfile.close%28%29%5Cn%5Cn%5Ctdef%20upload_file%28self%2C%20file%2C%20filename%2C%20path%29%3A%5Cn%5Ct%5Ctif%20path%20%21%3D%20%27%27%3A%5Cn%5Ct%5Ct%5Ctself.mkd%28path%29%5Cn%5Ct%5Ctself.ftp.cwd%28path%29%5Cn%5Ct%5Ctself.ftp.storbinary%28%27STOR%20%27%20%2B%20filename%2C%20file%29%5Cn%5Cn%5Ctdef%20print_directory%28self%2C%20path%29%3A%5Cn%5Ct%5Ctprint%20self.ftp.nlst%28path%29%5Cn%5Ct%5Ct%5Cn%5Ctdef%20duplicate_file%28self%2C%20filename%2C%20path%29%3A%5Cn%5Ct%5Cti%20%3D%201%5Cn%5Ct%5Ctfind_extension%20%3D%20filename.split%28%27.%27%29%5Cn%5Ct%5Ctnew_filename%20%3D%20%27%27%5Cn%5Ct%5Ctfor%20n%20in%20range%28len%28find_extension%29-1%29%3A%5Cn%5Ct%5Ct%5Ctnew_filename%20%2B%3D%20find_extension%5Bn%5D%20%2B%20%27.%27%5Cn%5Ct%5Ctnew_filename%20%3D%20new_filename%5B%3A-1%5D%5Cn%5Ct%5Ctcheck_filename%20%3D%20new_filename%20%2B%20%27-%27%20%2B%20str%28i%29%20%2B%20%27.%27%20%2B%20find_extension%5Bn%2B1%5D%5Cn%5Ct%5Ctfile_contents%20%3D%20self.open_file%28filename%2C%20path%29%5Cn%5Ct%5Ctwhile%20self.check_file_exists%28check_filename%2C%20path%29%3A%5Cn%5Ct%5Ct%5Cti%20%2B%3D%201%5Cn%5Ct%5Ct%5Ctcheck_filename%20%3D%20new_filename%20%2B%20%27-%27%20%2B%20str%28i%29%20%2B%20%27.%27%20%2B%20find_extension%5Bn%2B1%5D%5Cn%5Ct%5Ctself.create_and_upload_file%28check_filename%2C%20file_contents%2C%20path%29%5Cn%5Ct%5Ct%5Cn%5Ctdef%20duplicate_folder%28self%2C%20foldername%2C%20path%29%3A%5Cn%5Ct%5Cti%20%3D%201%5Cn%5Ct%5Ctnew_foldername%20%3D%20foldername%20%2B%20%27-%27%20%2B%20str%28i%29%5Cn%5Ct%5Ctwhile%20self.check_file_exists%28new_foldername%2C%20path%29%3A%5Cn%5Ct%5Ct%5Cti%20%2B%3D%201%5Cn%5Ct%5Ct%5Ctnew_foldername%20%3D%20foldername%20%2B%20%27-%27%20%2B%20str%28i%29%5Cn%5Ct%5Ctself.ftp.mkd%28path%20%2B%20%27%2F%27%20%2B%20new_foldername%29%5Cn%5Ct%5Ct%23%20Get%20directory%20to%20duplicate%20as%20dictionary%20with%20keys%20marking%20items%20as%20files%20or%20folders%5Cn%5Ct%5Ctdir_items%20%3D%20ftp.directory_with_types%28path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ctfor%20item%20in%20dir_items%3A%5Cn%5Ct%5Ct%5Ctif%20dir_items%5Bitem%5D%5B%27type%27%5D%20%3D%3D%20%27file%27%3A%5Cn%5Ct%5Ct%5Ct%5Ctfile_contents%20%3D%20self.open_file%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ct%5Ct%5Ctself.create_and_upload_file%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20file_contents%2C%20path%20%2B%20%27%2F%27%20%2B%20new_foldername%29%5Cn%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ctif%20dir_items%5Bitem%5D%5B%27title%27%5D%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctself.ftp.mkd%28path%20%2B%20%27%2F%27%20%2B%20new_foldername%20%2B%20%27%2F%27%20%2B%20dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctitems_in_folder%20%3D%20self.ftp.nlst%28path%20%2B%20%27%2F%27%20%2B%20foldername%20%2B%20%27%2F%27%20%2B%20dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctitems_to_duplicate%20%3D%20False%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctfor%20folderitem%20in%20items_in_folder%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctif%20folderitem%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctitems_to_duplicate%20%3D%20True%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%20items_to_duplicate%20%3D%3D%20True%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctself.duplicate_folder_helper%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20path%20%2B%20%27%2F%27%20%2B%20foldername%2C%20path%20%2B%20%27%2F%27%20%2B%20new_foldername%29%5Cn%5Ct%23%20Helper%20action%5Cn%5Ctdef%20duplicate_folder_helper%28self%2C%20foldername%2C%20from_path%2C%20to_path%29%3A%5Cn%5Ct%5Ct%23%20Get%20directory%20to%20duplicate%20as%20dictionary%20with%20keys%20marking%20items%20as%20files%20or%20folders%5Cn%5Ct%5Ctdir_items%20%3D%20ftp.directory_with_types%28from_path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ctfor%20item%20in%20dir_items%3A%5Cn%5Ct%5Ct%5Ctif%20dir_items%5Bitem%5D%5B%27type%27%5D%20%3D%3D%20%27file%27%3A%5Cn%5Ct%5Ct%5Ct%5Ctfile_contents%20%3D%20self.open_file%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20from_path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ct%5Ct%5Ctself.create_and_upload_file%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20file_contents%2C%20to_path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ctif%20dir_items%5Bitem%5D%5B%27title%27%5D%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctself.ftp.mkd%28to_path%20%2B%20%27%2F%27%20%2B%20foldername%20%2B%20%27%2F%27%20%2B%20dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctitems_in_folder%20%3D%20self.ftp.nlst%28from_path%20%2B%20%27%2F%27%20%2B%20foldername%20%2B%20%27%2F%27%20%2B%20dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctitems_to_duplicate%20%3D%20False%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctfor%20folderitem%20in%20items_in_folder%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctif%20folderitem%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctitems_to_duplicate%20%3D%20True%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%20items_to_duplicate%20%3D%3D%20True%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctself.duplicate_folder_helper%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20from_path%20%2B%20%27%2F%27%20%2B%20foldername%2C%20to_path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Cn%5Ctdef%20move_file%28self%2C%20filename%2C%20from_path%2C%20to_path%29%3A%5Cn%5Ct%5Ctif%20not%20self.check_file_exists%28filename%2C%20to_path%29%3A%5Cn%5Ct%5Ct%5Ctfile_contents%20%3D%20self.open_file%28filename%2C%20from_path%29%5Cn%5Ct%5Ct%5Ctself.create_and_upload_file%28filename%2C%20file_contents%2C%20to_path%29%5Cn%5Ct%5Ct%5Ctif%20self.check_file_exists%28filename%2C%20to_path%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctif%20self.open_file%28filename%2C%20to_path%29%20%3D%3D%20file_contents%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctself.ftp.cwd%28from_path%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctself.ftp.delete%28filename%29%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctconsole.hud_alert%28%27File%20with%20same%20name%20already%20exists%20in%20this%20location%27%2C%20%27error%27%2C%205.0%29%5Cn%5Ct%5Ct%5Ct%5Cn%5Ctdef%20move_folder%28self%2C%20foldername%2C%20from_path%2C%20to_path%29%3A%5Cn%5Ct%5Ctall_files_moved%20%3D%20True%5Cn%5Ct%5Ctif%20not%20self.check_file_exists%28foldername%2C%20to_path%29%3A%5Cn%5Ct%5Ct%5Ctself.ftp.mkd%28to_path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ct%5Ct%23%20Get%20directory%20of%20folder%20contents%20to%20be%20moved%5Cn%5Ct%5Ct%5Ctdir_items%20%3D%20ftp.directory_with_types%28from_path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ct%5Ctfor%20item%20in%20dir_items%3A%5Cn%5Ct%5Ct%5Ct%5Ctif%20dir_items%5Bitem%5D%5B%27type%27%5D%20%3D%3D%20%27file%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctfile_contents%20%3D%20self.open_file%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20from_path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctself.create_and_upload_file%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20file_contents%2C%20to_path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%20not%20self.check_file_exists%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20to_path%20%2B%20%27%2F%27%20%2B%20foldername%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctall_files_moved%20%3D%20False%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctprint%20%27false%27%5Cn%5Ct%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%20dir_items%5Bitem%5D%5B%27title%27%5D%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctself.ftp.mkd%28to_path%20%2B%20%27%2F%27%20%2B%20foldername%20%2B%20%27%2F%27%20%2B%20dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctitems_in_folder%20%3D%20self.ftp.nlst%28from_path%20%2B%20%27%2F%27%20%2B%20foldername%20%2B%20%27%2F%27%20%2B%20dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctitems_to_duplicate%20%3D%20False%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctfor%20folderitem%20in%20items_in_folder%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctif%20folderitem%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctitems_to_duplicate%20%3D%20True%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctif%20items_to_duplicate%20%3D%3D%20True%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctself.duplicate_folder_helper%28dir_items%5Bitem%5D%5B%27title%27%5D%2C%20from_path%20%2B%20%27%2F%27%20%2B%20foldername%2C%20to_path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctconsole.hud_alert%28%27Folder%20of%20same%20name%20already%20exists%20in%20this%20location%27%2C%20%27error%27%2C%205.0%29%5Cn%5Ct%5Ct%5Ctreturn%5Cn%5Ct%5Ctif%20all_files_moved%3A%5Cn%5Ct%5Ct%5Ctself.delete_folder%28foldername%2C%20from_path%29%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctconsole.hud_alert%28%27All%20files%20may%20not%20have%20been%20moved%27%2C%20%27error%27%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Cn%5Ctdef%20delete_folder%28self%2C%20foldername%2C%20path%29%3A%5Cn%5Ct%5Ctftp.delete_folder_helper%28path%20%2B%20%27%2F%27%20%2B%20foldername%29%5Cn%5Ct%5Ctftp.ftp.cwd%28path%29%5Cn%5Ct%5Ctftp.ftp.rmd%28foldername%29%5Cn%5Ct%23%20Helper%20action%5Cn%5Ctdef%20delete_folder_helper%28self%2C%20path%29%3A%5Cn%5Ct%5Ctself.ftp.cwd%28path%29%5Cn%5Ct%5Ctdir_items%20%3D%20ftp.directory_with_types%28path%29%5Cn%5Ct%5Ctfor%20item%20in%20dir_items%3A%5Cn%5Ct%5Ct%5Ctif%20dir_items%5Bitem%5D%5B%27type%27%5D%20%3D%3D%20%27file%27%3A%5Cn%5Ct%5Ct%5Ct%5Ctself.ftp.delete%28dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ctif%20dir_items%5Bitem%5D%5B%27title%27%5D%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctitems_in_folder%20%3D%20self.ftp.nlst%28path%20%2B%20%27%2F%27%20%2B%20dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctitems_inside%20%3D%20False%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctfor%20folderitem%20in%20items_in_folder%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctif%20folderitem%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctitems_inside%20%3D%20True%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%20items_inside%20%3D%3D%20True%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctsave_path%20%3D%20path%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctself.delete_folder_helper%28path%20%2B%20%27%2F%27%20%2B%20dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctself.ftp.cwd%28save_path%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctself.ftp.rmd%28dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctself.ftp.rmd%28dir_items%5Bitem%5D%5B%27title%27%5D%29%5Cn%5Ct%5Ct%5Cn%5Ctdef%20directory_with_types%28self%2C%20path%29%3A%5Cn%5Ct%5Cti%20%3D%200%5Cn%5Ct%5Ctdirectory_list%20%3D%20%5B%5D%5Cn%5Ct%5Ctdirectory_dict%20%3D%20%7B%7D%5Cn%5Ct%5Cttitle_list%20%3D%20self.ftp.nlst%28path%29%5Cn%5Ct%5Ctself.ftp.cwd%28path%29%5Cn%5Ct%5Ctself.ftp.retrlines%28%27LIST%27%2C%20callback%3Ddirectory_list.append%29%5Cn%5Ct%5Ctfor%20item%20in%20directory_list%3A%5Cn%5Ct%5Ct%5Ctif%20i%20%3C%20len%28title_list%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctlisting%20%3D%20%7B%7D%5Cn%5Ct%5Ct%5Ct%5Ctif%20item.upper%28%29.startswith%28%27D%27%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctlisting%5B%27type%27%5D%20%3D%20%27folder%27%5Cn%5Ct%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctlisting%5B%27type%27%5D%20%3D%20%27file%27%5Cn%5Ct%5Ct%5Ct%5Ctdirectory_dict%5Bi%5D%20%3D%20listing%5Cn%5Ct%5Ct%5Ct%5Ctdirectory_dict%5Bi%5D%5B%27title%27%5D%20%3D%20title_list%5Bi%5D%5Cn%5Ct%5Ct%5Ct%5Cti%20%2B%3D%201%5Cn%5Ct%5Ctreturn%20directory_dict%5Cn%5Cn%5Ctdef%20quit%28self%29%3A%5Cn%5Ct%5Ctself.ftp.quit%28%29%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%23%23%23%23%20FTP%20UI%20Client%20%23%23%23%23%23%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%5Cn%23%20Initiate%20FTP%20Connection%5Cnftp%20%3D%20FTP_Instance%28%29%5Cn%5Cn%23%20Build%20directory%20to%20be%20displayed%20in%20rows%20of%20file%20manager%5Cndef%20build_directory%28path%3Dparams%5B%27Initial_Path%27%5D%29%3A%5Cn%5Ct%23%20Get%20directory%20as%20dictionary%20with%20keys%20marking%20items%20as%20files%20or%20folders%5Cn%5Ctlist_items%20%3D%20ftp.directory_with_types%28path%29%5Cn%5Ctsource_list%20%3D%20%5B%5D%5Cn%5Ct%23%20Pull%20data%20from%20list_items%20and%20prepare%20a%20list%20of%20dictionaries%20readable%20by%20ListDataSource%20element%5Cn%5Ctfor%20item%20in%20list_items%3A%5Cn%5Ct%5Ctd%20%3D%20%7B%7D%5Cn%5Ct%5Ctd%5B%27title%27%5D%20%3D%20list_items%5Bitem%5D%5B%27title%27%5D%5Cn%5Ct%5Ct%23%20For%20files%2C%20do%20not%20include%20accessory%20action%20icons%20in%20their%20rows%2C%20but%20mark%20them%20with%20file%20icons%5Cn%5Ct%5Ctif%20list_items%5Bitem%5D%5B%27type%27%5D%20%3D%3D%20%27file%27%3A%5Cn%5Ct%5Ct%5Ctd%5B%27accessory_type%27%5D%20%3D%20%27none%27%5Cn%5Ct%5Ct%5Ctd%5B%27image%27%5D%20%3D%20%27ionicons-document-24%27%5Cn%5Ct%5Ct%23%20For%20folders%2C%20add%20chevron%20arrow%20accessory%20action%20icons%20to%20rows%20and%20mark%20with%20folder%20icons%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctd%5B%27accessory_type%27%5D%20%3D%20%27detail_disclosure_button%27%5Cn%5Ct%5Ct%5Ctd%5B%27image%27%5D%20%3D%20%27ionicons-folder-24%27%5Cn%5Ct%5Ct%23%20Add%20each%20prepared%20dictionary%20to%20overall%20list%20of%20dictionaries%5Cn%5Ct%5Ctif%20d%5B%27title%27%5D%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ctsource_list.append%28d%29%5Cn%5Ct%23%20Return%20list%20of%20dictionaries%20with%20all%20files%20and%20folders%20properly%20flagged%5Ct%5Cn%5Ctreturn%20source_list%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20Back%20Button%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20Action%20to%20be%20run%20when%20user%20taps%20the%20back%20button%20in%20the%20top%20left%20of%20the%20UI%5Cndef%20back_button_tapped%28sender%29%3A%5Cn%5Ctif%20not%20sender.superview.secondary_actions.hidden%3A%5Cn%5Ct%5Ctsender.superview.secondary_actions.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.file_label.editable%20%3D%20False%5Cn%5Ct%5Ctbutton_actions_closed%20%3D%20False%5Cn%5Ctelif%20not%20sender.superview.button_actions.hidden%3A%5Cn%5Ct%5Ctsender.superview.plus_button.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.button_actions.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.file_label.editable%20%3D%20False%5Cn%5Ct%5Ctbutton_actions_closed%20%3D%20False%5Cn%5Ct%5Ctif%20sender.superview.path_field.text%20%3D%3D%20%27%2F%27%3A%5Cn%5Ct%5Ct%5Ctsender.superview.back_button.enabled%20%3D%20False%5Cn%5Ctelse%3A%5Cn%5Ct%5Ctbutton_actions_closed%20%3D%20True%5Cn%5Ct%5Cn%5Ctif%20button_actions_closed%20%3D%3D%20True%3A%5Cn%5Ct%5Ct%23%20Get%20current%20path%5Cn%5Ct%5Ctpath%20%3D%20sender.superview.path_field.text%5Cn%5Ct%5Ct%23%20Split%20the%20path%20at%20slashes%5Cn%5Ct%5Ctpath%20%3D%20path.split%28%27%2F%27%29%5Cn%5Ct%5Ctnew_path%20%3D%20%27%27%5Cn%5Ct%5Ct%23%20Put%20the%20path%20back%20together%20with%20slashes%2C%20but%20leave%20the%20final%20path%20item%20removed%20%28path%20is%20back%20one%20level%29%5Cn%5Ct%5Ctfor%20i%20in%20range%28len%28path%29%20-%201%29%3A%5Cn%5Ct%5Ct%5Ctnew_path%20%2B%3D%20path%5Bi%5D%20%2B%20%27%2F%27%5Cn%5Ct%5Ct%23%20Remove%20trailing%20backslash%2C%20unless%20you%20are%20in%20the%20top%20level%20directory%20%27%2F%27%5Cn%5Ct%5Ctif%20len%28new_path%29%20%3E%201%3A%5Cn%5Ct%5Ct%5Ctnew_path%20%3D%20new_path%5B%3A-1%5D%5Cn%5Ct%5Ct%23%20Build%20the%20directory%20for%20the%20new%20path%20and%20send%20it%20to%20the%20ListDataSource%20element%5Cn%5Ct%5Ctsender.superview.list_source.items%20%3D%20build_directory%28new_path%29%5Cn%5Ct%5Ct%23%20Adjust%20the%20title%20TextField%20to%20display%20the%20new%20path%5Cn%5Ct%5Ctsender.superview.path_field.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ct%5Ct%23%20If%20the%20new%20path%20leaves%20you%20at%20the%20top%20level%20directory%2C%20disable%20the%20back%20button%5Cn%5Ct%5Ctif%20new_path%20%3D%3D%20%27%2F%27%3A%5Cn%5Ct%5Ct%5Ctsender.enabled%20%3D%20False%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20Plus%20Button%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cndef%20plus_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.back_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.button1.title%20%3D%20%27Upload%20File%20in%20Editor%27%5Cn%5Ctsender.superview.button1.action%20%3D%20upload_file_in_editor%5Cn%5Ctsender.superview.button2.title%20%3D%20%27New%20folder%27%5Cn%5Ctsender.superview.button2.action%20%3D%20new_folder%5Cn%5Ctsender.superview.button3.title%20%3D%20%27Upload%20Image%27%5Cn%5Ctsender.superview.button3.action%20%3D%20upload_image_button_tapped%5Cn%5Ctsender.superview.button4.title%20%3D%20%27Run%20Custom%20Code%27%5Cn%5Ctsender.superview.button5.title%20%3D%20%27Upload%20Dropbox%20File%27%5Cn%5Ctsender.superview.button6.title%20%3D%20%27Upload%20Local%20File%27%5Cn%5Ctsender.superview.button3.hidden%20%3D%20False%5Cn%5Ctsender.superview.button4.hidden%20%3D%20True%5Cn%5Ctsender.superview.button5.hidden%20%3D%20True%5Cn%5Ctsender.superview.button6.hidden%20%3D%20True%5Cn%5Ctsender.superview.button7.hidden%20%3D%20True%5Cn%5Ctsender.superview.button8.hidden%20%3D%20True%5Cn%5Ctsender.superview.file_icon.image%20%3D%20ui.Image.named%28%27ionicons-plus-24%27%29%5Cn%5Ctsender.superview.file_label.text%20%3D%20sender.superview.path_field.text%5Cn%5Ctsender.superview.button_actions.hidden%20%3D%20False%5Cn%5Ctsender.superview.plus_button.enabled%20%3D%20False%5Cn%5Ctsender.superview.close_button.center%20%3D%20%28sender.superview.width%2F2%2C155%29%5Cn%5Ctif%20sender.superview.height%20%3C%20500%3A%5Cn%5Ct%5Ctsender.superview.scroll_buttons.content_size%20%3D%20%28sender.superview.width%2C%20207%29%5Cn%5Ctsender.superview.scroll_buttons.content_offset%20%3D%20%280%2C0%29%5Cn%5Ct%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20Home%20Button%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cndef%20home_button_tapped%28sender%29%3A%5Cn%5Ctif%20not%20sender.superview.secondary_actions.hidden%3A%5Cn%5Ct%5Ctsender.superview.secondary_actions.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.file_label.editable%20%3D%20False%5Cn%5Ctif%20not%20sender.superview.button_actions.hidden%3A%5Cn%5Ct%5Ctsender.superview.plus_button.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.button_actions.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.file_label.editable%20%3D%20False%5Cn%5Ctsender.superview.back_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.list_source.items%20%3D%20build_directory%28%29%5Cn%5Ct%23%20Adjust%20the%20title%20TextField%20to%20display%20the%20new%20path%5Cn%5Ctsender.superview.path_field.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%23%23%23%23%20Button%20Actions%20%23%23%23%23%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cndef%20close_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Cndef%20cancel_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20False%5Cn%5Ct%5Cndef%20copy_path_button_tapped%28sender%29%3A%5Cn%5Ctclipboard.set%28sender.superview.superview.superview.path_field.text%20%2B%20%27%2F%27%20%2B%20sender.superview.superview.superview.file_label.text%29%5Cn%5Ctconsole.hud_alert%28%27Copied%27%2C%20%27success%27%29%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20Plus%20Button%20Actions%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cndef%20upload_file_in_editor%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.enabled%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.file_label.delegate%20%3D%20file_label_delegate%28sender.superview.superview.superview.file_label%2C%20%27upload%27%29%5Cn%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20True%5Cn%5Ctsender.superview.superview.superview.file_label.name%20%3D%20sender.superview.superview.superview.file_label.text%5Cn%5Ctsender.superview.superview.superview.file_label.begin_editing%28%29%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Upload%20File%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20upload_file%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20action%5Cndef%20upload_file%28sender%29%3A%5Cn%5Ctfilename%20%3D%20sender.superview.superview.superview.file_label.text%5Cn%5Cttext%20%3D%20editor.get_text%28%29%5Cn%5Ctpath%20%3D%20sender.superview.superview.superview.path_field.text%5Cn%5Ctif%20not%20ftp.check_file_exists%28sender.superview.superview.superview.file_label.text%2Csender.superview.superview.superview.path_field.text%29%3A%5Cn%5Ct%5Ctftp.create_and_upload_file%28filename%2C%20text%2C%20path%29%5Cn%5Ct%5Ctsender.superview.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.superview.path_field.text%29%5Cn%5Ct%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.file_label.text%20%3D%20sender.superview.superview.superview.file_label.name%5Cn%5Ct%5Ctsender.superview.superview.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20False%5Cn%5Ctelse%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27File%20%5C%5C%27%27%20%2B%20sender.superview.superview.superview.file_label.text%20%2B%20%27%5C%5C%27%20Already%20Exists%27%29%5Cn%5Ct%5Cndef%20new_folder%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.enabled%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.file_label.delegate%20%3D%20file_label_delegate%28sender.superview.superview.superview.file_label%2C%20%27new_folder%27%29%5Cn%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20True%5Cn%5Ctsender.superview.superview.superview.file_label.name%20%3D%20sender.superview.superview.superview.file_label.text%5Cn%5Ctsender.superview.superview.superview.file_label.begin_editing%28%29%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Create%20Folder%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20create_folder%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20action%5Cndef%20create_folder%28sender%29%3A%5Cn%5Ctfoldername%20%3D%20sender.superview.superview.superview.file_label.text%5Cn%5Ctpath%20%3D%20sender.superview.superview.superview.path_field.text%20%2B%20%27%2F%27%20%2B%20foldername%5Cn%5Ctif%20not%20ftp.check_file_exists%28sender.superview.superview.superview.file_label.text%2Csender.superview.superview.superview.path_field.text%29%3A%5Cn%5Ct%5Ctftp.ftp.mkd%28path%29%5Cn%5Ct%5Ctsender.superview.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.superview.path_field.text%29%5Cn%5Ct%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.file_label.text%20%3D%20sender.superview.superview.superview.file_label.name%5Cn%5Ct%5Ctsender.superview.superview.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20False%5Cn%5Ctelse%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27Folder%20%5C%5C%27%27%20%2B%20sender.superview.superview.superview.file_label.text%20%2B%20%27%5C%5C%27%20Already%20Exists%27%29%5Cn%5Ct%5Ct%5Cndef%20upload_image_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.enabled%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.file_label.delegate%20%3D%20file_label_delegate%28sender.superview.superview.superview.file_label%2C%20%27new_image%27%29%5Cn%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20True%5Cn%5Ctsender.superview.superview.superview.file_label.name%20%3D%20sender.superview.superview.superview.file_label.text%5Cn%5Ctsender.superview.superview.superview.file_label.begin_editing%28%29%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Show%20Image%20Picker%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20upload_image%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20action%5Cn%40ui.in_background%5Cndef%20upload_image%28sender%29%3A%5Cn%5Ctimagename%20%3D%20sender.superview.superview.superview.file_label.text%5Cn%5Ctpath%20%3D%20sender.superview.superview.superview.path_field.text%5Cn%5Ctif%20not%20ftp.check_file_exists%28sender.superview.superview.superview.file_label.text%2Csender.superview.superview.superview.path_field.text%29%3A%5Cn%5Ct%5Ctftp.upload_image%28imagename%2C%20path%29%5Cn%5Ct%5Ctsender.superview.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.superview.path_field.text%29%5Cn%5Ct%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.file_label.text%20%3D%20sender.superview.superview.superview.file_label.name%5Cn%5Ct%5Ctsender.superview.superview.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20False%5Cn%5Ctelse%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27File%20%5C%5C%27%27%20%2B%20sender.superview.superview.superview.file_label.text%20%2B%20%27%5C%5C%27%20Already%20Exists%27%29%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20File%20Actions%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cndef%20open_button_tapped%28sender%29%3A%5Cn%5Ctfile_contents%20%3D%20ftp.open_file%28sender.superview.superview.superview.file_label.text%2C%20sender.superview.superview.superview.path_field.text%29%5Cn%5Cteditor.set_file_contents%28sender.superview.superview.superview.file_label.text%2C%20file_contents%2C%20%27local%27%29%5Cn%5Ctwebbrowser.open%28%27editorial%3A%2F%2Fopen%2F%27%20%2B%20sender.superview.superview.superview.file_label.text%20%2B%20%27%3Froot%3Dlocal%27%29%5Cn%5Ctsender.superview.superview.superview.close%28%29%5Cn%5Cndef%20overwrite_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Overwrite%20With%20File%20in%20Editor%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20overwrite_with_file_in_editor%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20action%5Cndef%20overwrite_with_file_in_editor%28sender%29%3A%5Cn%5Ctfilename%20%3D%20sender.superview.superview.superview.file_label.text%5Cn%5Cttext%20%3D%20editor.get_text%28%29%5Cn%5Ctpath%20%3D%20sender.superview.superview.superview.path_field.text%5Cn%5Ctftp.overwrite_file%28filename%2C%20text%2C%20path%29%5Cn%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Ct%5Cndef%20rename_file_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.enabled%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.file_label.delegate%20%3D%20file_label_delegate%28sender.superview.superview.superview.file_label%2C%20%27file%27%29%5Cn%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20True%5Cn%5Ctsender.superview.superview.superview.file_label.name%20%3D%20sender.superview.superview.superview.file_label.text%5Cn%5Ctsender.superview.superview.superview.file_label.begin_editing%28%29%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Rename%20File%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20rename_file%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20Action%5Cndef%20rename_file%28sender%29%3A%5Cn%5Ctif%20not%20ftp.check_file_exists%28sender.superview.superview.superview.file_label.text%2Csender.superview.superview.superview.path_field.text%29%3A%5Cn%5Ct%5Ctftp.ftp.rename%28sender.superview.superview.superview.file_label.name%2C%20sender.superview.superview.superview.file_label.text%29%5Cn%5Ct%5Ctsender.superview.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.superview.path_field.text%29%5Cn%5Ct%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20False%5Cn%5Ct%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Ctelse%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27File%20%5C%5C%27%27%20%2B%20sender.superview.superview.superview.file_label.text%20%2B%20%27%5C%5C%27%20Already%20Exists%27%29%5Cn%5Ct%5Cndef%20delete_file_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Permanently%20Delete%20File%3F%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20permanently_delete_file%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20action%5Cndef%20permanently_delete_file%28sender%29%3A%5Cn%5Ctftp.ftp.delete%28sender.superview.superview.superview.file_label.text%29%5Cn%5Ctsender.superview.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.superview.path_field.text%29%5Cn%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Ct%5Cndef%20move_file_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.back_button.enabled%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.home_button.enabled%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.move_path_field.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ctsender.superview.superview.superview.move_list_source.items%20%3D%20build_move_directory%28sender.superview.superview.superview.move_path_field.text%29%5Cn%5Ctsender.superview.superview.superview.select_folder.title%20%3D%20%27Move%20to%20%5C%5C%27%27%20%2B%20sender.superview.superview.superview.move_path_field.text%20%2B%20%27%5C%5C%27%27%5Cn%5Ctsender.superview.superview.superview.move_table_view.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.move_back_button.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.move_cancel_button.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.select_folder.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.select_folder.action%20%3D%20file_select_folder_button_tapped%5Cn%5Ctsender.superview.superview.superview.move_label_background.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.table_view.hidden%20%3D%20True%5Cn%23%20Secondary%20action%5Cndef%20file_select_folder_button_tapped%28sender%29%3A%5Cn%5Ctftp.move_file%28sender.superview.superview.file_label.text%2C%20sender.superview.superview.path_field.text%2C%20sender.superview.superview.move_path_field.text%29%5Cn%5Ctsender.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.path_field.text%29%5Cn%5Ctsender.hidden%20%3D%20True%5Cn%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.file_label.editable%20%3D%20False%5Cn%5Ctsender.superview.superview.move_table_view.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.move_back_button.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.move_cancel_button.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.move_label_background.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.table_view.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.back_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.home_button.enabled%20%3D%20True%5Cn%5Ct%5Cndef%20duplicate_file_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Duplicate%20File%3F%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20duplicate_file%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20action%5Cndef%20duplicate_file%28sender%29%3A%5Cn%5Ctftp.duplicate_file%28sender.superview.superview.superview.file_label.text%2C%20sender.superview.superview.superview.path_field.text%29%5Cn%5Ctsender.superview.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.superview.path_field.text%29%5Cn%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Ct%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20Folder%20Actions%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cndef%20rename_folder_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.enabled%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.file_label.delegate%20%3D%20file_label_delegate%28sender.superview.superview.superview.file_label%2C%20%27folder%27%29%5Cn%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20True%5Cn%5Ctsender.superview.superview.superview.file_label.name%20%3D%20sender.superview.superview.superview.file_label.text%5Cn%5Ctsender.superview.superview.superview.file_label.begin_editing%28%29%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Rename%20Folder%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20rename_folder%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20action%5Cndef%20rename_folder%28sender%29%3A%5Cn%5Ctif%20not%20ftp.check_file_exists%28sender.superview.superview.superview.file_label.text%2Csender.superview.superview.superview.path_field.text%29%3A%5Cn%5Ct%5Ctftp.ftp.rename%28sender.superview.superview.superview.file_label.name%2C%20sender.superview.superview.superview.file_label.text%29%5Cn%5Ct%5Ctsender.superview.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.superview.path_field.text%29%5Cn%5Ct%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.superview.file_label.editable%20%3D%20False%5Cn%5Ct%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ct%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Ctelse%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27Folder%20%5C%5C%27%27%20%2B%20sender.superview.superview.superview.file_label.text%20%2B%20%27%5C%5C%27%20Already%20Exists%27%29%5Cn%5Cndef%20delete_folder_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Delete%20Folder%20%26%20Contents%3F%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20permanently_delete_folder%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20action%5Cndef%20permanently_delete_folder%28sender%29%3A%5Cn%5Ctftp.delete_folder%28sender.superview.superview.superview.file_label.text%2C%20sender.superview.superview.superview.path_field.text%29%5Cn%5Ctsender.superview.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.superview.path_field.text%29%5Cn%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Cndef%20move_folder_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.back_button.enabled%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.home_button.enabled%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.move_path_field.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ctsender.superview.superview.superview.move_list_source.items%20%3D%20build_move_directory%28sender.superview.superview.superview.move_path_field.text%29%5Cn%5Ctsender.superview.superview.superview.select_folder.title%20%3D%20%27Move%20to%20%5C%5C%27%27%20%2B%20sender.superview.superview.superview.move_path_field.text%20%2B%20%27%5C%5C%27%27%5Cn%5Ctsender.superview.superview.superview.move_table_view.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.move_back_button.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.move_cancel_button.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.select_folder.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.select_folder.action%20%3D%20folder_select_folder_button_tapped%5Cn%5Ctsender.superview.superview.superview.move_label_background.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.superview.table_view.hidden%20%3D%20True%5Cn%23%20Secondary%20action%5Cndef%20folder_select_folder_button_tapped%28sender%29%3A%5Cn%5Ctftp.move_folder%28sender.superview.superview.file_label.text%2C%20sender.superview.superview.path_field.text%2C%20sender.superview.superview.move_path_field.text%29%5Cn%5Ctsender.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.path_field.text%29%5Cn%5Ctsender.hidden%20%3D%20True%5Cn%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.file_label.editable%20%3D%20False%5Cn%5Ctsender.superview.superview.move_table_view.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.move_back_button.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.move_cancel_button.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.move_label_background.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.table_view.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.back_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.home_button.enabled%20%3D%20True%5Cn%5Ct%5Cndef%20duplicate_folder_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.superview.superview.secondary_button1.title%20%3D%20%27Duplicate%20Folder%20%26%20Contents%3F%27%5Cn%5Ctsender.superview.superview.superview.secondary_button1.action%20%3D%20duplicate_entire_folder%5Cn%5Ctsender.superview.superview.superview.secondary_actions.hidden%20%3D%20False%5Cn%23%20Secondary%20action%5Cndef%20duplicate_entire_folder%28sender%29%3A%5Cn%5Ctftp.duplicate_folder%28sender.superview.superview.superview.file_label.text%2C%20sender.superview.superview.superview.path_field.text%29%5Cn%5Ctsender.superview.superview.superview.list_source.items%20%3D%20build_directory%28sender.superview.superview.superview.path_field.text%29%5Cn%5Ctsender.superview.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.hidden%20%3D%20True%5Cn%5Ct%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%23%23%23%23%20Delegates%20%23%23%23%23%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20Navigation%20Delegate%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cnclass%20navigation_delegate%28%29%3A%5Cn%5Ctdef%20tableview_did_select%28self%2C%20tableview%2C%20section%2C%20row%29%3A%5Cn%5Ct%5Ct%23%20Save%20title%20of%20tapped%20row%5Cn%5Ct%5Ctselection%20%3D%20tableview.data_source.items%5Brow%5D%5B%27title%27%5D%5Cn%5Ct%5Ct%23%20If%20selected%20item%20is%20a%20folder...%5Cn%5Ct%5Ctif%20tableview.data_source.items%5Brow%5D%5B%27accessory_type%27%5D%20%21%3D%20%27none%27%3A%5Cn%5Ct%5Ct%5Ct%23%20Build%20the%20new%20directory%5Cn%5Ct%5Ct%5Ctif%20tableview.superview.path_field.text%5B-1%3A%5D%20%21%3D%20%27%2F%27%3A%5Cn%5Ct%5Ct%5Ct%5Cttableview.superview.list_source.items%20%3D%20build_directory%28tableview.superview.path_field.text%20%2B%20%27%2F%27%20%2B%20selection%29%5Cn%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Cttableview.superview.list_source.items%20%3D%20build_directory%28tableview.superview.path_field.text%20%2B%20selection%29%5Cn%5Ct%5Ct%5Ct%23%20Set%20text%20field%20to%20display%20new%20path%5Cn%5Ct%5Ct%5Cttableview.superview.path_field.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ct%5Ct%5Ct%23%20Enable%20the%20back%20button%20if%20you%20are%20no%20longer%20on%20the%20top%20level%20directory%5Cn%5Ct%5Ct%5Ctif%20tableview.superview.path_field.text%20%21%3D%20%27%2F%27%3A%5Cn%5Ct%5Ct%5Ct%5Cttableview.superview.back_button.enabled%20%3D%20True%5Cn%5Ct%5Ct%23%20If%20selected%20item%20is%20a%20file...%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Cttableview.superview.button1.title%20%3D%20%27Download%20%26%20Open%27%5Cn%5Ct%5Ct%5Cttableview.superview.button1.action%20%3D%20open_button_tapped%5Cn%5Ct%5Ct%5Cttableview.superview.button2.title%20%3D%20%27Overwrite%20File%27%5Cn%5Ct%5Ct%5Cttableview.superview.button2.action%20%3D%20overwrite_button_tapped%5Cn%5Ct%5Ct%5Cttableview.superview.button3.title%20%3D%20%27Rename%20File%27%5Cn%5Ct%5Ct%5Cttableview.superview.button3.action%20%3D%20rename_file_button_tapped%5Cn%5Ct%5Ct%5Cttableview.superview.button4.title%20%3D%20%27Delete%20File%27%5Cn%5Ct%5Ct%5Cttableview.superview.button4.action%20%3D%20delete_file_button_tapped%5Cn%5Ct%5Ct%5Cttableview.superview.button5.title%20%3D%20%27Move%20File%27%5Cn%5Ct%5Ct%5Cttableview.superview.button5.action%20%3D%20move_file_button_tapped%5Cn%5Ct%5Ct%5Cttableview.superview.button6.title%20%3D%20%27Duplicate%20File%27%5Cn%5Ct%5Ct%5Cttableview.superview.button6.action%20%3D%20duplicate_file_button_tapped%5Cn%5Ct%5Ct%5Cttableview.superview.button7.title%20%3D%20%27Copy%20File%20Path%27%5Cn%5Ct%5Ct%5Cttableview.superview.button7.action%20%3D%20copy_path_button_tapped%5Cn%5Ct%5Ct%5Cttableview.superview.button3.hidden%20%3D%20False%5Cn%5Ct%5Ct%5Cttableview.superview.button4.hidden%20%3D%20False%5Cn%5Ct%5Ct%5Cttableview.superview.button5.hidden%20%3D%20False%5Cn%5Ct%5Ct%5Cttableview.superview.button6.hidden%20%3D%20False%5Cn%5Ct%5Ct%5Cttableview.superview.button7.hidden%20%3D%20False%5Cn%5Ct%5Ct%5Cttableview.superview.button8.hidden%20%3D%20True%5Cn%5Ct%5Ct%5Cttableview.superview.file_icon.image%20%3D%20ui.Image.named%28%27ionicons-document-24%27%29%5Cn%5Ct%5Ct%5Cttableview.superview.file_label.text%20%3D%20selection%5Cn%5Ct%5Ct%5Cttableview.superview.button_actions.hidden%20%3D%20False%5Cn%5Ct%5Ct%5Cttableview.superview.plus_button.enabled%20%3D%20False%5Cn%5Ct%5Ct%5Cttableview.superview.back_button.enabled%20%3D%20True%5Cn%5Ct%5Ct%5Cttableview.superview.close_button.center%20%3D%20%28tableview.superview.width%2F2%2C272%29%5Cn%5Ct%5Ct%5Ctif%20tableview.superview.height%20%3C%20500%3A%5Cn%5Ct%5Ct%5Ct%5Cttableview.superview.scroll_buttons.content_size%20%3D%20%28tableview.superview.width%2C%20325%29%5Cn%5Ct%5Ct%5Cttableview.superview.scroll_buttons.content_offset%20%3D%20%280%2C0%29%5Cn%5Ct%5Cn%5Ctdef%20tableview_accessory_button_tapped%28self%2C%20tableview%2C%20section%2C%20row%29%3A%5Cn%5Ct%5Ct%23%20Save%20title%20of%20tapped%20row%5Cn%5Ct%5Ctselection%20%3D%20tableview.data_source.items%5Brow%5D%5B%27title%27%5D%5Cn%5Ct%5Cttableview.superview.button1.title%20%3D%20%27Rename%20Folder%27%5Cn%5Ct%5Cttableview.superview.button1.action%20%3D%20rename_folder_button_tapped%5Cn%5Ct%5Cttableview.superview.button2.title%20%3D%20%27Delete%20Folder%27%5Cn%5Ct%5Cttableview.superview.button2.action%20%3D%20delete_folder_button_tapped%5Cn%5Ct%5Cttableview.superview.button3.title%20%3D%20%27Move%20Folder%27%5Cn%5Ct%5Cttableview.superview.button3.action%20%3D%20move_folder_button_tapped%5Cn%5Ct%5Cttableview.superview.button4.title%20%3D%20%27Duplicate%20Folder%27%5Cn%5Ct%5Cttableview.superview.button4.action%20%3D%20duplicate_folder_button_tapped%5Cn%5Ct%5Cttableview.superview.button5.title%20%3D%20%27Copy%20Folder%20Path%27%5Cn%5Ct%5Cttableview.superview.button5.action%20%3D%20copy_path_button_tapped%5Cn%5Ct%5Cttableview.superview.button3.hidden%20%3D%20False%5Cn%5Ct%5Cttableview.superview.button4.hidden%20%3D%20False%5Cn%5Ct%5Cttableview.superview.button5.hidden%20%3D%20False%5Cn%5Ct%5Cttableview.superview.button6.hidden%20%3D%20True%5Cn%5Ct%5Cttableview.superview.button7.hidden%20%3D%20True%5Cn%5Ct%5Cttableview.superview.button8.hidden%20%3D%20True%5Cn%5Ct%5Cttableview.superview.file_icon.image%20%3D%20ui.Image.named%28%27ionicons-folder-24%27%29%5Cn%5Ct%5Cttableview.superview.file_label.text%20%3D%20selection%5Cn%5Ct%5Cttableview.superview.button_actions.hidden%20%3D%20False%5Cn%5Ct%5Cttableview.superview.plus_button.enabled%20%3D%20False%5Cn%5Ct%5Cttableview.superview.back_button.enabled%20%3D%20True%5Cn%5Ct%5Cttableview.superview.close_button.center%20%3D%20%28tableview.superview.width%2F2%2C213%29%5Cn%5Ct%5Ctif%20tableview.superview.height%20%3C%20500%3A%5Cn%5Ct%5Ct%5Cttableview.superview.scroll_buttons.content_size%20%3D%20%28tableview.superview.width%2C%20266%29%5Cn%5Ct%5Cttableview.superview.scroll_buttons.content_offset%20%3D%20%280%2C0%29%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20Path%20Field%20Delegate%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cnclass%20path_navigation_delegate%28%29%3A%5Cn%5Ctdef%20textfield_should_begin_editing%28self%2Ctextfield%29%3A%5Cn%5Ct%5Ctreturn%20True%5Cn%5Ct%23%20When%20user%20hits%20return%20after%20editing%20TextField...%5Cn%5Ctdef%20textfield_should_return%28self%2Ctextfield%29%3A%5Cn%5Ct%5Ct%23%20Get%20the%20current%20path%20from%20the%20text%20field%5Cn%5Ct%5Ctself.path%20%3D%20textfield.text%5Cn%5Ct%5Ct%23%20Test%20to%20see%20if%20the%20new%20path%20is%20a%20valid%20directory...%5Cn%5Ct%5Cttry%3A%5Cn%5Ct%5Ct%5Ct%23%20If%20it%20is%2C%20build%20that%20directory%20and%20load%20it%20into%20the%20ListDataSource%20element%5Cn%5Ct%5Ct%5Cttextfield.superview.list_source.items%20%3D%20build_directory%28self.path%29%5Cn%5Ct%5Ctexcept%3A%5Cn%5Ct%5Ct%5Ct%23%20If%20it%20is%20not%20a%20valid%20path%2C%20alert%20the%20user%20and%20reset%20the%20path%20in%20the%20TextField%20to%20what%20it%20was%20previously%5Cn%5Ct%5Ct%5Ctconsole.hud_alert%28%27Directory%20%5C%5C%27%27%20%2B%20self.path%20%2B%20%27%5C%5C%27%20Does%20Not%20Seem%20To%20Exist%27%2C%20%27error%27%2C%205.0%29%5Cn%5Ct%5Ct%5Cttextfield.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ct%5Cttextfield.end_editing%28%29%5Cn%5Ct%23%20If%20keyboard%20is%20dismissed%20without%20return%20being%20hit%2C%20reset%20the%20path%20in%20the%20TextField%20to%20the%20current%20directory%5Cn%5Ctdef%20textfield_did_end_editing%28self%2Ctextfield%29%3A%5Cn%5Ct%5Cttextfield.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ct%5Ct%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20File%20Label%20Delegate%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cnclass%20file_label_delegate%28%29%3A%5Cn%5Ctdef%20__init__%28self%2C%20textview%2C%20type%29%3A%5Cn%5Ct%5Ctself.type%20%3D%20type%5Cn%5Ctdef%20textview_should_begin_editing%28self%2C%20textview%29%3A%5Cn%5Ct%5Ctreturn%20True%5Cn%5Ctdef%20textview_did_begin_editing%28self%2C%20textview%29%3A%5Cn%5Ct%5Ctif%20self.type%20%3D%3D%20%27upload%27%3A%5Cn%5Ct%5Ct%5Cttextview.text%20%3D%20%27filename.txt%27%5Cn%5Ct%5Ctelif%20self.type%20%3D%3D%20%27new_folder%27%3A%5Cn%5Ct%5Ct%5Cttextview.text%20%3D%20%27foldername%27%5Cn%5Ct%5Ctelif%20self.type%20%3D%3D%20%27new_image%27%3A%5Cn%5Ct%5Ct%5Cttextview.text%20%3D%20%27imagename.png%27%5Cn%5Ctdef%20textview_did_end_editing%28self%2C%20textview%29%3A%5Cn%5Ct%5Cttextview.text%20%3D%20textview.name%5Cn%5Ctdef%20textview_should_change%28self%2C%20textview%2C%20range%2C%20replacement%29%3A%5Cn%5Ct%5Ctreturn%20True%5Cn%5Ctdef%20textview_did_change%28self%2C%20textview%29%3A%5Cn%5Ct%5Ctif%20self.type%20%3D%3D%20%27upload%27%20or%20self.type%20%3D%3D%20%27new_folder%27%20or%20self.type%20%3D%3D%20%27new_image%27%3A%5Cn%5Ct%5Ct%5Cttextview.superview.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ct%5Ctif%20%27%5C%5Cn%27%20in%20textview.text%3A%5Cn%5Ct%5Ct%5Cttextview.text%20%3D%20textview.text.rstrip%28%27%5C%5Cn%27%29%5Cn%5Ct%5Ct%5Cttextview.end_editing%28%29%5Cn%5Ct%5Ct%5Ctif%20textview.superview.superview.secondary_button1.enabled%20%3D%3D%20True%3A%5Cn%5Ct%5Ct%5Ct%5Ctif%20self.type%20%3D%3D%20%27folder%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctrename_folder%28textview.superview.superview.secondary_button1%29%5Cn%5Ct%5Ct%5Ct%5Ctelif%20self.type%20%3D%3D%20%27file%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctrename_file%28textview.superview.superview.secondary_button1%29%5Cn%5Ct%5Ct%5Ct%5Ctelif%20self.type%20%3D%3D%20%27upload%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctupload_file_in_editor%28textview.superview.superview.secondary_button1%29%5Cn%5Ct%5Ct%5Ct%5Ctelif%20self.type%20%3D%3D%20%27new_folder%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctcreate_folder%28textview.superview.superview.secondary_button1%29%5Cn%5Ct%5Ct%5Ct%5Ctelif%20self.type%20%3D%3D%20%27new_image%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctupload_image%28textview.superview.superview.secondary_button1%29%5Cn%5Ct%5Ctif%20self.type%20%21%3D%20%27upload%27%20and%20self.type%20%21%3D%20%27new_folder%27%20and%20self.type%20%21%3D%20%27new_image%27%3A%5Cn%5Ct%5Ct%5Ctif%20textview.text%20%21%3D%20textview.name%3A%5Cn%5Ct%5Ct%5Ct%5Cttextview.superview.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Cttextview.superview.superview.secondary_button1.enabled%20%3D%20False%5Cn%5Ctdef%20textview_did_change_selection%28self%2C%20textview%29%3A%5Cn%5Ct%5Ctpass%5Cn%5Ct%5Ct%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%20Move%20File%20Delegate%20%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cnclass%20move_delegate%28%29%3A%5Cn%5Ctdef%20tableview_did_select%28self%2C%20tableview%2C%20section%2C%20row%29%3A%5Cn%5Ct%5Ct%23%20Save%20title%20of%20tapped%20row%5Cn%5Ct%5Ctselection%20%3D%20tableview.data_source.items%5Brow%5D%5B%27title%27%5D%5Cn%5Ct%5Ct%23%20If%20selected%20item%20is%20a%20folder...%5Cn%5Ct%5Ctif%20tableview.data_source.items%5Brow%5D%5B%27accessory_type%27%5D%20%21%3D%20%27none%27%3A%5Cn%5Ct%5Ct%5Ct%23%20Build%20the%20new%20directory%5Cn%5Ct%5Ct%5Ctif%20tableview.superview.superview.move_path_field.text%5B-1%3A%5D%20%21%3D%20%27%2F%27%3A%5Cn%5Ct%5Ct%5Ct%5Cttableview.superview.superview.move_list_source.items%20%3D%20build_move_directory%28tableview.superview.superview.move_path_field.text%20%2B%20%27%2F%27%20%2B%20selection%29%5Cn%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Cttableview.superview.superview.move_list_source.items%20%3D%20build_directory%28tableview.superview.superview.move_path_field.text%20%2B%20selection%29%5Cn%5Ct%5Ct%5Ct%23%20Set%20text%20field%20to%20display%20new%20path%5Cn%5Ct%5Ct%5Cttableview.superview.superview.move_path_field.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ct%5Ct%5Cttableview.superview.superview.select_folder.title%20%3D%20%20%27Move%20to%20%5C%5C%27%27%20%2B%20tableview.superview.superview.move_path_field.text%20%2B%20%27%5C%5C%27%27%5Cn%5Ct%5Ct%5Ct%23%20Enable%20the%20back%20button%20if%20you%20are%20no%20longer%20on%20the%20top%20level%20directory%5Cn%5Ct%5Ct%5Ctif%20tableview.superview.superview.move_path_field.text%20%21%3D%20%27%2F%27%3A%5Cn%5Ct%5Ct%5Ct%5Cttableview.superview.superview.move_back_button.enabled%20%3D%20True%5Cn%5Cn%23%20Build%20directory%20to%20be%20displayed%20in%20rows%20of%20TableView%20for%20moving%20files%5Cndef%20build_move_directory%28path%3Dparams%5B%27Initial_Path%27%5D%29%3A%5Cn%5Ct%23%20Get%20directory%20as%20dictionary%20with%20keys%20marking%20items%20as%20files%20or%20folders%5Cn%5Ctlist_items%20%3D%20ftp.directory_with_types%28path%29%5Cn%5Ctsource_list%20%3D%20%5B%5D%5Cn%5Ct%23%20Pull%20data%20from%20list_items%20and%20prepare%20a%20list%20of%20dictionaries%20readable%20by%20ListDataSource%20element%5Cn%5Ctfor%20item%20in%20list_items%3A%5Cn%5Ct%5Ctd%20%3D%20%7B%7D%5Cn%5Ct%5Ctd%5B%27title%27%5D%20%3D%20list_items%5Bitem%5D%5B%27title%27%5D%5Cn%5Ct%5Ct%23%20For%20files%2C%20do%20not%20include%20accessory%20action%20icons%20in%20their%20rows%2C%20but%20mark%20them%20with%20file%20icons%5Cn%5Ct%5Ctif%20list_items%5Bitem%5D%5B%27type%27%5D%20%3D%3D%20%27file%27%3A%5Cn%5Ct%5Ct%5Ctd%5B%27accessory_type%27%5D%20%3D%20%27none%27%5Cn%5Ct%5Ct%5Ctd%5B%27image%27%5D%20%3D%20%27ionicons-document-24%27%5Cn%5Ct%5Ct%23%20For%20folders%2C%20add%20chevron%20arrow%20accessory%20action%20icons%20to%20rows%20and%20mark%20with%20folder%20icons%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctd%5B%27accessory_type%27%5D%20%3D%20%27disclosure_indicator%27%5Cn%5Ct%5Ct%5Ctd%5B%27image%27%5D%20%3D%20%27ionicons-folder-24%27%5Cn%5Ct%5Ct%23%20Add%20each%20prepared%20dictionary%20to%20overall%20list%20of%20dictionaries%5Cn%5Ct%5Ctif%20d%5B%27title%27%5D%5B%3A1%5D%20%21%3D%20%27.%27%3A%5Cn%5Ct%5Ct%5Ctsource_list.append%28d%29%5Cn%5Ct%23%20Return%20list%20of%20dictionaries%20with%20all%20files%20and%20folders%20properly%20flagged%5Ct%5Cn%5Ctreturn%20source_list%5Cn%5Ct%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%23%23%23%23%20Move%20File%2FFolder%20Buttons%20%23%23%23%23%23%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cndef%20move_back_button_tapped%28sender%29%3A%5Cn%5Ct%23%20Get%20current%20path%5Cn%5Ctpath%20%3D%20sender.superview.superview.move_path_field.text%5Cn%5Ct%23%20Split%20the%20path%20at%20slashes%5Cn%5Ctpath%20%3D%20path.split%28%27%2F%27%29%5Cn%5Ctnew_path%20%3D%20%27%27%5Cn%5Ct%23%20Put%20the%20path%20back%20together%20with%20slashes%2C%20but%20leave%20the%20final%20path%20item%20removed%20%28path%20is%20back%20one%20level%29%5Cn%5Ctfor%20i%20in%20range%28len%28path%29%20-%201%29%3A%5Cn%5Ct%5Ctnew_path%20%2B%3D%20path%5Bi%5D%20%2B%20%27%2F%27%5Cn%5Ct%23%20Remove%20trailing%20backslash%2C%20unless%20you%20are%20in%20the%20top%20level%20directory%20%27%2F%27%5Cn%5Ctif%20len%28new_path%29%20%3E%201%3A%5Cn%5Ct%5Ctnew_path%20%3D%20new_path%5B%3A-1%5D%5Cn%5Ct%23%20Build%20the%20directory%20for%20the%20new%20path%20and%20send%20it%20to%20the%20ListDataSource%20element%5Cn%5Ctsender.superview.superview.move_list_source.items%20%3D%20build_move_directory%28new_path%29%5Cn%5Ct%23%20Adjust%20the%20title%20TextField%20to%20display%20the%20new%20path%5Cn%5Ctsender.superview.superview.move_path_field.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ctsender.superview.superview.select_folder.title%20%3D%20%27Move%20to%20%5C%5C%27%27%20%2B%20sender.superview.superview.move_path_field.text%20%2B%20%27%5C%5C%27%27%5Cn%5Ct%23%20If%20the%20new%20path%20leaves%20you%20at%20the%20top%20level%20directory%2C%20disable%20the%20back%20button%5Cn%5Ctif%20new_path%20%3D%3D%20%27%2F%27%3A%5Cn%5Ct%5Ctsender.enabled%20%3D%20False%5Cn%5Ct%5Ct%5Cndef%20move_cancel_button_tapped%28sender%29%3A%5Cn%5Ctsender.superview.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.move_table_view.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.move_back_button.hidden%20%3D%20True%5Cn%5Ctsender.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.select_folder.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.move_label_background.hidden%20%3D%20True%5Cn%5Ctsender.superview.superview.table_view.hidden%20%3D%20False%5Cn%5Ctsender.superview.superview.plus_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.back_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.home_button.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.secondary_button1.enabled%20%3D%20True%5Cn%5Ctsender.superview.superview.file_label.editable%20%3D%20False%5Cn%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cn%23%23%23%23%23%20User%20Interface%20%23%23%23%23%23%5Cn%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%5Cnclass%20FTP_Client%28ui.View%29%3A%5Cn%5Ctdef%20__init__%28self%2Cdata_source%29%3A%5Cn%5Ct%5Ct%23%20Set%20up%20the%20view%5Cn%5Ct%5Ctself.bounds%20%3D%20%280%2C0%2C320%2C500%29%5Cn%5Ct%5Ctself.background_color%20%3D%20%27%23F6F6F6%27%5Cn%5Ct%5Ctself.name%20%3D%20%27FTP_Client%27%5Cn%5Ct%5Ct%23%20Set%20up%20the%20loading%20icon%5Cn%5Ct%5Ctself.loading_view%20%3D%20ui.ActivityIndicator%28%29%5Cn%5Ct%5Ctself.loading_view.center%20%3D%20%28self.width%20%2F%202%2C%20self.height%20%2F%202%29%5Cn%5Ct%5Ctself.loading_view.style%20%3D%20ui.ACTIVITY_INDICATOR_STYLE_GRAY%5Cn%5Ct%5Ctself.add_subview%28self.loading_view%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20TextField%20where%20the%20path%20will%20be%20displayed%5Cn%5Ct%5Ctself.path_field%20%3D%20ui.TextField%28%29%5Cn%5Ct%5Ctself.path_field.placeholder%20%3D%20%27%2F%27%5Cn%5Ct%5Ctself.path_field.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ct%5Ctself.path_field.frame%20%3D%20%2815%2C60%2Cself.width-30%2C32%29%20%23%20Define%20the%20field%27s%20coordinates%20and%20measurments%5Cn%5Ct%5Ctself.path_field.alignment%20%3D%20ui.ALIGN_CENTER%5Cn%5Ct%5Ctself.path_field.delegate%20%3D%20path_navigation_delegate%28%29%20%23%20Set%20up%20the%20TextField%27s%20delegate%5Cn%5Ct%5Ctself.add_subview%28self.path_field%29%5Cn%5Ct%5Ctnav_background%20%3D%20ui.Label%28%29%5Cn%5Ct%5Ctnav_background.frame%20%3D%20%2847%2C0%2Cself.width%2C50%29%5Cn%5Ct%5Ctnav_background.background_color%20%3D%20%27%23f0f0f0%27%5Cn%5Ct%5Ctnav_background.center%20%3D%20%28self.width%2F2%2C25%29%5Cn%5Ct%5Ctnav_background.alignment%20%3D%20ui.ALIGN_CENTER%5Cn%5Ct%5Ctnav_background.send_to_back%28%29%5Cn%5Ct%5Ctself.add_subview%28nav_background%29%5Cn%5Ct%5Cttitle%20%3D%20ui.Label%28%29%5Cn%5Ct%5Cttitle.text%20%3D%20params%5B%27FTP_Server%27%5D%20%23%20Text%20to%20display%20on%20title%20bar%5Cn%5Ct%5Cttitle.frame%20%3D%20%2847%2C0%2Cself.width-128%2C50%29%5Cn%5Ct%5Cttitle.background_color%20%3D%20%27%23f0f0f0%27%5Cn%5Ct%5Cttitle.center%20%3D%20%28self.width%2F2%2B15%2C25%29%5Cn%5Ct%5Cttitle.alignment%20%3D%20ui.ALIGN_CENTER%5Cn%5Ct%5Cttitle.send_to_back%28%29%5Cn%5Ct%5Ctself.add_subview%28title%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20back%20button%5Cn%5Ct%5Ctself.back_button%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.back_button.image%20%3D%20ui.Image.named%28%27ionicons-chevron-left-24%27%29%5Cn%5Ct%5Ctself.back_button.frame%20%3D%20%2810%2C10%2C32%2C32%29%5Cn%5Ct%5Ctself.back_button.font%20%3D%20%28%27%3Csystem%3E%27%2C%2025%29%5Cn%5Ct%5Ctself.back_button.action%20%3D%20back_button_tapped%20%23%20Set%20the%20back%20button%27s%20action%20to%20back_button_tapped%20function%5Cn%5Ct%5Ctself.add_subview%28self.back_button%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20plus%20button%5Cn%5Ct%5Ctself.plus_button%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.plus_button.image%20%3D%20ui.Image.named%28%27ionicons-plus-24%27%29%5Cn%5Ct%5Ctself.plus_button.frame%20%3D%20%28275%2C10%2C32%2C32%29%5Cn%5Ct%5Ctself.plus_button.font%20%3D%20%28%27%3Csystem%3E%27%2C%2025%29%5Cn%5Ct%5Ctself.plus_button.action%20%3D%20plus_button_tapped%20%23%20Set%20the%20plus%20button%27s%20action%20to%20plus_button_tapped%20function%5Cn%5Ct%5Ctself.add_subview%28self.plus_button%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20home%20button%5Cn%5Ct%5Ctself.home_button%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.home_button.image%20%3D%20ui.Image.named%28%27ionicons-home-24%27%29%5Cn%5Ct%5Ctself.home_button.frame%20%3D%20%2845%2C10%2C32%2C32%29%5Cn%5Ct%5Ctself.home_button.font%20%3D%20%28%27%3Csystem%3E%27%2C%2025%29%5Cn%5Ct%5Ctself.home_button.action%20%3D%20home_button_tapped%20%23%20Set%20the%20back%20button%27s%20action%20to%20back_button_tapped%20function%5Cn%5Ct%5Ctself.add_subview%28self.home_button%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20data%20source%20element%20for%20the%20TableView%5Cn%5Ct%5Ctself.list_source%20%3D%20ui.ListDataSource%28items%3D%5B%5D%29%5Cn%5Ct%5Ctself.list_source.move_enabled%20%3D%20False%5Cn%5Ct%5Ctself.list_source.delete_enabled%20%3D%20False%5Cn%5Ct%5Ctself.list_source.items%20%3D%20data_source%20%23%20Set%20data%20source%20to%20the%20element%20that%20will%20be%20passed%20into%20this%20class%20upon%20initiation%5Cn%5Ct%5Ct%23%20Set%20up%20the%20TableView%5Cn%5Ct%5Ctself.table_view%20%3D%20ui.TableView%28%29%5Cn%5Ct%5Ctself.table_view.row_height%20%3D%2044%5Cn%5Ct%5Ctself.table_view.delegate%20%3D%20navigation_delegate%28%29%20%23%20Link%20the%20navigation%20delegate%5Cn%5Ct%5Ctself.table_view.frame%20%3D%20%280%2C100%2Cself.width%2C%20self.height%20-%20100%29%5Cn%5Ct%5Ctself.table_view.flex%20%3D%20%27H%27%5Cn%5Ct%5Ctself.table_view.data_source%20%3D%20self.list_source%20%23%20Set%20the%20data%20source%20to%20the%20ListDataSource%20element%5Cn%5Ct%5Ctself.add_subview%28self.table_view%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20view%20for%20button%20actions%5Cn%5Ct%5Ctself.button_actions%20%3D%20ui.View%28%29%5Cn%5Ct%5Ctself.button_actions.bounds%20%3D%20%280%2C0%2C320%2C460%29%5Cn%5Ct%5Ctself.button_actions.center%20%3D%20%28self.width%2F2%2Cself.height%2F2%2B40%29%5Cn%5Ct%5Ctself.button_actions.background_color%20%3D%20%27%23f0f0f0%27%5Cn%5Ct%5Ctself.button_actions.name%20%3D%20%27button_actions%27%5Cn%5Ct%5Ctself.button_actions.flex%20%3D%20%27WH%27%5Cn%5Ct%5Ctself.button_actions.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.button_actions.hidden%20%3D%20True%20%23%20Hide%20view%20until%20needed%5Cn%5Ct%5Ctself.add_subview%28self.button_actions%29%5Cn%5Ct%5Ctself.label_background%20%3D%20ui.Label%28%29%5Cn%5Ct%5Ctself.label_background.text%20%3D%20%27%27%5Cn%5Ct%5Ctself.label_background.frame%20%3D%20%280%2C0%2Cself.width%2C50%29%5Cn%5Ct%5Ctself.label_background.center%20%3D%20%28self.width%2F2%2Cself.height%2F8-28%29%5Cn%5Ct%5Ctself.label_background.background_color%20%3D%20%27%23f8f8f8%27%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.label_background%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20title%20label%20to%20display%20which%20file%20was%20selected%5Cn%5Ct%5Ctself.file_label%20%3D%20ui.TextView%28%29%5Cn%5Ct%5Ctself.file_label.font%20%3D%20%28%27%3Csystem%3E%27%2C%2018%29%5Cn%5Ct%5Ctself.file_label.frame%20%3D%20%280%2C0%2Cself.width-55%2C45%29%5Cn%5Ct%5Ctself.file_label.center%20%3D%20%28self.width%2F2%2B25%2Cself.height%2F8-25%29%5Cn%5Ct%5Ctself.file_label.background_color%20%3D%20%27%23f8f8f8%27%5Cn%5Ct%5Ctself.file_label.alignment%20%3D%20ui.ALIGN_LEFT%5Cn%5Ct%5Ctself.file_label.editable%20%3D%20False%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.file_label%29%5Cn%5Ct%5Ctself.file_icon%20%3D%20ui.ImageView%28%29%5Cn%5Ct%5Ctself.file_icon.frame%20%3D%20%280%2C0%2C23%2C23%29%5Cn%5Ct%5Ctself.file_icon.center%20%3D%20%2830%2Cself.height%2F8-28%29%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.file_icon%29%5Cn%5Ct%5Ct%23%20Set%20up%20scroll%20view%20so%20all%20buttons%20can%20be%20accessed%20if%20keyboard%20is%20up%5Cn%5Ct%5Ctself.scroll_buttons%20%3D%20ui.ScrollView%28%29%5Cn%5Ct%5Ctself.scroll_buttons.frame%20%3D%20%280%2C58%2Cself.width%2C%20self.height%20-%20100%29%5Cn%5Ct%5Ctself.scroll_buttons.background_color%20%3D%20%27%23f0f0f0%27%5Cn%5Ct%5Ctself.scroll_buttons.flex%20%3D%20%27H%27%5Cn%5Ct%5Ctself.scroll_buttons.always_bounce_vertical%20%3D%20True%5Cn%5Ct%5Ctself.scroll_buttons.bounces%20%3D%20True%5Cn%5Ct%5Ctself.scroll_buttons.content_size%20%3D%20%28self.width%2C%20self.height%20-%20100%29%5Cn%5Ct%5Ctself.scroll_buttons.paging_enabled%20%3D%20True%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.scroll_buttons%29%5Cn%5Ct%5Ct%23%20Set%20up%20button1%5Cn%5Ct%5Ctself.button1%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.button1.frame%20%3D%20%280%2C15%2Cself.width%2F2.2%2C50%29%5Cn%5Ct%5Ctself.button1.center%20%3D%20%28self.width%2F4%2B3%2Cself.height%2F8-27%29%5Cn%5Ct%5Ctself.button1.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.scroll_buttons.add_subview%28self.button1%29%5Cn%5Ct%5Ct%23%20Set%20up%20button2%5Cn%5Ct%5Ctself.button2%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.button2.frame%20%3D%20%280%2C15%2Cself.width%2F2.2%2C50%29%5Cn%5Ct%5Ctself.button2.center%20%3D%20%28self.width%2F2%2B77%2Cself.height%2F8-27%29%5Cn%5Ct%5Ctself.button2.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.button2.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.scroll_buttons.add_subview%28self.button2%29%5Cn%5Ct%5Ct%23%20Set%20up%20button3%5Cn%5Ct%5Ctself.button3%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.button3.frame%20%3D%20%280%2C15%2Cself.width%2F2.2%2C50%29%5Cn%5Ct%5Ctself.button3.center%20%3D%20%28self.width%2F4%2B3%2Cself.height%2F8%2B32%29%5Cn%5Ct%5Ctself.button3.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.button3.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.scroll_buttons.add_subview%28self.button3%29%5Cn%5Ct%5Ct%23%20Set%20up%20button4%5Cn%5Ct%5Ctself.button4%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.button4.frame%20%3D%20%280%2C15%2Cself.width%2F2.2%2C50%29%5Cn%5Ct%5Ctself.button4.center%20%3D%20%28self.width%2F2%2B77%2Cself.height%2F8%2B32%29%5Cn%5Ct%5Ctself.button4.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.button4.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.scroll_buttons.add_subview%28self.button4%29%5Cn%5Ct%5Ct%23%20Set%20up%20button5%5Cn%5Ct%5Ctself.button5%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.button5.frame%20%3D%20%280%2C15%2Cself.width%2F2.2%2C50%29%5Cn%5Ct%5Ctself.button5.center%20%3D%20%28self.width%2F4%2B3%2Cself.height%2F8%2B91%29%5Cn%5Ct%5Ctself.button5.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.button5.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.scroll_buttons.add_subview%28self.button5%29%5Cn%5Ct%5Ct%23%20Set%20up%20button6%5Cn%5Ct%5Ctself.button6%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.button6.frame%20%3D%20%280%2C15%2Cself.width%2F2.2%2C50%29%5Cn%5Ct%5Ctself.button6.center%20%3D%20%28self.width%2F2%2B77%2Cself.height%2F8%2B91%29%5Cn%5Ct%5Ctself.button6.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.button6.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.scroll_buttons.add_subview%28self.button6%29%5Cn%5Ct%5Ct%23%20Set%20up%20button7%5Cn%5Ct%5Ctself.button7%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.button7.frame%20%3D%20%280%2C15%2Cself.width%2F2.2%2C50%29%5Cn%5Ct%5Ctself.button7.center%20%3D%20%28self.width%2F4%2B3%2Cself.height%2F8%2B150%29%5Cn%5Ct%5Ctself.button7.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.button7.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.scroll_buttons.add_subview%28self.button7%29%5Cn%5Ct%5Ct%23%20Set%20up%20button8%5Cn%5Ct%5Ctself.button8%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.button8.frame%20%3D%20%280%2C15%2Cself.width%2F2.2%2C50%29%5Cn%5Ct%5Ctself.button8.center%20%3D%20%28self.width%2F2%2B77%2Cself.height%2F8%2B150%29%5Cn%5Ct%5Ctself.button8.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.button8.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.scroll_buttons.add_subview%28self.button8%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20close%20button%20to%20dismiss%20the%20button%20actions%20view%5Cn%5Ct%5Ctself.close_button%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.close_button.title%20%3D%20%27Close%27%5Cn%5Ct%5Ctself.close_button.frame%20%3D%20%280%2C15%2Cself.width-20%2C50%29%5Cn%5Ct%5Ctself.close_button.center%20%3D%20%28self.width%2F2%2Cself.height%2F8%2B210%29%5Cn%5Ct%5Ctself.close_button.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.close_button.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.close_button.action%20%3D%20close_button_tapped%5Cn%5Ct%5Ctself.scroll_buttons.add_subview%28self.close_button%29%5Cn%5Ct%5Ct%23%20Set%20up%20view%20for%20secondary%20actions%5Cn%5Ct%5Ctself.secondary_actions%20%3D%20ui.View%28%29%5Cn%5Ct%5Ctself.secondary_actions.bounds%20%3D%20%280%2C0%2C320%2C460%29%5Cn%5Ct%5Ctself.secondary_actions.center%20%3D%20%28self.width%2F2%2Cself.height%2F2%2B40%29%5Cn%5Ct%5Ctself.secondary_actions.background_color%20%3D%20%27%23f0f0f0%27%5Cn%5Ct%5Ctself.secondary_actions.name%20%3D%20%27secondary_actions%27%5Cn%5Ct%5Ctself.secondary_actions.flex%20%3D%20%27WH%27%5Cn%5Ct%5Ctself.secondary_actions.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.secondary_actions.hidden%20%3D%20True%20%23%20Hide%20view%20until%20needed%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.secondary_actions%29%5Cn%5Ct%5Ct%23%20Set%20up%20Secondary%20button1%5Cn%5Ct%5Ctself.secondary_button1%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.secondary_button1.frame%20%3D%20%280%2C15%2Cself.width-21%2C50%29%5Cn%5Ct%5Ctself.secondary_button1.center%20%3D%20%28self.width%2F2%2Cself.height%2F8-29%29%5Cn%5Ct%5Ctself.secondary_button1.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.secondary_button1.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.secondary_actions.add_subview%28self.secondary_button1%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20cancel%20button%20to%20dismiss%20the%20secondary%20actions%20view%5Cn%5Ct%5Ctself.cancel_button%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.cancel_button.title%20%3D%20%27Cancel%27%5Cn%5Ct%5Ctself.cancel_button.frame%20%3D%20%280%2C15%2Cself.width-20%2C50%29%5Cn%5Ct%5Ctself.cancel_button.center%20%3D%20%28self.width%2F2%2C94%29%5Cn%5Ct%5Ctself.cancel_button.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.cancel_button.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.cancel_button.action%20%3D%20cancel_button_tapped%5Cn%5Ct%5Ctself.secondary_actions.add_subview%28self.cancel_button%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20data%20source%20element%20for%20the%20TableView%20for%20moving%20files%5Cn%5Ct%5Ctself.move_list_source%20%3D%20ui.ListDataSource%28items%3D%5B%5D%29%5Cn%5Ct%5Ctself.move_list_source.move_enabled%20%3D%20False%5Cn%5Ct%5Ctself.move_list_source.delete_enabled%20%3D%20False%5Cn%5Ct%5Ct%23%20Set%20up%20the%20TableView%20for%20Moving%20Files%5Cn%5Ct%5Ctself.move_table_view%20%3D%20ui.TableView%28%29%5Cn%5Ct%5Ctself.move_table_view.row_height%20%3D%2044%5Cn%5Ct%5Ctself.move_table_view.delegate%20%3D%20move_delegate%28%29%20%23%20Link%20the%20navigation%20delegate%20for%20moving%20files%5Cn%5Ct%5Ctself.move_table_view.frame%20%3D%20%280%2C127%2Cself.width%2C%20self.height%20-%20185%29%5Cn%5Ct%5Ctself.move_table_view.flex%20%3D%20%27H%27%5Cn%5Ct%5Ctself.move_table_view.data_source%20%3D%20self.move_list_source%20%23%20Set%20the%20data%20source%20to%20the%20ListDataSource%20element%5Cn%5Ct%5Ctself.move_table_view.hidden%20%3D%20True%5Cn%5Ct%5Ctself.move_table_view.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.move_table_view.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.move_table_view%29%5Cn%5Ct%5Ctself.move_label_background%20%3D%20ui.Label%28%29%5Cn%5Ct%5Ctself.move_label_background.text%20%3D%20%27%27%5Cn%5Ct%5Ctself.move_label_background.frame%20%3D%20%280%2C0%2Cself.width%2C170%29%5Cn%5Ct%5Ctself.move_label_background.center%20%3D%20%28self.width%2F2%2Cself.height%2F8-28%29%5Cn%5Ct%5Ctself.move_label_background.hidden%20%3D%20True%5Cn%5Ct%5Ctself.move_label_background.background_color%20%3D%20%27%23f0f0f0%27%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.move_label_background%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20button%20to%20select%20folder%20to%20move%20file%20into%5Cn%5Ct%5Ctself.select_folder%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.select_folder.frame%20%3D%20%280%2C0%2Cself.width-20%2C50%29%5Cn%5Ct%5Ctself.select_folder.center%20%3D%20%28self.width%2F2%2Cself.height%2F8-28%29%5Cn%5Ct%5Ctself.select_folder.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.select_folder.hidden%20%3D%20True%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.select_folder%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20back%20button%20for%20the%20move%20file%20view%5Cn%5Ct%5Ctself.move_back_button%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.move_back_button.image%20%3D%20ui.Image.named%28%27ionicons-chevron-left-24%27%29%5Cn%5Ct%5Ctself.move_back_button.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.move_back_button.frame%20%3D%20%2810%2C69%2C50%2C50%29%5Cn%5Ct%5Ctself.move_back_button.font%20%3D%20%28%27%3Csystem%3E%27%2C%2025%29%5Cn%5Ct%5Ctself.move_back_button.action%20%3D%20move_back_button_tapped%20%23%20Set%20the%20back%20button%27s%20action%20to%20move_back_button_tapped%20function%5Cn%5Ct%5Ctself.move_back_button.hidden%20%3D%20True%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.move_back_button%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20cancel%20button%20to%20dismiss%20the%20move%20file%20view%5Cn%5Ct%5Ctself.move_cancel_button%20%3D%20ui.Button%28%29%5Cn%5Ct%5Ctself.move_cancel_button.title%20%3D%20%27Cancel%27%5Cn%5Ct%5Ctself.move_cancel_button.frame%20%3D%20%280%2C15%2Cself.width-80%2C50%29%5Cn%5Ct%5Ctself.move_cancel_button.center%20%3D%20%28self.width%2F2%2B30%2Cself.height%2F8%2B31%29%5Cn%5Ct%5Ctself.move_cancel_button.background_color%20%3D%20%27%23fff%27%5Cn%5Ct%5Ctself.move_cancel_button.alpha%20%3D%201.0%5Cn%5Ct%5Ctself.move_cancel_button.action%20%3D%20move_cancel_button_tapped%5Cn%5Ct%5Ctself.move_cancel_button.hidden%20%3D%20True%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.move_cancel_button%29%5Cn%5Ct%5Ct%23%20Set%20up%20the%20TextField%20where%20the%20current%20path%20will%20be%20held%5Cn%5Ct%5Ctself.move_path_field%20%3D%20ui.TextField%28%29%5Cn%5Ct%5Ctself.move_path_field.text%20%3D%20ftp.ftp.pwd%28%29%5Cn%5Ct%5Ctself.move_path_field.hidden%20%3D%20True%5Cn%5Ct%5Ctself.button_actions.add_subview%28self.move_path_field%29%5Cn%5Cn%23%20Build%20the%20initial%20directory%20and%20store%20it%20to%20the%20source_list%20variable%5Cnsource_list%20%3D%20build_directory%28%29%5Cn%5Cn%23%20Initiate%20the%20view%20and%20pass%20it%20the%20source_list%5Cnview%20%3D%20FTP_Client%28source_list%29%5Cn%23%20Present%20the%20view%20in%20a%20popover%5Cnview.present%28style%20%3D%20%27popover%27%2C%20hide_title_bar%20%3D%20True%29%5Cn%22%2C%20%228FA2F3A3-A33F-4E29-B492-31CA733496EC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2226DF96A7-B364-42B8-93AE-439D0650676A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A9D399AD-1AE7-453D-9F37-9B66FE3DF0A9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%227C719344-C891-4AB0-95AE-A113A91D1248%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%221E45370D-12DA-4162-BE1D-00E57FD826A1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%226BB5C954-DACE-44BC-BAA5-BA386343A159%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2293D7ECD9-8FF4-4ED4-910A-1024DFFA875F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223D76ECEE-8D86-4F1F-B6CE-161124D878F3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2215E08D0D-F62D-4AC0-92EF-A2809B7DFBB6%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F276A4A8-DABC-4867-A241-5D85D5A2F8D4%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E4A933E5-76E4-4B94-8996-0AEEF41399E8%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22BFEAA0EA-62A6-4DA4-976D-493B3F338463%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%226D17DF79-ECA4-4EF9-B5D2-1AAB32E34D11%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2268A2A40E-0E92-4737-8FF2-F176B3645CBC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ui%22%3A%20%22%5B%7B%5C%22class%5C%22%3A%5C%22View%5C%22%2C%5C%22attributes%5C%22%3A%7B%5C%22background_color%5C%22%3A%5C%22RGBA%281.000000%2C1.000000%2C1.000000%2C1.000000%29%5C%22%2C%5C%22tint_color%5C%22%3A%5C%22RGBA%280.000000%2C0.478000%2C1.000000%2C1.000000%29%5C%22%2C%5C%22enabled%5C%22%3Atrue%2C%5C%22border_color%5C%22%3A%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5C%22flex%5C%22%3A%5C%22%5C%22%7D%2C%5C%22frame%5C%22%3A%5C%22%7B%7B0%2C%200%7D%2C%20%7B540%2C%20575%7D%7D%5C%22%2C%5C%22nodes%5C%22%3A%5B%7B%5C%22class%5C%22%3A%5C%22View%5C%22%2C%5C%22attributes%5C%22%3A%7B%5C%22name%5C%22%3A%5C%22view1%5C%22%2C%5C%22uuid%5C%22%3A%5C%22691D7635-ED21-47B1-BB0C-D03DF74DFA8B%5C%22%2C%5C%22enabled%5C%22%3Atrue%2C%5C%22border_color%5C%22%3A%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5C%22flex%5C%22%3A%5C%22%5C%22%7D%2C%5C%22frame%5C%22%3A%5C%22%7B%7B162%2C%20279%7D%2C%20%7B215%2C%2058%7D%7D%5C%22%2C%5C%22nodes%5C%22%3A%5B%5D%7D%2C%7B%5C%22class%5C%22%3A%5C%22Button%5C%22%2C%5C%22attributes%5C%22%3A%7B%5C%22font_size%5C%22%3A15%2C%5C%22enabled%5C%22%3Atrue%2C%5C%22flex%5C%22%3A%5C%22%5C%22%2C%5C%22font_bold%5C%22%3Afalse%2C%5C%22name%5C%22%3A%5C%22button1%5C%22%2C%5C%22uuid%5C%22%3A%5C%22891737B6-0D9F-4C3A-AABF-15D9B73D64AB%5C%22%2C%5C%22border_color%5C%22%3A%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5C%22title%5C%22%3A%5C%22Download%5C%22%7D%2C%5C%22frame%5C%22%3A%5C%22%7B%7B162%2C%20279%7D%2C%20%7B107%2C%2058%7D%7D%5C%22%2C%5C%22nodes%5C%22%3A%5B%5D%7D%2C%7B%5C%22class%5C%22%3A%5C%22Button%5C%22%2C%5C%22attributes%5C%22%3A%7B%5C%22font_size%5C%22%3A15%2C%5C%22enabled%5C%22%3Atrue%2C%5C%22flex%5C%22%3A%5C%22%5C%22%2C%5C%22font_bold%5C%22%3Afalse%2C%5C%22name%5C%22%3A%5C%22button2%5C%22%2C%5C%22uuid%5C%22%3A%5C%2293DF31A4-D186-45A9-8180-04EB9C517035%5C%22%2C%5C%22border_color%5C%22%3A%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5C%22title%5C%22%3A%5C%22Overwrite%5C%22%7D%2C%5C%22frame%5C%22%3A%5C%22%7B%7B270%2C%20279%7D%2C%20%7B107%2C%2058%7D%7D%5C%22%2C%5C%22nodes%5C%22%3A%5B%5D%7D%5D%7D%5D%22%2C%20%22D4B85DD2-E06A-467A-9137-868147CB5EF5%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E48FCCAE-719D-4713-936F-4217132FB7F9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229EF136C5-4458-4EC1-8B41-2CEC520138DB%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2207E5006D-CD8C-4383-8BE9-6A8D8F6CCC07%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22AA0729B7-4EA3-4539-98A3-9FA5550C5AF3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%5D%2C%20%22name%22%3A%20%22FTP_Client%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone9%2C4%22%2C%20%22systemVersion%22%3A%20%2213.1.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-transfer-upload-5.png%22%7D", "description": "This is a custom UI for Editorial which will present a fully featured FTP client in a popup window over the editor.\n\nAfter downloading you will need to tap the Info button next to the workflow, go to the Edit Workflow page, tap on the action block to expand it, and fill in your FTP login credentials in the variables below. Once you've done that just run it from the workflow menu and you should be set.", "title": "FTP_Client"}, {"url": "http://editorial-app.appspot.com/workflow/5826075359707136/uTQqi50FT3E", "workflow_data": {"username": "", "description": "Shows a diff that compares the selected document with text in the clipboard. The diff is shown in the Preview panel.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport difflib\nimport clipboard\nimport re\nimport editor\nimport console\n\ndef main():\n\ttext1 = clipboard.get()\n\tif not text1:\n\t\tconsole.hud_alert('Clipboard Empty', 'error')\n\t\tworkflow.stop()\n\t\treturn\n\ttext2 = editor.get_text()\n\tif not text2:\n\t\tconsole.hud_alert('No Text in Editor', 'error')\n\t\tworkflow.stop()\n\t\treturn\n\td = difflib.Differ()\n\tlines1 = text1.splitlines()\n\tlines2 = text2.splitlines()\n\tout_lines = []\n\tdiff_lines = list(d.compare(lines1, lines2))\n\tfor i, line in enumerate(diff_lines):\n\t\tif line.startswith('+'):\n\t\t\tout_lines.append('<pre class=\"diffline added\">%s</pre>' % line[2:])\n\t\telif line.startswith('-'):\n\t\t\tout_lines.append('<pre class=\"diffline deleted\">%s</pre>' % line[2:])\n\t\telif line.startswith('?') and i > 0:\n\t\t\tprev_line = diff_lines[i-1]\n\t\t\tranges = [(m.start(), m.end()) for m in re.finditer(r'\\++|-+', line)]\n\t\t\tfor start, end in reversed(ranges):\n\t\t\t\tspan_tag = '<span class=\"%s-highlight\">' % ('deleted' if line[start] == '-' else 'added')\n\t\t\t\tprev_line = prev_line[:start] + span_tag + prev_line[start:end] + '</span>' + prev_line[end:]\n\t\t\tpre_tag = '<pre class=\"diffline %s\">' % ('added' if prev_line.startswith('+') else 'deleted')\n\t\t\tout_lines[i-1] = '%s%s</pre>' % (pre_tag, prev_line[2:],)\n\t\t\tout_lines.append('')\n\t\telse:\n\t\t\tout_lines.append('<pre class=\"common\">%s</pre>' % line[2:])\n\t\n\tworkflow.set_output('\\n'.join(out_lines))\n\nmain()\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"html": {"text": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\"/>\n<style type=\"text/css\">\nbody {\n\tbackground-color: #f6f6f6;\n\tcolor: #333;\n\tmargin: 16px;\n}\npre {\n\tfont-family: Menlo, monospace;\n\twhite-space: pre-wrap;\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n\toverflow: hidden;\n}\npre.diffline {\n\tborder-width: 0 0 0 8px;\n\tmargin-left: -16px;\n\tmargin-right: -16px;\n\tpadding-right: 16px;\n\tpadding-left: 8px;\n\tborder-style: solid;\n}\n.added {\n\tcolor: green;\n\tbackground-color: #f4fbef;\n\tborder-color: #c9ffb3;\n}\n.deleted {\n\tcolor: #820e03;\n\tbackground-color: #fbefef;\n\tborder-color: #ffb3b4;\n}\n.deleted-highlight {\n\tbackground-color: #ffb3b4;\n\tborder-radius: 3px;\n}\n.added-highlight {\n\tbackground-color: #c9ffb3;\n\tborder-radius: 3px;\n}\n.common {\n\tcolor: #999;\n}\n</style>\n</head>\n<body>\n?\n</body>\n</html>", "tokenRanges": {"{763, 1}": "Input"}, "type": "advancedText"}, "baseURL": "", "title": "Diff"}, "class": "WorkflowActionShowHTMLPreview"}], "name": "Diff with Clipboard", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone9,4", "systemVersion": "13.1.2"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_DIRECTIONS.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Shows%20a%20diff%20that%20compares%20the%20selected%20document%20with%20text%20in%20the%20clipboard.%20The%20diff%20is%20shown%20in%20the%20Preview%20panel.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20difflib%5Cnimport%20clipboard%5Cnimport%20re%5Cnimport%20editor%5Cnimport%20console%5Cn%5Cndef%20main%28%29%3A%5Cn%5Cttext1%20%3D%20clipboard.get%28%29%5Cn%5Ctif%20not%20text1%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27Clipboard%20Empty%27%2C%20%27error%27%29%5Cn%5Ct%5Ctworkflow.stop%28%29%5Cn%5Ct%5Ctreturn%5Cn%5Cttext2%20%3D%20editor.get_text%28%29%5Cn%5Ctif%20not%20text2%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27No%20Text%20in%20Editor%27%2C%20%27error%27%29%5Cn%5Ct%5Ctworkflow.stop%28%29%5Cn%5Ct%5Ctreturn%5Cn%5Ctd%20%3D%20difflib.Differ%28%29%5Cn%5Ctlines1%20%3D%20text1.splitlines%28%29%5Cn%5Ctlines2%20%3D%20text2.splitlines%28%29%5Cn%5Ctout_lines%20%3D%20%5B%5D%5Cn%5Ctdiff_lines%20%3D%20list%28d.compare%28lines1%2C%20lines2%29%29%5Cn%5Ctfor%20i%2C%20line%20in%20enumerate%28diff_lines%29%3A%5Cn%5Ct%5Ctif%20line.startswith%28%27%2B%27%29%3A%5Cn%5Ct%5Ct%5Ctout_lines.append%28%27%3Cpre%20class%3D%5C%22diffline%20added%5C%22%3E%25s%3C%2Fpre%3E%27%20%25%20line%5B2%3A%5D%29%5Cn%5Ct%5Ctelif%20line.startswith%28%27-%27%29%3A%5Cn%5Ct%5Ct%5Ctout_lines.append%28%27%3Cpre%20class%3D%5C%22diffline%20deleted%5C%22%3E%25s%3C%2Fpre%3E%27%20%25%20line%5B2%3A%5D%29%5Cn%5Ct%5Ctelif%20line.startswith%28%27%3F%27%29%20and%20i%20%3E%200%3A%5Cn%5Ct%5Ct%5Ctprev_line%20%3D%20diff_lines%5Bi-1%5D%5Cn%5Ct%5Ct%5Ctranges%20%3D%20%5B%28m.start%28%29%2C%20m.end%28%29%29%20for%20m%20in%20re.finditer%28r%27%5C%5C%2B%2B%7C-%2B%27%2C%20line%29%5D%5Cn%5Ct%5Ct%5Ctfor%20start%2C%20end%20in%20reversed%28ranges%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctspan_tag%20%3D%20%27%3Cspan%20class%3D%5C%22%25s-highlight%5C%22%3E%27%20%25%20%28%27deleted%27%20if%20line%5Bstart%5D%20%3D%3D%20%27-%27%20else%20%27added%27%29%5Cn%5Ct%5Ct%5Ct%5Ctprev_line%20%3D%20prev_line%5B%3Astart%5D%20%2B%20span_tag%20%2B%20prev_line%5Bstart%3Aend%5D%20%2B%20%27%3C%2Fspan%3E%27%20%2B%20prev_line%5Bend%3A%5D%5Cn%5Ct%5Ct%5Ctpre_tag%20%3D%20%27%3Cpre%20class%3D%5C%22diffline%20%25s%5C%22%3E%27%20%25%20%28%27added%27%20if%20prev_line.startswith%28%27%2B%27%29%20else%20%27deleted%27%29%5Cn%5Ct%5Ct%5Ctout_lines%5Bi-1%5D%20%3D%20%27%25s%25s%3C%2Fpre%3E%27%20%25%20%28pre_tag%2C%20prev_line%5B2%3A%5D%2C%29%5Cn%5Ct%5Ct%5Ctout_lines.append%28%27%27%29%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctout_lines.append%28%27%3Cpre%20class%3D%5C%22common%5C%22%3E%25s%3C%2Fpre%3E%27%20%25%20line%5B2%3A%5D%29%5Cn%5Ct%5Cn%5Ctworkflow.set_output%28%27%5C%5Cn%27.join%28out_lines%29%29%5Cn%5Cnmain%28%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22html%22%3A%20%7B%22text%22%3A%20%22%3C%21DOCTYPE%20html%3E%5Cn%3Chtml%3E%5Cn%3Chead%3E%3Cmeta%20charset%3D%5C%22utf-8%5C%22%2F%3E%5Cn%3Cstyle%20type%3D%5C%22text%2Fcss%5C%22%3E%5Cnbody%20%7B%5Cn%5Ctbackground-color%3A%20%23f6f6f6%3B%5Cn%5Ctcolor%3A%20%23333%3B%5Cn%5Ctmargin%3A%2016px%3B%5Cn%7D%5Cnpre%20%7B%5Cn%5Ctfont-family%3A%20Menlo%2C%20monospace%3B%5Cn%5Ctwhite-space%3A%20pre-wrap%3B%5Cn%5Ctmargin-top%3A%200%3B%5Cn%5Ctmargin-bottom%3A%200%3B%5Cn%5Ctoverflow%3A%20hidden%3B%5Cn%7D%5Cnpre.diffline%20%7B%5Cn%5Ctborder-width%3A%200%200%200%208px%3B%5Cn%5Ctmargin-left%3A%20-16px%3B%5Cn%5Ctmargin-right%3A%20-16px%3B%5Cn%5Ctpadding-right%3A%2016px%3B%5Cn%5Ctpadding-left%3A%208px%3B%5Cn%5Ctborder-style%3A%20solid%3B%5Cn%7D%5Cn.added%20%7B%5Cn%5Ctcolor%3A%20green%3B%5Cn%5Ctbackground-color%3A%20%23f4fbef%3B%5Cn%5Ctborder-color%3A%20%23c9ffb3%3B%5Cn%7D%5Cn.deleted%20%7B%5Cn%5Ctcolor%3A%20%23820e03%3B%5Cn%5Ctbackground-color%3A%20%23fbefef%3B%5Cn%5Ctborder-color%3A%20%23ffb3b4%3B%5Cn%7D%5Cn.deleted-highlight%20%7B%5Cn%5Ctbackground-color%3A%20%23ffb3b4%3B%5Cn%5Ctborder-radius%3A%203px%3B%5Cn%7D%5Cn.added-highlight%20%7B%5Cn%5Ctbackground-color%3A%20%23c9ffb3%3B%5Cn%5Ctborder-radius%3A%203px%3B%5Cn%7D%5Cn.common%20%7B%5Cn%5Ctcolor%3A%20%23999%3B%5Cn%7D%5Cn%3C%2Fstyle%3E%5Cn%3C%2Fhead%3E%5Cn%3Cbody%3E%5Cn%3F%5Cn%3C%2Fbody%3E%5Cn%3C%2Fhtml%3E%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B763%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22baseURL%22%3A%20%22%22%2C%20%22title%22%3A%20%22Diff%22%7D%2C%20%22class%22%3A%20%22WorkflowActionShowHTMLPreview%22%7D%5D%2C%20%22name%22%3A%20%22Diff%20with%20Clipboard%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone9%2C4%22%2C%20%22systemVersion%22%3A%20%2213.1.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_DIRECTIONS.png%22%7D", "description": "Shows a diff that compares the selected document with text in the clipboard. The diff is shown in the Preview panel.", "title": "Diff with Clipboard"}, {"url": "http://editorial-app.appspot.com/workflow/5799339444142080/4qi_H8TEZHc", "workflow_data": {"username": "", "description": "Shows the iOS share sheet with the selected text as input. If nothing is selected, the entire document is shared. In a Markdown document, the text can optionally be converted to HTML first.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:syntax-mode"}, "type": "advancedText"}, "expression2": {"text": "markdown", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"button1Value": {"text": "[[html]]", "tokenRanges": {}, "type": "advancedText"}, "button3Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button2Value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "Share Document Text...", "button3Title": "", "button2Title": "Use Plain Text", "button1Title": "Convert to HTML", "message": {"text": "Do you want to convert this Markdown document to HTML for sharing?", "tokenRanges": {}, "type": "advancedText"}, "showCancelButton": true}, "class": "WorkflowActionShowAlert"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "[[html]]", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"tables": true, "autolinks": true, "smartypants": true, "strikethrough": true, "footnotes": true, "metadata": false, "superscript": true}, "class": "WorkflowActionConvertMarkdown"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\"/></head>\n<body>\n?\n</body>\n</html>", "tokenRanges": {"{67, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionShowShareSheet"}], "name": "Share...", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone10,6", "systemVersion": "13.1.1"}, "type": "wkflw", "public": true, "icon": "minicons-icons-navigation-log-out-2.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Shows%20the%20iOS%20share%20sheet%20with%20the%20selected%20text%20as%20input.%20If%20nothing%20is%20selected%2C%20the%20entire%20document%20is%20shared.%20In%20a%20Markdown%20document%2C%20the%20text%20can%20optionally%20be%20converted%20to%20HTML%20first.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Asyntax-mode%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22markdown%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22button1Value%22%3A%20%7B%22text%22%3A%20%22%5B%5Bhtml%5D%5D%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button3Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button2Value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Share%20Document%20Text...%22%2C%20%22button3Title%22%3A%20%22%22%2C%20%22button2Title%22%3A%20%22Use%20Plain%20Text%22%2C%20%22button1Title%22%3A%20%22Convert%20to%20HTML%22%2C%20%22message%22%3A%20%7B%22text%22%3A%20%22Do%20you%20want%20to%20convert%20this%20Markdown%20document%20to%20HTML%20for%20sharing%3F%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22showCancelButton%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionShowAlert%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%5B%5Bhtml%5D%5D%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22tables%22%3A%20true%2C%20%22autolinks%22%3A%20true%2C%20%22smartypants%22%3A%20true%2C%20%22strikethrough%22%3A%20true%2C%20%22footnotes%22%3A%20true%2C%20%22metadata%22%3A%20false%2C%20%22superscript%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionConvertMarkdown%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3C%21DOCTYPE%20html%3E%5Cn%3Chtml%3E%5Cn%3Chead%3E%3Cmeta%20charset%3D%5C%22utf-8%5C%22%2F%3E%3C%2Fhead%3E%5Cn%3Cbody%3E%5Cn%3F%5Cn%3C%2Fbody%3E%5Cn%3C%2Fhtml%3E%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B67%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionShowShareSheet%22%7D%5D%2C%20%22name%22%3A%20%22Share...%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone10%2C6%22%2C%20%22systemVersion%22%3A%20%2213.1.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-navigation-log-out-2.png%22%7D", "description": "Shows the iOS share sheet with the selected text as input. If nothing is selected, the entire document is shared. In a Markdown document, the text can optionally be converted to HTML first.", "title": "Share..."}, {"url": "http://editorial-app.appspot.com/workflow/5906740604305408/yd0sRhLF77U", "workflow_data": {"username": "", "description": "Modified version of Clean Up Completed Tasks workflow. Intended to be run every now and then on a Main.taskpaper file to empty the archive by filtering lines tagged as @done and prepending them to an Archive.taskpaper. The lack of disclosure triangles in Editorial means having to look at that eventually unwieldy archive, but I don't always want to just delete completed tasks. Thanks to @scottzero for the original workflow this is based on. \n\nNote: all I did was change the filenames (and paths) in the proper actions and then change the line filtering to @done.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"includeExtension": true, "includeFolder": false}, "class": "WorkflowActionGetFileName"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "todo.taskpaper", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression": {"text": "@done", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionFilterLines"}, {"pauseWithoutShowingParameters": true, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "completed", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression": {"text": "@done", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionFilterLines"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "todo", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": true, "ifNotExists": 0, "filename": "done.taskpaper"}, "class": "WorkflowActionGetFileContents"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "done", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": true, "text": {"text": "?\n?", "tokenRanges": {"{0, 1}": "completed", "{2, 1}": "done"}, "type": "advancedText"}, "ifNotExists": 0, "filename": "done.taskpaper"}, "class": "WorkflowActionSetFileContents"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": true, "text": {"text": "?", "tokenRanges": {"{0, 1}": "todo"}, "type": "advancedText"}, "ifNotExists": 0, "filename": "todo.taskpaper"}, "class": "WorkflowActionSetFileContents"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}], "name": "Clean Up TaskPaper Archive", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone6,1", "systemVersion": "12.4.2"}, "type": "wkflw", "public": true, "icon": "minicons-icons-folder-validate.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Modified%20version%20of%20Clean%20Up%20Completed%20Tasks%20workflow.%20Intended%20to%20be%20run%20every%20now%20and%20then%20on%20a%20Main.taskpaper%20file%20to%20empty%20the%20archive%20by%20filtering%20lines%20tagged%20as%20%40done%20and%20prepending%20them%20to%20an%20Archive.taskpaper.%20The%20lack%20of%20disclosure%20triangles%20in%20Editorial%20means%20having%20to%20look%20at%20that%20eventually%20unwieldy%20archive%2C%20but%20I%20don%27t%20always%20want%20to%20just%20delete%20completed%20tasks.%20Thanks%20to%20%40scottzero%20for%20the%20original%20workflow%20this%20is%20based%20on.%20%5Cn%5CnNote%3A%20all%20I%20did%20was%20change%20the%20filenames%20%28and%20paths%29%20in%20the%20proper%20actions%20and%20then%20change%20the%20line%20filtering%20to%20%40done.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22includeExtension%22%3A%20true%2C%20%22includeFolder%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetFileName%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22todo.taskpaper%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression%22%3A%20%7B%22text%22%3A%20%22%40done%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionFilterLines%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20true%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22completed%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression%22%3A%20%7B%22text%22%3A%20%22%40done%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionFilterLines%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22todo%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20true%2C%20%22ifNotExists%22%3A%200%2C%20%22filename%22%3A%20%22done.taskpaper%22%7D%2C%20%22class%22%3A%20%22WorkflowActionGetFileContents%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22done%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20true%2C%20%22text%22%3A%20%7B%22text%22%3A%20%22%3F%5Cn%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22completed%22%2C%20%22%7B2%2C%201%7D%22%3A%20%22done%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ifNotExists%22%3A%200%2C%20%22filename%22%3A%20%22done.taskpaper%22%7D%2C%20%22class%22%3A%20%22WorkflowActionSetFileContents%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20true%2C%20%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22todo%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ifNotExists%22%3A%200%2C%20%22filename%22%3A%20%22todo.taskpaper%22%7D%2C%20%22class%22%3A%20%22WorkflowActionSetFileContents%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%5D%2C%20%22name%22%3A%20%22Clean%20Up%20TaskPaper%20Archive%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone6%2C1%22%2C%20%22systemVersion%22%3A%20%2212.4.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-folder-validate.png%22%7D", "description": "Modified version of Clean Up Completed Tasks workflow. Intended to be run every now and then on a Main.taskpaper file to empty the archive by filtering lines tagged as @done and prepending them to an Archive.taskpaper. The lack of disclosure triangles in Editorial means having to look at that eventually unwieldy archive, but I don't always want to just delete completed tasks. Thanks to @scottzero for the original workflow this is based on. \n\nNote: all I did was change the filenames (and paths) in the proper actions and then change the line filtering to @done.", "title": "Clean Up TaskPaper Archive"}, {"url": "http://editorial-app.appspot.com/workflow/5779206315180032/uoVxHz0tSP8", "workflow_data": {"username": "", "description": "This is a work flow that creates a markdown file with a name and front matter based on date and time.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Create Markdown Document Note Entry", "parameters": {"content": {"text": "---\ntitle: Note\nsubtitle:\nauthor: Scott Larson\ndate: ?/?/? ?:?\n---\n\n## ?", "tokenRanges": {"{53, 1}": "%date:yyyy", "{57, 1}": "%date:dd", "{61, 1}": "%date:mm", "{71, 1}": "%cursor", "{55, 1}": "%date:MM", "{59, 1}": "%date:hh"}, "type": "advancedText"}, "open": true, "filename": {"text": "?-?-?-?-?-?-note.md", "tokenRanges": {"{8, 1}": "%date:mm", "{4, 1}": "%date:dd", "{6, 1}": "%date:HH", "{2, 1}": "%date:MM", "{0, 1}": "%date:yyyy", "{10, 1}": "%date:ss"}, "type": "advancedText"}}, "class": "WorkflowActionCreateNewDocument"}], "name": "Markdown(Note)", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone9,2", "systemVersion": "12.4.1"}, "type": "wkflw", "public": true, "icon": "minicons-icons-text-left-align.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22This%20is%20a%20work%20flow%20that%20creates%20a%20markdown%20file%20with%20a%20name%20and%20front%20matter%20based%20on%20date%20and%20time.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Create%20Markdown%20Document%20Note%20Entry%22%2C%20%22parameters%22%3A%20%7B%22content%22%3A%20%7B%22text%22%3A%20%22---%5Cntitle%3A%20Note%5Cnsubtitle%3A%5Cnauthor%3A%20Scott%20Larson%5Cndate%3A%20%3F%2F%3F%2F%3F%20%3F%3A%3F%5Cn---%5Cn%5Cn%23%23%20%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B53%2C%201%7D%22%3A%20%22%25date%3Ayyyy%22%2C%20%22%7B57%2C%201%7D%22%3A%20%22%25date%3Add%22%2C%20%22%7B61%2C%201%7D%22%3A%20%22%25date%3Amm%22%2C%20%22%7B71%2C%201%7D%22%3A%20%22%25cursor%22%2C%20%22%7B55%2C%201%7D%22%3A%20%22%25date%3AMM%22%2C%20%22%7B59%2C%201%7D%22%3A%20%22%25date%3Ahh%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22open%22%3A%20true%2C%20%22filename%22%3A%20%7B%22text%22%3A%20%22%3F-%3F-%3F-%3F-%3F-%3F-note.md%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B8%2C%201%7D%22%3A%20%22%25date%3Amm%22%2C%20%22%7B4%2C%201%7D%22%3A%20%22%25date%3Add%22%2C%20%22%7B6%2C%201%7D%22%3A%20%22%25date%3AHH%22%2C%20%22%7B2%2C%201%7D%22%3A%20%22%25date%3AMM%22%2C%20%22%7B0%2C%201%7D%22%3A%20%22%25date%3Ayyyy%22%2C%20%22%7B10%2C%201%7D%22%3A%20%22%25date%3Ass%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCreateNewDocument%22%7D%5D%2C%20%22name%22%3A%20%22Markdown%28Note%29%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone9%2C2%22%2C%20%22systemVersion%22%3A%20%2212.4.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-text-left-align.png%22%7D", "description": "This is a work flow that creates a markdown file with a name and front matter based on date and time.", "title": "Markdown(Note)"}, {"url": "http://editorial-app.appspot.com/workflow/5900574708989952/SYb4MzmyVoI", "workflow_data": {"username": "tt", "description": "", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "? (? - ?.?.?):\n", "tokenRanges": {"{11, 1}": "%date:yyyy", "{0, 1}": "%browser:title", "{3, 1}": "%browser:url", "{9, 1}": "%date:MM", "{7, 1}": "%date:dd"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "title", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?\n", "tokenRanges": {"{0, 1}": "%browser:selection"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 0, "find": {"text": ":", "tokenRanges": {}, "type": "advancedText"}, "replace": {"text": " -", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?\n?", "tokenRanges": {"{0, 1}": "title", "{2, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 0, "find": {"text": "http://", "tokenRanges": {}, "type": "advancedText"}, "replace": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "prefixOrSuffix": 0}, "class": "WorkflowActionPrefixSuffixLines"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "browsercontent", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"numberOfSteps": {"text": "1", "tokenRanges": {}, "type": "advancedText"}, "direction": 2, "unit": 0}, "class": "WorkflowActionExtendSelection"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?\n?", "tokenRanges": {"{0, 1}": "Input", "{2, 1}": "browsercontent"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}], "name": "paste browsercontent+link_", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad4,5", "systemVersion": "12.4.1"}, "type": "wkflw", "public": true, "icon": "minicons-icons-artwork-bucket.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22tt%22%2C%20%22description%22%3A%20%22%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%20%28%3F%20-%20%3F.%3F.%3F%29%3A%5Cn%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B11%2C%201%7D%22%3A%20%22%25date%3Ayyyy%22%2C%20%22%7B0%2C%201%7D%22%3A%20%22%25browser%3Atitle%22%2C%20%22%7B3%2C%201%7D%22%3A%20%22%25browser%3Aurl%22%2C%20%22%7B9%2C%201%7D%22%3A%20%22%25date%3AMM%22%2C%20%22%7B7%2C%201%7D%22%3A%20%22%25date%3Add%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22title%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%5Cn%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25browser%3Aselection%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%200%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%3A%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%20-%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%5Cn%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22title%22%2C%20%22%7B2%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%200%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22http%3A%2F%2F%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22prefixOrSuffix%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionPrefixSuffixLines%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22browsercontent%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22numberOfSteps%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22direction%22%3A%202%2C%20%22unit%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionExtendSelection%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F%5Cn%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%2C%20%22%7B2%2C%201%7D%22%3A%20%22browsercontent%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%5D%2C%20%22name%22%3A%20%22paste%20browsercontent%2Blink_%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad4%2C5%22%2C%20%22systemVersion%22%3A%20%2212.4.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-artwork-bucket.png%22%7D", "description": "", "title": "paste browsercontent+link_"}, {"url": "http://editorial-app.appspot.com/workflow/5797017490030592/8f2OR4EN-OQ", "workflow_data": {"username": "", "description": "Put text selected inside a <p> HTML tag.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "selected_text", "value": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:selection"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionGetClipboard"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "URL", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Clipboard"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "<p>?</p>", "tokenRanges": {"{3, 1}": "selected_text"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}], "name": "p", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad8,5", "systemVersion": "12.4.1"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Put%20text%20selected%20inside%20a%20%3Cp%3E%20HTML%20tag.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22selected_text%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Aselection%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionGetClipboard%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22URL%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Clipboard%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3Cp%3E%3F%3C%2Fp%3E%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B3%2C%201%7D%22%3A%20%22selected_text%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%5D%2C%20%22name%22%3A%20%22p%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad8%2C5%22%2C%20%22systemVersion%22%3A%20%2212.4.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "Put text selected inside a <p> HTML tag.", "title": "p"}, {"url": "http://editorial-app.appspot.com/workflow/5775905095942144/BNvia3Fx7hE", "workflow_data": {"username": "Scott Larson", "name": "Markdown(Scene)", "description": "This workflow creates a markdown document for scene based content that aids in the creation of a story. The workflow creates a file name and front matter taken from a custom UI that grabs input from the following fields: Scene, Setting, Location and Enviroment titles. It also populates the document with the following story history headers: Previously, Objective, Obstacle and Up Next.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Scene File UI", "parameters": {"outputText": {"text": "?-?-?-?", "tokenRanges": {"{0, 1}": "%ui:Scene Title Field", "{6, 1}": "%ui:Environment Title Field", "{4, 1}": "%ui:Location Title Field", "{2, 1}": "%ui:Setting Title Field"}, "type": "advancedText"}, "ui": "[\n  {\n    \"nodes\" : [\n      {\n        \"nodes\" : [\n\n        ],\n        \"frame\" : \"{{143, 32}, {143, 32}}\",\n        \"class\" : \"TextField\",\n        \"attributes\" : {\n          \"uuid\" : \"63291FBC-497C-4755-B29C-61367FB01A29\",\n          \"font_size\" : 17,\n          \"frame\" : \"{{170, 254}, {200, 32}}\",\n          \"secure\" : false,\n          \"editWorkflow\" : true,\n          \"alignment\" : \"left\",\n          \"autocorrection_type\" : \"default\",\n          \"font_name\" : \"<System>\",\n          \"action_workflow\" : \"{\\\"actions\\\":[]}\",\n          \"class\" : \"TextField\",\n          \"name\" : \"Scene Title Field\",\n          \"spellchecking_type\" : \"default\"\n        },\n        \"selected\" : false\n      },\n      {\n        \"nodes\" : [\n\n        ],\n        \"frame\" : \"{{143, 98}, {142, 32}}\",\n        \"class\" : \"TextField\",\n        \"attributes\" : {\n          \"uuid\" : \"E989A04B-A439-4B52-932B-36ACB4F0E408\",\n          \"name\" : \"Setting Title Field\",\n          \"frame\" : \"{{170, 254}, {200, 32}}\",\n          \"secure\" : false,\n          \"editWorkflow\" : true,\n          \"alignment\" : \"left\",\n          \"autocorrection_type\" : \"default\",\n          \"font_name\" : \"<System>\",\n          \"action_workflow\" : \"{\\\"actions\\\":[]}\",\n          \"class\" : \"TextField\",\n          \"spellchecking_type\" : \"default\",\n          \"font_size\" : 17\n        },\n        \"selected\" : false\n      },\n      {\n        \"nodes\" : [\n\n        ],\n        \"frame\" : \"{{143, 162}, {142, 32}}\",\n        \"class\" : \"TextField\",\n        \"attributes\" : {\n          \"uuid\" : \"77C08DCA-BF3B-4BB7-9230-0EAD1A11EAFF\",\n          \"name\" : \"Location Title Field\",\n          \"frame\" : \"{{170, 254}, {200, 32}}\",\n          \"secure\" : false,\n          \"editWorkflow\" : true,\n          \"alignment\" : \"left\",\n          \"autocorrection_type\" : \"default\",\n          \"font_name\" : \"<System>\",\n          \"action_workflow\" : \"{\\\"actions\\\":[]}\",\n          \"class\" : \"TextField\",\n          \"spellchecking_type\" : \"default\",\n          \"font_size\" : 17\n        },\n        \"selected\" : false\n      },\n      {\n        \"nodes\" : [\n\n        ],\n        \"frame\" : \"{{143, 226}, {143, 32}}\",\n        \"class\" : \"TextField\",\n        \"attributes\" : {\n          \"uuid\" : \"0C8371B0-E61A-4C38-95AB-E9E2A12856F5\",\n          \"name\" : \"Environment Title Field\",\n          \"frame\" : \"{{170, 254}, {200, 32}}\",\n          \"secure\" : false,\n          \"editWorkflow\" : true,\n          \"alignment\" : \"left\",\n          \"autocorrection_type\" : \"default\",\n          \"font_name\" : \"<System>\",\n          \"action_workflow\" : \"{\\\"actions\\\":[]}\",\n          \"class\" : \"TextField\",\n          \"spellchecking_type\" : \"default\",\n          \"font_size\" : 17\n        },\n        \"selected\" : false\n      },\n      {\n        \"nodes\" : [\n\n        ],\n        \"frame\" : \"{{31, 32}, {97, 32}}\",\n        \"class\" : \"Label\",\n        \"attributes\" : {\n          \"name\" : \"Scene Title Label\",\n          \"frame\" : \"{{195, 254}, {150, 32}}\",\n          \"uuid\" : \"05C38341-4356-420C-B4A6-4877D1CE41D4\",\n          \"class\" : \"Label\",\n          \"alignment\" : \"left\",\n          \"text\" : \"Scene Title\",\n          \"font_size\" : 18,\n          \"font_name\" : \"<System>\"\n        },\n        \"selected\" : false\n      },\n      {\n        \"nodes\" : [\n\n        ],\n        \"frame\" : \"{{31, 98}, {97, 32}}\",\n        \"class\" : \"Label\",\n        \"attributes\" : {\n          \"name\" : \"Setting Title Label\",\n          \"frame\" : \"{{195, 254}, {150, 32}}\",\n          \"uuid\" : \"EC1840B3-EF37-4386-8A0B-D5CAA68B63E1\",\n          \"class\" : \"Label\",\n          \"alignment\" : \"left\",\n          \"text\" : \"Setting Title\",\n          \"font_size\" : 18,\n          \"font_name\" : \"<System>\"\n        },\n        \"selected\" : false\n      },\n      {\n        \"nodes\" : [\n\n        ],\n        \"frame\" : \"{{31, 162}, {97, 32}}\",\n        \"class\" : \"Label\",\n        \"attributes\" : {\n          \"name\" : \"Location Title Label\",\n          \"frame\" : \"{{195, 254}, {150, 32}}\",\n          \"uuid\" : \"EA2689E0-9178-450F-932C-1E84E48028CF\",\n          \"class\" : \"Label\",\n          \"alignment\" : \"left\",\n          \"text\" : \"Loc Title\",\n          \"font_size\" : 18,\n          \"font_name\" : \"<System>\"\n        },\n        \"selected\" : false\n      },\n      {\n        \"nodes\" : [\n\n        ],\n        \"frame\" : \"{{31, 226}, {97, 32}}\",\n        \"class\" : \"Label\",\n        \"attributes\" : {\n          \"name\" : \"Environment Title Label\",\n          \"frame\" : \"{{195, 254}, {150, 32}}\",\n          \"uuid\" : \"ADF3ED51-4FBE-4210-8903-C04120C52778\",\n          \"class\" : \"Label\",\n          \"alignment\" : \"left\",\n          \"text\" : \"Env Title\",\n          \"font_size\" : 18,\n          \"font_name\" : \"<System>\"\n        },\n        \"selected\" : false\n      }\n    ],\n    \"frame\" : \"{{0, 0}, {320, 320}}\",\n    \"class\" : \"View\",\n    \"attributes\" : {\n      \"flex\" : \"\",\n      \"editWorkflow\" : true,\n      \"action_workflow\" : \"{\\\"actions\\\":[]}\",\n      \"enabled\" : true,\n      \"tint_color\" : \"RGBA(0.000000,0.478000,1.000000,1.000000)\",\n      \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n      \"background_color\" : \"RGBA(1.000000,1.000000,1.000000,1.000000)\",\n      \"name\" : \"\"\n    },\n    \"selected\" : false\n  }\n]", "presentationStyle": 0}, "class": "WorkflowActionCustomUI"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"caseOption": 1}, "class": "WorkflowActionChangeCase"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "scene-file-name", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "scene-front-matter-title", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "scene-front-matter-title"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"caseOption": 2}, "class": "WorkflowActionChangeCase"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 0, "find": {"text": "-", "tokenRanges": {}, "type": "advancedText"}, "replace": {"text": ". ", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "scene-front-matter-title-update", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Create Markdown Scene Entry", "parameters": {"content": {"text": "---\ntitle: ?\nsubtitle:\nauthor: Scott Larson\ndate: ?/?/? ?:?\n---\n\n## Previously\n## Main Objective\n## Main Obstacle\n## Up Next\n\n?\n", "tokenRanges": {"{50, 1}": "%date:yyyy", "{126, 1}": "%cursor", "{54, 1}": "%date:dd", "{11, 1}": "scene-front-matter-title-update", "{56, 1}": "%date:hh", "{58, 1}": "%date:mm", "{52, 1}": "%date:MM"}, "type": "advancedText"}, "open": true, "filename": {"text": "?.md", "tokenRanges": {"{0, 1}": "scene-file-name"}, "type": "advancedText"}}, "class": "WorkflowActionCreateNewDocument"}], "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad4,1", "systemVersion": "12.4.1"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22Scott%20Larson%22%2C%20%22name%22%3A%20%22Markdown%28Scene%29%22%2C%20%22description%22%3A%20%22This%20workflow%20creates%20a%20markdown%20document%20for%20scene%20based%20content%20that%20aids%20in%20the%20creation%20of%20a%20story.%20The%20workflow%20creates%20a%20file%20name%20and%20front%20matter%20taken%20from%20a%20custom%20UI%20that%20grabs%20input%20from%20the%20following%20fields%3A%20Scene%2C%20Setting%2C%20Location%20and%20Enviroment%20titles.%20It%20also%20populates%20the%20document%20with%20the%20following%20story%20history%20headers%3A%20Previously%2C%20Objective%2C%20Obstacle%20and%20Up%20Next.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Scene%20File%20UI%22%2C%20%22parameters%22%3A%20%7B%22outputText%22%3A%20%7B%22text%22%3A%20%22%3F-%3F-%3F-%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25ui%3AScene%20Title%20Field%22%2C%20%22%7B6%2C%201%7D%22%3A%20%22%25ui%3AEnvironment%20Title%20Field%22%2C%20%22%7B4%2C%201%7D%22%3A%20%22%25ui%3ALocation%20Title%20Field%22%2C%20%22%7B2%2C%201%7D%22%3A%20%22%25ui%3ASetting%20Title%20Field%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ui%22%3A%20%22%5B%5Cn%20%20%7B%5Cn%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B143%2C%2032%7D%2C%20%7B143%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%2263291FBC-497C-4755-B29C-61367FB01A29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2017%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B170%2C%20254%7D%2C%20%7B200%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22secure%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22editWorkflow%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22autocorrection_type%5C%22%20%3A%20%5C%22default%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_name%5C%22%20%3A%20%5C%22%3CSystem%3E%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22action_workflow%5C%22%20%3A%20%5C%22%7B%5C%5C%5C%22actions%5C%5C%5C%22%3A%5B%5D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22Scene%20Title%20Field%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22spellchecking_type%5C%22%20%3A%20%5C%22default%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B143%2C%2098%7D%2C%20%7B142%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22E989A04B-A439-4B52-932B-36ACB4F0E408%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22Setting%20Title%20Field%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B170%2C%20254%7D%2C%20%7B200%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22secure%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22editWorkflow%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22autocorrection_type%5C%22%20%3A%20%5C%22default%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_name%5C%22%20%3A%20%5C%22%3CSystem%3E%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22action_workflow%5C%22%20%3A%20%5C%22%7B%5C%5C%5C%22actions%5C%5C%5C%22%3A%5B%5D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22spellchecking_type%5C%22%20%3A%20%5C%22default%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2017%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B143%2C%20162%7D%2C%20%7B142%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%2277C08DCA-BF3B-4BB7-9230-0EAD1A11EAFF%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22Location%20Title%20Field%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B170%2C%20254%7D%2C%20%7B200%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22secure%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22editWorkflow%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22autocorrection_type%5C%22%20%3A%20%5C%22default%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_name%5C%22%20%3A%20%5C%22%3CSystem%3E%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22action_workflow%5C%22%20%3A%20%5C%22%7B%5C%5C%5C%22actions%5C%5C%5C%22%3A%5B%5D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22spellchecking_type%5C%22%20%3A%20%5C%22default%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2017%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B143%2C%20226%7D%2C%20%7B143%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%220C8371B0-E61A-4C38-95AB-E9E2A12856F5%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22Environment%20Title%20Field%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B170%2C%20254%7D%2C%20%7B200%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22secure%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22editWorkflow%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22autocorrection_type%5C%22%20%3A%20%5C%22default%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_name%5C%22%20%3A%20%5C%22%3CSystem%3E%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22action_workflow%5C%22%20%3A%20%5C%22%7B%5C%5C%5C%22actions%5C%5C%5C%22%3A%5B%5D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22spellchecking_type%5C%22%20%3A%20%5C%22default%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2017%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B31%2C%2032%7D%2C%20%7B97%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22Scene%20Title%20Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B195%2C%20254%7D%2C%20%7B150%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%2205C38341-4356-420C-B4A6-4877D1CE41D4%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22Scene%20Title%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2018%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_name%5C%22%20%3A%20%5C%22%3CSystem%3E%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B31%2C%2098%7D%2C%20%7B97%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22Setting%20Title%20Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B195%2C%20254%7D%2C%20%7B150%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22EC1840B3-EF37-4386-8A0B-D5CAA68B63E1%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22Setting%20Title%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2018%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_name%5C%22%20%3A%20%5C%22%3CSystem%3E%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B31%2C%20162%7D%2C%20%7B97%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22Location%20Title%20Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B195%2C%20254%7D%2C%20%7B150%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22EA2689E0-9178-450F-932C-1E84E48028CF%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22Loc%20Title%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2018%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_name%5C%22%20%3A%20%5C%22%3CSystem%3E%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B31%2C%20226%7D%2C%20%7B97%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22Environment%20Title%20Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B195%2C%20254%7D%2C%20%7B150%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22ADF3ED51-4FBE-4210-8903-C04120C52778%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22Env%20Title%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2018%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_name%5C%22%20%3A%20%5C%22%3CSystem%3E%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%5D%2C%5Cn%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B0%2C%200%7D%2C%20%7B320%2C%20320%7D%7D%5C%22%2C%5Cn%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22View%5C%22%2C%5Cn%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%5C%22editWorkflow%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%5C%22action_workflow%5C%22%20%3A%20%5C%22%7B%5C%5C%5C%22actions%5C%5C%5C%22%3A%5B%5D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%5C%22tint_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.478000%2C1.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%281.000000%2C1.000000%2C1.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22%5C%22%5Cn%20%20%20%20%7D%2C%5Cn%20%20%20%20%5C%22selected%5C%22%20%3A%20false%5Cn%20%20%7D%5Cn%5D%22%2C%20%22presentationStyle%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCustomUI%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22caseOption%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionChangeCase%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22scene-file-name%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22scene-front-matter-title%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22scene-front-matter-title%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22caseOption%22%3A%202%7D%2C%20%22class%22%3A%20%22WorkflowActionChangeCase%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%200%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22-%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22.%20%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22scene-front-matter-title-update%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Create%20Markdown%20Scene%20Entry%22%2C%20%22parameters%22%3A%20%7B%22content%22%3A%20%7B%22text%22%3A%20%22---%5Cntitle%3A%20%3F%5Cnsubtitle%3A%5Cnauthor%3A%20Scott%20Larson%5Cndate%3A%20%3F%2F%3F%2F%3F%20%3F%3A%3F%5Cn---%5Cn%5Cn%23%23%20Previously%5Cn%23%23%20Main%20Objective%5Cn%23%23%20Main%20Obstacle%5Cn%23%23%20Up%20Next%5Cn%5Cn%3F%5Cn%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B50%2C%201%7D%22%3A%20%22%25date%3Ayyyy%22%2C%20%22%7B126%2C%201%7D%22%3A%20%22%25cursor%22%2C%20%22%7B54%2C%201%7D%22%3A%20%22%25date%3Add%22%2C%20%22%7B11%2C%201%7D%22%3A%20%22scene-front-matter-title-update%22%2C%20%22%7B56%2C%201%7D%22%3A%20%22%25date%3Ahh%22%2C%20%22%7B58%2C%201%7D%22%3A%20%22%25date%3Amm%22%2C%20%22%7B52%2C%201%7D%22%3A%20%22%25date%3AMM%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22open%22%3A%20true%2C%20%22filename%22%3A%20%7B%22text%22%3A%20%22%3F.md%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22scene-file-name%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCreateNewDocument%22%7D%5D%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad4%2C1%22%2C%20%22systemVersion%22%3A%20%2212.4.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "This workflow creates a markdown document for scene based content that aids in the creation of a story. The workflow creates a file name and front matter taken from a custom UI that grabs input from the following fields: Scene, Setting, Location and Enviroment titles. It also populates the document with the following story history headers: Previously, Objective, Obstacle and Up Next.", "title": "Markdown(Scene)"}, {"url": "http://editorial-app.appspot.com/workflow/5771554507980800/vISPQ0BYvjA", "workflow_data": {"username": "", "description": "", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"URL": {"text": "http://www.hp.com", "tokenRanges": {}, "type": "advancedText"}, "waitUntilLoaded": false, "revealBrowserAutomatically": true, "openIn": 1, "tabOption": 0}, "class": "WorkflowActionOpenURL"}], "name": "MyTest", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone11,8", "systemVersion": "12.4.1"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_PUZZLE.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22URL%22%3A%20%7B%22text%22%3A%20%22http%3A%2F%2Fwww.hp.com%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22waitUntilLoaded%22%3A%20false%2C%20%22revealBrowserAutomatically%22%3A%20true%2C%20%22openIn%22%3A%201%2C%20%22tabOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%5D%2C%20%22name%22%3A%20%22MyTest%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone11%2C8%22%2C%20%22systemVersion%22%3A%20%2212.4.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_PUZZLE.png%22%7D", "description": "", "title": "MyTest"}, {"url": "http://editorial-app.appspot.com/workflow/5782562161033216/RWyjwv96rtE", "workflow_data": {"username": "Jay Fogleman, @fogleman", "description": "This workflow presents the user with a list of his or her Enernote notebooks and another list of his or her  tags and, based on selections from the list, builds a string that the user can paste into the subject line of an  email addressed to the user's Evernote  account so that Enernote will assign a notebook and tags  to the incoming note.  Before it can be used, user must paste in a developer token in the locations marked in the python segments. \n\nWorkflow assembled  by Jay Fogleman (fogleman2@gmail.com) from many pieces produced by others.  ", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Fetch Evernote Notebooks", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport console\nimport webbrowser\nimport keychain\nimport pickle\nimport evernote.edam.userstore.constants as UserStoreConstants\nimport evernote.edam.type.ttypes as Types\nfrom evernote.api.client import EvernoteClient\n\n#keychain.delete_password('evernote', 'editorial')\n\nauth_token = 'insert EN Developer Token here,\n\n#login = keychain.get_password('evernote', 'editorial') \n#if login is not None:\n#\tauth_token = pickle.loads(login)\n#else:\n#\ttoken_choice = console.alert('Token Needed', 'A Developer Token is #needed. Go get one?', 'Yes', 'I have One', 'Cancel')\n#\tif token_choice == 1:\n#\t\twebbrowser.open('safari-https://www.evernote.com/Login.action?#targetUrl=%2Fapi%2FDeveloperToken.action')\n#\t\traise KeyboardInterrupt\n#\telif token_choice == 2:\n#\t\tauth_token = console.password_alert('Evernote Developer Token', 'Paste #Your Evernote Developer Token')\npickle_token = pickle.dumps(auth_token)\nkeychain.set_password('evernote', 'editorial', pickle_token)\n#\telse:\n#\t\traise KeyboardInterrupt\n\nconsole.show_activity('Getting Tags...')\nclient = EvernoteClient(token=auth_token, sandbox=False)\nnote_store = client.get_note_store()\n\nnote = Types.Note()\ns = []\nconsole.hide_activity()\n# List all of the tags in the user's account\nnotebooks = note_store.listNotebooks()\n#console.show_activity('Getting Notebooks...')\nfor notebook in notebooks:\n\t\n\ts.append(notebook.name) \n\t#console.show_activity('Getting Tags...')\n\toutput = '\\n'.join(s)\nworkflow.set_output(output)\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"sortOrder": 0}, "class": "WorkflowActionSortLines"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"list": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "", "showInPopover": false, "allowMultipleSelection": false}, "class": "WorkflowActionSelectFromList"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "@", "tokenRanges": {}, "type": "advancedText"}, "prefixOrSuffix": 0}, "class": "WorkflowActionPrefixSuffixLines"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "selected_noteobook", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"customTitle": "Fetch Evernote Tags", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport console\nimport webbrowser\nimport keychain\nimport pickle\nimport evernote.edam.userstore.constants as UserStoreConstants\nimport evernote.edam.type.ttypes as Types\nfrom evernote.api.client import EvernoteClient\n\n#keychain.delete_password('evernote', 'editorial')\n\nauth_token = 'insert EN Developer Token here,\n\n#login = keychain.get_password('evernote', 'editorial') \n#if login is not None:\n#\tauth_token = pickle.loads(login)\n#else:\n#\ttoken_choice = console.alert('Token Needed', 'A Developer Token is #needed. Go get one?', 'Yes', 'I have One', 'Cancel')\n#\tif token_choice == 1:\n#\t\twebbrowser.open('safari-https://www.evernote.com/Login.action?#targetUrl=%2Fapi%2FDeveloperToken.action')\n#\t\traise KeyboardInterrupt\n#\telif token_choice == 2:\n#\t\tauth_token = console.password_alert('Evernote Developer Token', 'Paste #Your Evernote Developer Token')\npickle_token = pickle.dumps(auth_token)\nkeychain.set_password('evernote', 'editorial', pickle_token)\n#\telse:\n#\t\traise KeyboardInterrupt\n\nconsole.show_activity('Getting Tags...')\nclient = EvernoteClient(token=auth_token, sandbox=False)\nnote_store = client.get_note_store()\n\nnote = Types.Note()\ns = []\nconsole.hide_activity()\n# List all of the tags in the user's account\ntags = note_store.listTags()\n#console.show_activity('Getting Tags...')\nfor tag in tags:\n\t\n\ts.append(tag.name) \n\t#console.show_activity('Getting Tags...')\n\toutput = '\\n'.join(s)\nworkflow.set_output(output)\n"}, "pauseWithoutShowingParameters": false, "colorLabel": 5, "class": "WorkflowActionRunScript", "pauseBeforeRunning": false}, {"customTitle": "", "parameters": {"sortOrder": 0}, "pauseWithoutShowingParameters": false, "colorLabel": 5, "class": "WorkflowActionSortLines", "pauseBeforeRunning": false}, {"customTitle": "", "parameters": {"list": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "Select Evernote Tags", "showInPopover": false, "allowMultipleSelection": true}, "pauseWithoutShowingParameters": false, "colorLabel": 5, "class": "WorkflowActionSelectFromList", "pauseBeforeRunning": false}, {"customTitle": "", "parameters": {"name": "fetched_tags", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "pauseWithoutShowingParameters": false, "colorLabel": 5, "class": "WorkflowActionStoreVariable", "pauseBeforeRunning": false}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": " #", "tokenRanges": {}, "type": "advancedText"}, "prefixOrSuffix": 0}, "class": "WorkflowActionPrefixSuffixLines"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport workflow\n\naction_in = workflow.get_input()\n\n## action_in = action_in.replace('\\n', 'YY').replace('\\r', 'YY')\n## action_in = action_in.rstrip('\\n\\r')\naction_in = action_in.replace(chr(10), \"\").replace(chr(13), \"\")\naction_out = action_in\nworkflow.set_output(action_out)\n\naction_out = action_in\n\nworkflow.set_output(action_out)\n"}, "class": "WorkflowActionRunScript"}, {"customTitle": "", "parameters": {"name": "selected_tags", "value": {"text": "?\n", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "pauseWithoutShowingParameters": false, "colorLabel": 5, "class": "WorkflowActionStoreVariable", "pauseBeforeRunning": false}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "notebook_with_tags", "value": {"text": "? ?", "tokenRanges": {"{0, 1}": "selected_noteobook", "{2, 1}": "selected_tags"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "notebook_with_tags"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionSetClipboard"}], "name": "Create Evernote String", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad7,3", "systemVersion": "13.1"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22Jay%20Fogleman%2C%20%40fogleman%22%2C%20%22description%22%3A%20%22This%20workflow%20presents%20the%20user%20with%20a%20list%20of%20his%20or%20her%20Enernote%20notebooks%20and%20another%20list%20of%20his%20or%20her%20%20tags%20and%2C%20based%20on%20selections%20from%20the%20list%2C%20builds%20a%20string%20that%20the%20user%20can%20paste%20into%20the%20subject%20line%20of%20an%20%20email%20addressed%20to%20the%20user%27s%20Evernote%20%20account%20so%20that%20Enernote%20will%20assign%20a%20notebook%20and%20tags%20%20to%20the%20incoming%20note.%20%20Before%20it%20can%20be%20used%2C%20user%20must%20paste%20in%20a%20developer%20token%20in%20the%20locations%20marked%20in%20the%20python%20segments.%20%5Cn%5CnWorkflow%20assembled%20%20by%20Jay%20Fogleman%20%28fogleman2%40gmail.com%29%20from%20many%20pieces%20produced%20by%20others.%20%20%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Fetch%20Evernote%20Notebooks%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20console%5Cnimport%20webbrowser%5Cnimport%20keychain%5Cnimport%20pickle%5Cnimport%20evernote.edam.userstore.constants%20as%20UserStoreConstants%5Cnimport%20evernote.edam.type.ttypes%20as%20Types%5Cnfrom%20evernote.api.client%20import%20EvernoteClient%5Cn%5Cn%23keychain.delete_password%28%27evernote%27%2C%20%27editorial%27%29%5Cn%5Cnauth_token%20%3D%20%27insert%20EN%20Developer%20Token%20here%2C%5Cn%5Cn%23login%20%3D%20keychain.get_password%28%27evernote%27%2C%20%27editorial%27%29%20%5Cn%23if%20login%20is%20not%20None%3A%5Cn%23%5Ctauth_token%20%3D%20pickle.loads%28login%29%5Cn%23else%3A%5Cn%23%5Cttoken_choice%20%3D%20console.alert%28%27Token%20Needed%27%2C%20%27A%20Developer%20Token%20is%20%23needed.%20Go%20get%20one%3F%27%2C%20%27Yes%27%2C%20%27I%20have%20One%27%2C%20%27Cancel%27%29%5Cn%23%5Ctif%20token_choice%20%3D%3D%201%3A%5Cn%23%5Ct%5Ctwebbrowser.open%28%27safari-https%3A%2F%2Fwww.evernote.com%2FLogin.action%3F%23targetUrl%3D%252Fapi%252FDeveloperToken.action%27%29%5Cn%23%5Ct%5Ctraise%20KeyboardInterrupt%5Cn%23%5Ctelif%20token_choice%20%3D%3D%202%3A%5Cn%23%5Ct%5Ctauth_token%20%3D%20console.password_alert%28%27Evernote%20Developer%20Token%27%2C%20%27Paste%20%23Your%20Evernote%20Developer%20Token%27%29%5Cnpickle_token%20%3D%20pickle.dumps%28auth_token%29%5Cnkeychain.set_password%28%27evernote%27%2C%20%27editorial%27%2C%20pickle_token%29%5Cn%23%5Ctelse%3A%5Cn%23%5Ct%5Ctraise%20KeyboardInterrupt%5Cn%5Cnconsole.show_activity%28%27Getting%20Tags...%27%29%5Cnclient%20%3D%20EvernoteClient%28token%3Dauth_token%2C%20sandbox%3DFalse%29%5Cnnote_store%20%3D%20client.get_note_store%28%29%5Cn%5Cnnote%20%3D%20Types.Note%28%29%5Cns%20%3D%20%5B%5D%5Cnconsole.hide_activity%28%29%5Cn%23%20List%20all%20of%20the%20tags%20in%20the%20user%27s%20account%5Cnnotebooks%20%3D%20note_store.listNotebooks%28%29%5Cn%23console.show_activity%28%27Getting%20Notebooks...%27%29%5Cnfor%20notebook%20in%20notebooks%3A%5Cn%5Ct%5Cn%5Cts.append%28notebook.name%29%20%5Cn%5Ct%23console.show_activity%28%27Getting%20Tags...%27%29%5Cn%5Ctoutput%20%3D%20%27%5C%5Cn%27.join%28s%29%5Cnworkflow.set_output%28output%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22sortOrder%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionSortLines%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22list%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22%22%2C%20%22showInPopover%22%3A%20false%2C%20%22allowMultipleSelection%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionSelectFromList%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%40%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22prefixOrSuffix%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionPrefixSuffixLines%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22selected_noteobook%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22customTitle%22%3A%20%22Fetch%20Evernote%20Tags%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20console%5Cnimport%20webbrowser%5Cnimport%20keychain%5Cnimport%20pickle%5Cnimport%20evernote.edam.userstore.constants%20as%20UserStoreConstants%5Cnimport%20evernote.edam.type.ttypes%20as%20Types%5Cnfrom%20evernote.api.client%20import%20EvernoteClient%5Cn%5Cn%23keychain.delete_password%28%27evernote%27%2C%20%27editorial%27%29%5Cn%5Cnauth_token%20%3D%20%27insert%20EN%20Developer%20Token%20here%2C%5Cn%5Cn%23login%20%3D%20keychain.get_password%28%27evernote%27%2C%20%27editorial%27%29%20%5Cn%23if%20login%20is%20not%20None%3A%5Cn%23%5Ctauth_token%20%3D%20pickle.loads%28login%29%5Cn%23else%3A%5Cn%23%5Cttoken_choice%20%3D%20console.alert%28%27Token%20Needed%27%2C%20%27A%20Developer%20Token%20is%20%23needed.%20Go%20get%20one%3F%27%2C%20%27Yes%27%2C%20%27I%20have%20One%27%2C%20%27Cancel%27%29%5Cn%23%5Ctif%20token_choice%20%3D%3D%201%3A%5Cn%23%5Ct%5Ctwebbrowser.open%28%27safari-https%3A%2F%2Fwww.evernote.com%2FLogin.action%3F%23targetUrl%3D%252Fapi%252FDeveloperToken.action%27%29%5Cn%23%5Ct%5Ctraise%20KeyboardInterrupt%5Cn%23%5Ctelif%20token_choice%20%3D%3D%202%3A%5Cn%23%5Ct%5Ctauth_token%20%3D%20console.password_alert%28%27Evernote%20Developer%20Token%27%2C%20%27Paste%20%23Your%20Evernote%20Developer%20Token%27%29%5Cnpickle_token%20%3D%20pickle.dumps%28auth_token%29%5Cnkeychain.set_password%28%27evernote%27%2C%20%27editorial%27%2C%20pickle_token%29%5Cn%23%5Ctelse%3A%5Cn%23%5Ct%5Ctraise%20KeyboardInterrupt%5Cn%5Cnconsole.show_activity%28%27Getting%20Tags...%27%29%5Cnclient%20%3D%20EvernoteClient%28token%3Dauth_token%2C%20sandbox%3DFalse%29%5Cnnote_store%20%3D%20client.get_note_store%28%29%5Cn%5Cnnote%20%3D%20Types.Note%28%29%5Cns%20%3D%20%5B%5D%5Cnconsole.hide_activity%28%29%5Cn%23%20List%20all%20of%20the%20tags%20in%20the%20user%27s%20account%5Cntags%20%3D%20note_store.listTags%28%29%5Cn%23console.show_activity%28%27Getting%20Tags...%27%29%5Cnfor%20tag%20in%20tags%3A%5Cn%5Ct%5Cn%5Cts.append%28tag.name%29%20%5Cn%5Ct%23console.show_activity%28%27Getting%20Tags...%27%29%5Cn%5Ctoutput%20%3D%20%27%5C%5Cn%27.join%28s%29%5Cnworkflow.set_output%28output%29%5Cn%22%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%205%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%2C%20%7B%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22sortOrder%22%3A%200%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%205%2C%20%22class%22%3A%20%22WorkflowActionSortLines%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%2C%20%7B%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22list%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Select%20Evernote%20Tags%22%2C%20%22showInPopover%22%3A%20false%2C%20%22allowMultipleSelection%22%3A%20true%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%205%2C%20%22class%22%3A%20%22WorkflowActionSelectFromList%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%2C%20%7B%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22fetched_tags%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%205%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%20%23%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22prefixOrSuffix%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionPrefixSuffixLines%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cn%5Cnaction_in%20%3D%20workflow.get_input%28%29%5Cn%5Cn%23%23%20action_in%20%3D%20action_in.replace%28%27%5C%5Cn%27%2C%20%27YY%27%29.replace%28%27%5C%5Cr%27%2C%20%27YY%27%29%5Cn%23%23%20action_in%20%3D%20action_in.rstrip%28%27%5C%5Cn%5C%5Cr%27%29%5Cnaction_in%20%3D%20action_in.replace%28chr%2810%29%2C%20%5C%22%5C%22%29.replace%28chr%2813%29%2C%20%5C%22%5C%22%29%5Cnaction_out%20%3D%20action_in%5Cnworkflow.set_output%28action_out%29%5Cn%5Cnaction_out%20%3D%20action_in%5Cn%5Cnworkflow.set_output%28action_out%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22selected_tags%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%5Cn%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%205%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22notebook_with_tags%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%20%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22selected_noteobook%22%2C%20%22%7B2%2C%201%7D%22%3A%20%22selected_tags%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22notebook_with_tags%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionSetClipboard%22%7D%5D%2C%20%22name%22%3A%20%22Create%20Evernote%20String%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad7%2C3%22%2C%20%22systemVersion%22%3A%20%2213.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "This workflow presents the user with a list of his or her Enernote notebooks and another list of his or her  tags and, based on selections from the list, builds a string that the user can paste into the subject line of an  email addressed to the user's Evernote  account so that Enernote will assign a notebook and tags  to the incoming note.  Before it can be used, user must paste in a developer token in the locations marked in the python segments. \n\nWorkflow assembled  by Jay Fogleman (fogleman2@gmail.com) from many pieces produced by others.  ", "title": "Create Evernote String"}, {"url": "http://editorial-app.appspot.com/workflow/5903016599224320/uW4zEw52GHM", "workflow_data": {"username": "Scott Larson", "description": "This is a workflow that creates a Markdown file with a file name and front matter based date ina call note format.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Create Markdown Document Operations Call Notes", "parameters": {"content": {"text": "---\ntitle: operations-call-notes\nsubtitle:\nauthor: Scott Larson\ndate: ?/?/? ?:?\n---\n\n## ?", "tokenRanges": {"{78, 1}": "%date:mm", "{74, 1}": "%date:dd", "{76, 1}": "%date:hh", "{72, 1}": "%date:MM", "{88, 1}": "%cursor", "{70, 1}": "%date:yyyy"}, "type": "advancedText"}, "open": true, "filename": {"text": "?-?-?-?-?-?-operations-call-notes.md", "tokenRanges": {"{8, 1}": "%date:mm", "{4, 1}": "%date:dd", "{6, 1}": "%date:HH", "{2, 1}": "%date:MM", "{0, 1}": "%date:yyyy", "{10, 1}": "%date:ss"}, "type": "advancedText"}}, "class": "WorkflowActionCreateNewDocument"}], "name": "Markdown(OpCallNotes)", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad4,1", "systemVersion": "12.3.1"}, "type": "edtpl", "public": true, "icon": "minicons-icons-text-left-align.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22Scott%20Larson%22%2C%20%22description%22%3A%20%22This%20is%20a%20workflow%20that%20creates%20a%20Markdown%20file%20with%20a%20file%20name%20and%20front%20matter%20based%20date%20ina%20call%20note%20format.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Create%20Markdown%20Document%20Operations%20Call%20Notes%22%2C%20%22parameters%22%3A%20%7B%22content%22%3A%20%7B%22text%22%3A%20%22---%5Cntitle%3A%20operations-call-notes%5Cnsubtitle%3A%5Cnauthor%3A%20Scott%20Larson%5Cndate%3A%20%3F%2F%3F%2F%3F%20%3F%3A%3F%5Cn---%5Cn%5Cn%23%23%20%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B78%2C%201%7D%22%3A%20%22%25date%3Amm%22%2C%20%22%7B74%2C%201%7D%22%3A%20%22%25date%3Add%22%2C%20%22%7B76%2C%201%7D%22%3A%20%22%25date%3Ahh%22%2C%20%22%7B72%2C%201%7D%22%3A%20%22%25date%3AMM%22%2C%20%22%7B88%2C%201%7D%22%3A%20%22%25cursor%22%2C%20%22%7B70%2C%201%7D%22%3A%20%22%25date%3Ayyyy%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22open%22%3A%20true%2C%20%22filename%22%3A%20%7B%22text%22%3A%20%22%3F-%3F-%3F-%3F-%3F-%3F-operations-call-notes.md%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B8%2C%201%7D%22%3A%20%22%25date%3Amm%22%2C%20%22%7B4%2C%201%7D%22%3A%20%22%25date%3Add%22%2C%20%22%7B6%2C%201%7D%22%3A%20%22%25date%3AHH%22%2C%20%22%7B2%2C%201%7D%22%3A%20%22%25date%3AMM%22%2C%20%22%7B0%2C%201%7D%22%3A%20%22%25date%3Ayyyy%22%2C%20%22%7B10%2C%201%7D%22%3A%20%22%25date%3Ass%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCreateNewDocument%22%7D%5D%2C%20%22name%22%3A%20%22Markdown%28OpCallNotes%29%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad4%2C1%22%2C%20%22systemVersion%22%3A%20%2212.3.1%22%7D%2C%20%22type%22%3A%20%22edtpl%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-text-left-align.png%22%7D", "description": "This is a workflow that creates a Markdown file with a file name and front matter based date ina call note format.", "title": "Markdown(OpCallNotes)"}, {"url": "http://editorial-app.appspot.com/workflow/5793693722214400/exFhzZXMovU", "workflow_data": {"username": "Scott Larson", "description": "This is a workflow that creates a Markdown file with a file name and front matter that is based on the date the file was created.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Create Markdown Document Journal Entry", "parameters": {"content": {"text": "---\ntitle: Journal Entry \nsubtitle:\nauthor: Scott Larson\ndate: ?/?/? ?:?\n---\n\n## ?", "tokenRanges": {"{81, 1}": "%cursor", "{63, 1}": "%date:yyyy", "{65, 1}": "%date:MM", "{71, 1}": "%date:mm", "{69, 1}": "%date:hh", "{67, 1}": "%date:dd"}, "type": "advancedText"}, "open": true, "filename": {"text": "?-?-?-?-?-?-journal.md", "tokenRanges": {"{8, 1}": "%date:mm", "{4, 1}": "%date:dd", "{6, 1}": "%date:HH", "{2, 1}": "%date:MM", "{0, 1}": "%date:yyyy", "{10, 1}": "%date:ss"}, "type": "advancedText"}}, "class": "WorkflowActionCreateNewDocument"}], "name": "Markdown(Journal)", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad4,1", "systemVersion": "12.3.1"}, "type": "edtpl", "public": true, "icon": "minicons-icons-text-left-align.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22Scott%20Larson%22%2C%20%22description%22%3A%20%22This%20is%20a%20workflow%20that%20creates%20a%20Markdown%20file%20with%20a%20file%20name%20and%20front%20matter%20that%20is%20based%20on%20the%20date%20the%20file%20was%20created.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Create%20Markdown%20Document%20Journal%20Entry%22%2C%20%22parameters%22%3A%20%7B%22content%22%3A%20%7B%22text%22%3A%20%22---%5Cntitle%3A%20Journal%20Entry%20%5Cnsubtitle%3A%5Cnauthor%3A%20Scott%20Larson%5Cndate%3A%20%3F%2F%3F%2F%3F%20%3F%3A%3F%5Cn---%5Cn%5Cn%23%23%20%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B81%2C%201%7D%22%3A%20%22%25cursor%22%2C%20%22%7B63%2C%201%7D%22%3A%20%22%25date%3Ayyyy%22%2C%20%22%7B65%2C%201%7D%22%3A%20%22%25date%3AMM%22%2C%20%22%7B71%2C%201%7D%22%3A%20%22%25date%3Amm%22%2C%20%22%7B69%2C%201%7D%22%3A%20%22%25date%3Ahh%22%2C%20%22%7B67%2C%201%7D%22%3A%20%22%25date%3Add%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22open%22%3A%20true%2C%20%22filename%22%3A%20%7B%22text%22%3A%20%22%3F-%3F-%3F-%3F-%3F-%3F-journal.md%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B8%2C%201%7D%22%3A%20%22%25date%3Amm%22%2C%20%22%7B4%2C%201%7D%22%3A%20%22%25date%3Add%22%2C%20%22%7B6%2C%201%7D%22%3A%20%22%25date%3AHH%22%2C%20%22%7B2%2C%201%7D%22%3A%20%22%25date%3AMM%22%2C%20%22%7B0%2C%201%7D%22%3A%20%22%25date%3Ayyyy%22%2C%20%22%7B10%2C%201%7D%22%3A%20%22%25date%3Ass%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCreateNewDocument%22%7D%5D%2C%20%22name%22%3A%20%22Markdown%28Journal%29%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad4%2C1%22%2C%20%22systemVersion%22%3A%20%2212.3.1%22%7D%2C%20%22type%22%3A%20%22edtpl%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-text-left-align.png%22%7D", "description": "This is a workflow that creates a Markdown file with a file name and front matter that is based on the date the file was created.", "title": "Markdown(Journal)"}, {"url": "http://editorial-app.appspot.com/workflow/5904251817558016/k-Ur-sIjyJw", "workflow_data": {"username": "Scott Larson", "description": "This is a work flow that creates a markdown file with a name and front matter based on date and time.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Create Markdown Document Note Entry", "parameters": {"content": {"text": "---\ntitle: Note\nsubtitle:\nauthor: Scott Larson\ndate: ?/?/? ?:?\n---\n\n## ?", "tokenRanges": {"{53, 1}": "%date:yyyy", "{57, 1}": "%date:dd", "{61, 1}": "%date:mm", "{71, 1}": "%cursor", "{55, 1}": "%date:MM", "{59, 1}": "%date:hh"}, "type": "advancedText"}, "open": true, "filename": {"text": "?-?-?-?-?-?-note.md", "tokenRanges": {"{8, 1}": "%date:mm", "{4, 1}": "%date:dd", "{6, 1}": "%date:HH", "{2, 1}": "%date:MM", "{0, 1}": "%date:yyyy", "{10, 1}": "%date:ss"}, "type": "advancedText"}}, "class": "WorkflowActionCreateNewDocument"}], "name": "Markdown(Note)", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad4,1", "systemVersion": "12.3.1"}, "type": "edtpl", "public": true, "icon": "minicons-icons-text-left-align.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22Scott%20Larson%22%2C%20%22description%22%3A%20%22This%20is%20a%20work%20flow%20that%20creates%20a%20markdown%20file%20with%20a%20name%20and%20front%20matter%20based%20on%20date%20and%20time.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Create%20Markdown%20Document%20Note%20Entry%22%2C%20%22parameters%22%3A%20%7B%22content%22%3A%20%7B%22text%22%3A%20%22---%5Cntitle%3A%20Note%5Cnsubtitle%3A%5Cnauthor%3A%20Scott%20Larson%5Cndate%3A%20%3F%2F%3F%2F%3F%20%3F%3A%3F%5Cn---%5Cn%5Cn%23%23%20%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B53%2C%201%7D%22%3A%20%22%25date%3Ayyyy%22%2C%20%22%7B57%2C%201%7D%22%3A%20%22%25date%3Add%22%2C%20%22%7B61%2C%201%7D%22%3A%20%22%25date%3Amm%22%2C%20%22%7B71%2C%201%7D%22%3A%20%22%25cursor%22%2C%20%22%7B55%2C%201%7D%22%3A%20%22%25date%3AMM%22%2C%20%22%7B59%2C%201%7D%22%3A%20%22%25date%3Ahh%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22open%22%3A%20true%2C%20%22filename%22%3A%20%7B%22text%22%3A%20%22%3F-%3F-%3F-%3F-%3F-%3F-note.md%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B8%2C%201%7D%22%3A%20%22%25date%3Amm%22%2C%20%22%7B4%2C%201%7D%22%3A%20%22%25date%3Add%22%2C%20%22%7B6%2C%201%7D%22%3A%20%22%25date%3AHH%22%2C%20%22%7B2%2C%201%7D%22%3A%20%22%25date%3AMM%22%2C%20%22%7B0%2C%201%7D%22%3A%20%22%25date%3Ayyyy%22%2C%20%22%7B10%2C%201%7D%22%3A%20%22%25date%3Ass%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCreateNewDocument%22%7D%5D%2C%20%22name%22%3A%20%22Markdown%28Note%29%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad4%2C1%22%2C%20%22systemVersion%22%3A%20%2212.3.1%22%7D%2C%20%22type%22%3A%20%22edtpl%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-text-left-align.png%22%7D", "description": "This is a work flow that creates a markdown file with a name and front matter based on date and time.", "title": "Markdown(Note)"}, {"url": "http://editorial-app.appspot.com/workflow/5898812564439040/s17zBoWkqLU", "workflow_data": {"username": "WidgetOtaku", "name": "2 Clow Cards", "description": "Picks 2 random Clow cards.", "actions": [{"customTitle": "", "parameters": {"script": "import workflow\nimport random\ncards = ['The Arrow', 'The Big', 'The Bubbles', 'The Change', 'The Cloud', 'The Create', 'The Dark', 'The Dash', 'The Dream', 'The Earthy', 'The Erase', 'The Firey', 'The Fight', 'The Float', 'The Flower', 'The Fly', 'The Freeze', 'The Glow', 'The Libra', 'The Light', 'The Lock', 'The Loop', 'The Illusion', 'The Jump', 'The Little', 'The Maze', 'The Mirror', 'The Mist', 'The Move', 'The Power', 'The Rain', 'The Return', 'The Sand', 'The Shadow', 'The Shield', 'The Shot', 'The Silent', 'The Sleep', 'The Snow', 'The Song', 'The Storm', 'The Sweet', 'The Sword', 'The Through', 'The Thunder', 'The Time', 'The Twin', 'The Voice', 'The Watery', 'The Wave', 'The Windy', 'The Wood', 'The Nothing']\n\n\nworkflow.set_output(str(random.sample(cards, 2)))\n"}, "pauseWithoutShowingParameters": false, "colorLabel": 1, "class": "WorkflowActionRunScript", "pauseBeforeRunning": false}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}], "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad4,1", "systemVersion": "12.4"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_PUZZLE.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22WidgetOtaku%22%2C%20%22name%22%3A%20%222%20Clow%20Cards%22%2C%20%22description%22%3A%20%22Picks%202%20random%20Clow%20cards.%22%2C%20%22actions%22%3A%20%5B%7B%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22import%20workflow%5Cnimport%20random%5Cncards%20%3D%20%5B%27The%20Arrow%27%2C%20%27The%20Big%27%2C%20%27The%20Bubbles%27%2C%20%27The%20Change%27%2C%20%27The%20Cloud%27%2C%20%27The%20Create%27%2C%20%27The%20Dark%27%2C%20%27The%20Dash%27%2C%20%27The%20Dream%27%2C%20%27The%20Earthy%27%2C%20%27The%20Erase%27%2C%20%27The%20Firey%27%2C%20%27The%20Fight%27%2C%20%27The%20Float%27%2C%20%27The%20Flower%27%2C%20%27The%20Fly%27%2C%20%27The%20Freeze%27%2C%20%27The%20Glow%27%2C%20%27The%20Libra%27%2C%20%27The%20Light%27%2C%20%27The%20Lock%27%2C%20%27The%20Loop%27%2C%20%27The%20Illusion%27%2C%20%27The%20Jump%27%2C%20%27The%20Little%27%2C%20%27The%20Maze%27%2C%20%27The%20Mirror%27%2C%20%27The%20Mist%27%2C%20%27The%20Move%27%2C%20%27The%20Power%27%2C%20%27The%20Rain%27%2C%20%27The%20Return%27%2C%20%27The%20Sand%27%2C%20%27The%20Shadow%27%2C%20%27The%20Shield%27%2C%20%27The%20Shot%27%2C%20%27The%20Silent%27%2C%20%27The%20Sleep%27%2C%20%27The%20Snow%27%2C%20%27The%20Song%27%2C%20%27The%20Storm%27%2C%20%27The%20Sweet%27%2C%20%27The%20Sword%27%2C%20%27The%20Through%27%2C%20%27The%20Thunder%27%2C%20%27The%20Time%27%2C%20%27The%20Twin%27%2C%20%27The%20Voice%27%2C%20%27The%20Watery%27%2C%20%27The%20Wave%27%2C%20%27The%20Windy%27%2C%20%27The%20Wood%27%2C%20%27The%20Nothing%27%5D%5Cn%5Cn%5Cnworkflow.set_output%28str%28random.sample%28cards%2C%202%29%29%29%5Cn%22%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%201%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%5D%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad4%2C1%22%2C%20%22systemVersion%22%3A%20%2212.4%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_PUZZLE.png%22%7D", "description": "Picks 2 random Clow cards.", "title": "2 Clow Cards"}, {"url": "http://editorial-app.appspot.com/workflow/5827750921240576/ikW3U-iktDA", "workflow_data": {"username": "helpmen.org", "name": "Email without BCC", "description": "Sends a copy of the same email to multiple recipients individually, without BCC\nWhat this is good for: BCC is too often possible to see you are Bcc'd.  This workflow allows automated sending of the same email to multiple addresses.  \n\nHow to use:\nInstall the template\nhttp://www.editorial-workflows.com/workflow/5831758394163200/_RPQRLdd0FA\n\nThen fill the fields however you wish\n\nFeatures:\nI've improved typos + mistakes filters.  Any extra commas, newlines, and spaces between recipients are OK.  The workflow scans email addresses until one which is invalid is found.  Valid email addresses are in the form X@X.X\n\nAny extra spaces and newlines in the subject section before any text are ignored\n\n\n", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"regex": {"text": "(\\[Recipients\\]):( |\n)*([a-zA-Z0-9\\.\\_\\-]+@([a-zA-Z0-9\\-]+)\\.( )*[a-zA-Z0-9]+(,| |\n)*)+", "tokenRanges": {}, "type": "advancedText"}, "matchGroup": "", "searchTypeOption": 0}, "class": "WorkflowActionMatchRegularExpression"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 2, "find": {"text": "(\\[Recipients\\]):( |\n)*", "tokenRanges": {}, "type": "advancedText"}, "replace": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 2, "find": {"text": "(,| |\n)+", "tokenRanges": {}, "type": "advancedText"}, "replace": {"text": "\n", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "emailList", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"regex": {"text": "(\\[Subject\\]):( |\n)*(.*)", "tokenRanges": {}, "type": "advancedText"}, "outputOption": 0, "matchGroup": ""}, "class": "WorkflowActionMatchRegularExpression"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 2, "find": {"text": "(\\[Subject\\]):( |\n)*", "tokenRanges": {}, "type": "advancedText"}, "replace": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "subject", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"regex": {"text": "(\\[Message\\]):( |\n)*((?s).*)", "tokenRanges": {}, "type": "advancedText"}, "matchGroup": ""}, "class": "WorkflowActionMatchRegularExpression"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 2, "find": {"text": "(\\[Message\\]):( |\n)*", "tokenRanges": {}, "type": "advancedText"}, "replace": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "body", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "Email recipients: \n\n?\n\nSubject:\n\n?\n\nEmail body:\n\n?", "tokenRanges": {"{20, 1}": "emailList", "{33, 1}": "subject", "{49, 1}": "body"}, "type": "advancedText"}}, "class": "WorkflowActionConsoleOutput"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "emailList"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"regex": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionRepeatWithLines"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"body": {"text": "?", "tokenRanges": {"{0, 1}": "body"}, "type": "advancedText"}, "fullScreen": false, "recipients": {"text": "?", "tokenRanges": {"{0, 1}": "%repeat:text"}, "type": "advancedText"}, "isHTML": false, "stopWhenCancelled": true, "subject": {"text": "?", "tokenRanges": {"{0, 1}": "subject"}, "type": "advancedText"}}, "class": "WorkflowActionEmail"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionRepeatWithLinesEnd"}], "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad7,1", "systemVersion": "12.2"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_MAIL.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22helpmen.org%22%2C%20%22name%22%3A%20%22Email%20without%20BCC%22%2C%20%22description%22%3A%20%22Sends%20a%20copy%20of%20the%20same%20email%20to%20multiple%20recipients%20individually%2C%20without%20BCC%5CnWhat%20this%20is%20good%20for%3A%20BCC%20is%20too%20often%20possible%20to%20see%20you%20are%20Bcc%27d.%20%20This%20workflow%20allows%20automated%20sending%20of%20the%20same%20email%20to%20multiple%20addresses.%20%20%5Cn%5CnHow%20to%20use%3A%5CnInstall%20the%20template%5Cnhttp%3A%2F%2Fwww.editorial-workflows.com%2Fworkflow%2F5831758394163200%2F_RPQRLdd0FA%5Cn%5CnThen%20fill%20the%20fields%20however%20you%20wish%5Cn%5CnFeatures%3A%5CnI%27ve%20improved%20typos%20%2B%20mistakes%20filters.%20%20Any%20extra%20commas%2C%20newlines%2C%20and%20spaces%20between%20recipients%20are%20OK.%20%20The%20workflow%20scans%20email%20addresses%20until%20one%20which%20is%20invalid%20is%20found.%20%20Valid%20email%20addresses%20are%20in%20the%20form%20X%40X.X%5Cn%5CnAny%20extra%20spaces%20and%20newlines%20in%20the%20subject%20section%20before%20any%20text%20are%20ignored%5Cn%5Cn%5Cn%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22regex%22%3A%20%7B%22text%22%3A%20%22%28%5C%5C%5BRecipients%5C%5C%5D%29%3A%28%20%7C%5Cn%29%2A%28%5Ba-zA-Z0-9%5C%5C.%5C%5C_%5C%5C-%5D%2B%40%28%5Ba-zA-Z0-9%5C%5C-%5D%2B%29%5C%5C.%28%20%29%2A%5Ba-zA-Z0-9%5D%2B%28%2C%7C%20%7C%5Cn%29%2A%29%2B%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22matchGroup%22%3A%20%22%22%2C%20%22searchTypeOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionMatchRegularExpression%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%202%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%28%5C%5C%5BRecipients%5C%5C%5D%29%3A%28%20%7C%5Cn%29%2A%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%202%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%28%2C%7C%20%7C%5Cn%29%2B%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%5Cn%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22emailList%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22regex%22%3A%20%7B%22text%22%3A%20%22%28%5C%5C%5BSubject%5C%5C%5D%29%3A%28%20%7C%5Cn%29%2A%28.%2A%29%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22outputOption%22%3A%200%2C%20%22matchGroup%22%3A%20%22%22%7D%2C%20%22class%22%3A%20%22WorkflowActionMatchRegularExpression%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%202%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%28%5C%5C%5BSubject%5C%5C%5D%29%3A%28%20%7C%5Cn%29%2A%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22subject%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22regex%22%3A%20%7B%22text%22%3A%20%22%28%5C%5C%5BMessage%5C%5C%5D%29%3A%28%20%7C%5Cn%29%2A%28%28%3Fs%29.%2A%29%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22matchGroup%22%3A%20%22%22%7D%2C%20%22class%22%3A%20%22WorkflowActionMatchRegularExpression%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%202%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%28%5C%5C%5BMessage%5C%5C%5D%29%3A%28%20%7C%5Cn%29%2A%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22body%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22Email%20recipients%3A%20%5Cn%5Cn%3F%5Cn%5CnSubject%3A%5Cn%5Cn%3F%5Cn%5CnEmail%20body%3A%5Cn%5Cn%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B20%2C%201%7D%22%3A%20%22emailList%22%2C%20%22%7B33%2C%201%7D%22%3A%20%22subject%22%2C%20%22%7B49%2C%201%7D%22%3A%20%22body%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionConsoleOutput%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22emailList%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22regex%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionRepeatWithLines%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22body%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22body%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22fullScreen%22%3A%20false%2C%20%22recipients%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25repeat%3Atext%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22isHTML%22%3A%20false%2C%20%22stopWhenCancelled%22%3A%20true%2C%20%22subject%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22subject%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionEmail%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionRepeatWithLinesEnd%22%7D%5D%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad7%2C1%22%2C%20%22systemVersion%22%3A%20%2212.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_MAIL.png%22%7D", "description": "Sends a copy of the same email to multiple recipients individually, without BCC\nWhat this is good for: BCC is too often possible to see you are Bcc'd.  This workflow allows automated sending of the same email to multiple addresses.  \n\nHow to use:\nInstall the template\nhttp://www.editorial-workflows.com/workflow/5831758394163200/_RPQRLdd0FA\n\nThen fill the fields however you wish\n\nFeatures:\nI've improved typos + mistakes filters.  Any extra commas, newlines, and spaces between recipients are OK.  The workflow scans email addresses until one which is invalid is found.  Valid email addresses are in the form X@X.X\n\nAny extra spaces and newlines in the subject section before any text are ignored\n\n\n", "title": "Email without BCC"}, {"url": "http://editorial-app.appspot.com/workflow/5831758394163200/_RPQRLdd0FA", "workflow_data": {"username": "helpmen.org", "description": "A template to compose emails.  Goes with http://www.editorial-workflows.com/workflow/5891835859828736/fXGW4koHTGs\n(Email without BCC)", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"content": {"text": "[Recipients]: ?\n\n\n\n[Subject]: \n\n\n\n[Message]: \n", "tokenRanges": {"{14, 1}": "%cursor"}, "type": "advancedText"}, "open": true, "filename": {"text": "ComposeEmail.txt", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCreateNewDocument"}], "name": "Compose Email", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad7,1", "systemVersion": "12.2"}, "type": "edtpl", "public": true, "icon": "TYPICONS-ALL_MAIL.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22helpmen.org%22%2C%20%22description%22%3A%20%22A%20template%20to%20compose%20emails.%20%20Goes%20with%20http%3A%2F%2Fwww.editorial-workflows.com%2Fworkflow%2F5891835859828736%2FfXGW4koHTGs%5Cn%28Email%20without%20BCC%29%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22content%22%3A%20%7B%22text%22%3A%20%22%5BRecipients%5D%3A%20%3F%5Cn%5Cn%5Cn%5Cn%5BSubject%5D%3A%20%5Cn%5Cn%5Cn%5Cn%5BMessage%5D%3A%20%5Cn%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B14%2C%201%7D%22%3A%20%22%25cursor%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22open%22%3A%20true%2C%20%22filename%22%3A%20%7B%22text%22%3A%20%22ComposeEmail.txt%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCreateNewDocument%22%7D%5D%2C%20%22name%22%3A%20%22Compose%20Email%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad7%2C1%22%2C%20%22systemVersion%22%3A%20%2212.2%22%7D%2C%20%22type%22%3A%20%22edtpl%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_MAIL.png%22%7D", "description": "A template to compose emails.  Goes with http://www.editorial-workflows.com/workflow/5891835859828736/fXGW4koHTGs\n(Email without BCC)", "title": "Compose Email"}, {"url": "http://editorial-app.appspot.com/workflow/5891835859828736/fXGW4koHTGs", "workflow_data": {"username": "helpmen.org", "name": "Email without BCC", "description": "Sends a copy of the same email to multiple recipients individually, without BCC\nWhat this is good for: BCC is too often possible to see you are Bcc'd.  This workflow allows automated sending of the same email to multiple addresses.  \n\nHow to use:\nInstall the template\nhttp://www.editorial-workflows.com/workflow/5831758394163200/_RPQRLdd0FA\n\nThen fill the fields however you wish\n\nFeatures:\nI've improved typos + mistakes filters.  Any extra commas, newlines, and spaces between recipients are OK.  The workflow scans email addresses until one which is invalid is found.  Valid email addresses are in the form X@X.X\n\nAny extra spaces and newlines in the subject section before any text are ignored\n\n\n", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"regex": {"text": "(\\[Recipients\\]):( |\n)*([a-zA-Z0-9]+@([a-zA-Z0-9]+)\\.( )*[a-zA-Z0-9]+(,| |\n)*)+", "tokenRanges": {}, "type": "advancedText"}, "matchGroup": "", "searchTypeOption": 0}, "class": "WorkflowActionMatchRegularExpression"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 2, "find": {"text": "(\\[Recipients\\]):( |\n)*", "tokenRanges": {}, "type": "advancedText"}, "replace": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 2, "find": {"text": "(,| |\n)+", "tokenRanges": {}, "type": "advancedText"}, "replace": {"text": "\n", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "emailList", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"regex": {"text": "(\\[Subject\\]):( |\n)*(.*)", "tokenRanges": {}, "type": "advancedText"}, "outputOption": 0, "matchGroup": ""}, "class": "WorkflowActionMatchRegularExpression"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 2, "find": {"text": "(\\[Subject\\]):( |\n)*", "tokenRanges": {}, "type": "advancedText"}, "replace": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "subject", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"regex": {"text": "(\\[Message\\]):( |\n)*((?s).*)", "tokenRanges": {}, "type": "advancedText"}, "matchGroup": ""}, "class": "WorkflowActionMatchRegularExpression"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 2, "find": {"text": "(\\[Message\\]):( |\n)*", "tokenRanges": {}, "type": "advancedText"}, "replace": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "body", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "Email recipients: \n\n?\n\nSubject:\n\n?\n\nEmail body:\n\n?", "tokenRanges": {"{20, 1}": "emailList", "{33, 1}": "subject", "{49, 1}": "body"}, "type": "advancedText"}}, "class": "WorkflowActionConsoleOutput"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "emailList"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"regex": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionRepeatWithLines"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"body": {"text": "?", "tokenRanges": {"{0, 1}": "body"}, "type": "advancedText"}, "fullScreen": false, "recipients": {"text": "?", "tokenRanges": {"{0, 1}": "%repeat:text"}, "type": "advancedText"}, "isHTML": false, "stopWhenCancelled": true, "subject": {"text": "?", "tokenRanges": {"{0, 1}": "subject"}, "type": "advancedText"}}, "class": "WorkflowActionEmail"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionRepeatWithLinesEnd"}], "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad7,1", "systemVersion": "12.2"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_MAIL.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22helpmen.org%22%2C%20%22name%22%3A%20%22Email%20without%20BCC%22%2C%20%22description%22%3A%20%22Sends%20a%20copy%20of%20the%20same%20email%20to%20multiple%20recipients%20individually%2C%20without%20BCC%5CnWhat%20this%20is%20good%20for%3A%20BCC%20is%20too%20often%20possible%20to%20see%20you%20are%20Bcc%27d.%20%20This%20workflow%20allows%20automated%20sending%20of%20the%20same%20email%20to%20multiple%20addresses.%20%20%5Cn%5CnHow%20to%20use%3A%5CnInstall%20the%20template%5Cnhttp%3A%2F%2Fwww.editorial-workflows.com%2Fworkflow%2F5831758394163200%2F_RPQRLdd0FA%5Cn%5CnThen%20fill%20the%20fields%20however%20you%20wish%5Cn%5CnFeatures%3A%5CnI%27ve%20improved%20typos%20%2B%20mistakes%20filters.%20%20Any%20extra%20commas%2C%20newlines%2C%20and%20spaces%20between%20recipients%20are%20OK.%20%20The%20workflow%20scans%20email%20addresses%20until%20one%20which%20is%20invalid%20is%20found.%20%20Valid%20email%20addresses%20are%20in%20the%20form%20X%40X.X%5Cn%5CnAny%20extra%20spaces%20and%20newlines%20in%20the%20subject%20section%20before%20any%20text%20are%20ignored%5Cn%5Cn%5Cn%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22regex%22%3A%20%7B%22text%22%3A%20%22%28%5C%5C%5BRecipients%5C%5C%5D%29%3A%28%20%7C%5Cn%29%2A%28%5Ba-zA-Z0-9%5D%2B%40%28%5Ba-zA-Z0-9%5D%2B%29%5C%5C.%28%20%29%2A%5Ba-zA-Z0-9%5D%2B%28%2C%7C%20%7C%5Cn%29%2A%29%2B%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22matchGroup%22%3A%20%22%22%2C%20%22searchTypeOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionMatchRegularExpression%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%202%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%28%5C%5C%5BRecipients%5C%5C%5D%29%3A%28%20%7C%5Cn%29%2A%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%202%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%28%2C%7C%20%7C%5Cn%29%2B%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%5Cn%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22emailList%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22regex%22%3A%20%7B%22text%22%3A%20%22%28%5C%5C%5BSubject%5C%5C%5D%29%3A%28%20%7C%5Cn%29%2A%28.%2A%29%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22outputOption%22%3A%200%2C%20%22matchGroup%22%3A%20%22%22%7D%2C%20%22class%22%3A%20%22WorkflowActionMatchRegularExpression%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%202%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%28%5C%5C%5BSubject%5C%5C%5D%29%3A%28%20%7C%5Cn%29%2A%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22subject%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22regex%22%3A%20%7B%22text%22%3A%20%22%28%5C%5C%5BMessage%5C%5C%5D%29%3A%28%20%7C%5Cn%29%2A%28%28%3Fs%29.%2A%29%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22matchGroup%22%3A%20%22%22%7D%2C%20%22class%22%3A%20%22WorkflowActionMatchRegularExpression%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%202%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%28%5C%5C%5BMessage%5C%5C%5D%29%3A%28%20%7C%5Cn%29%2A%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22body%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22Email%20recipients%3A%20%5Cn%5Cn%3F%5Cn%5CnSubject%3A%5Cn%5Cn%3F%5Cn%5CnEmail%20body%3A%5Cn%5Cn%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B20%2C%201%7D%22%3A%20%22emailList%22%2C%20%22%7B33%2C%201%7D%22%3A%20%22subject%22%2C%20%22%7B49%2C%201%7D%22%3A%20%22body%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionConsoleOutput%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22emailList%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22regex%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionRepeatWithLines%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22body%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22body%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22fullScreen%22%3A%20false%2C%20%22recipients%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25repeat%3Atext%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22isHTML%22%3A%20false%2C%20%22stopWhenCancelled%22%3A%20true%2C%20%22subject%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22subject%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionEmail%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionRepeatWithLinesEnd%22%7D%5D%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad7%2C1%22%2C%20%22systemVersion%22%3A%20%2212.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_MAIL.png%22%7D", "description": "Sends a copy of the same email to multiple recipients individually, without BCC\nWhat this is good for: BCC is too often possible to see you are Bcc'd.  This workflow allows automated sending of the same email to multiple addresses.  \n\nHow to use:\nInstall the template\nhttp://www.editorial-workflows.com/workflow/5831758394163200/_RPQRLdd0FA\n\nThen fill the fields however you wish\n\nFeatures:\nI've improved typos + mistakes filters.  Any extra commas, newlines, and spaces between recipients are OK.  The workflow scans email addresses until one which is invalid is found.  Valid email addresses are in the form X@X.X\n\nAny extra spaces and newlines in the subject section before any text are ignored\n\n\n", "title": "Email without BCC"}, {"url": "http://editorial-app.appspot.com/workflow/5815488521175040/ZQV4ZiVAbg4", "workflow_data": {"username": "", "description": "Inserts two spaces before each line break, but only if it\u2019s not *already* preceded by two spaces. (The other version of this didn\u2019t work for me.)", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 2, "find": {"text": "(?<!  )(\\n)", "tokenRanges": {}, "type": "advancedText"}, "replace": {"text": "  $1", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "t", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"numberOfSteps": {"text": "1", "tokenRanges": {}, "type": "advancedText"}, "direction": 2, "unit": 0}, "class": "WorkflowActionExtendSelection"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?", "tokenRanges": {"{0, 1}": "t"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}], "name": "Preserve Line Breaks (regex)", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone10,6", "systemVersion": "12.3.1"}, "type": "wkflw", "public": true, "icon": "minicons-icons-text-paragraph.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Inserts%20two%20spaces%20before%20each%20line%20break%2C%20but%20only%20if%20it%5Cu2019s%20not%20%2Aalready%2A%20preceded%20by%20two%20spaces.%20%28The%20other%20version%20of%20this%20didn%5Cu2019t%20work%20for%20me.%29%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%202%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%28%3F%3C%21%20%20%29%28%5C%5Cn%29%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%20%20%241%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22t%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22numberOfSteps%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22direction%22%3A%202%2C%20%22unit%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionExtendSelection%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22t%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%5D%2C%20%22name%22%3A%20%22Preserve%20Line%20Breaks%20%28regex%29%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone10%2C6%22%2C%20%22systemVersion%22%3A%20%2212.3.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-text-paragraph.png%22%7D", "description": "Inserts two spaces before each line break, but only if it\u2019s not *already* preceded by two spaces. (The other version of this didn\u2019t work for me.)", "title": "Preserve Line Breaks (regex)"}, {"url": "http://editorial-app.appspot.com/workflow/5879799226564608/TD-0sr0cEH8", "workflow_data": {"username": "", "description": "Shows a list of URLs in the current document. Selecting one of the URLs opens it in the browser panel.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionExtractURLs"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "If no URLs are found...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"showHUD": true, "HUDTitle": "No URLs found", "stopOption": 0}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"list": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "", "showInPopover": true, "allowMultipleSelection": false}, "class": "WorkflowActionSelectFromList"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "If URL is selected...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"URL": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "waitUntilLoaded": false, "revealBrowserAutomatically": true, "openIn": 0, "tabOption": 0}, "class": "WorkflowActionOpenURL"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}], "name": "List URLs...", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad7,3", "systemVersion": "12.3.1"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_ANCHOR.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Shows%20a%20list%20of%20URLs%20in%20the%20current%20document.%20Selecting%20one%20of%20the%20URLs%20opens%20it%20in%20the%20browser%20panel.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionExtractURLs%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22If%20no%20URLs%20are%20found...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20true%2C%20%22HUDTitle%22%3A%20%22No%20URLs%20found%22%2C%20%22stopOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22list%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22%22%2C%20%22showInPopover%22%3A%20true%2C%20%22allowMultipleSelection%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionSelectFromList%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22If%20URL%20is%20selected...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22URL%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22waitUntilLoaded%22%3A%20false%2C%20%22revealBrowserAutomatically%22%3A%20true%2C%20%22openIn%22%3A%200%2C%20%22tabOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%5D%2C%20%22name%22%3A%20%22List%20URLs...%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad7%2C3%22%2C%20%22systemVersion%22%3A%20%2212.3.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_ANCHOR.png%22%7D", "description": "Shows a list of URLs in the current document. Selecting one of the URLs opens it in the browser panel.", "title": "List URLs..."}, {"url": "http://editorial-app.appspot.com/workflow/5863118567636992/Kn1mo3uC_PU", "workflow_data": {"username": "", "description": "Select forward one word at a time", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"range": {"text": "?:", "tokenRanges": {"{0, 1}": "%editor:selected-range-end"}, "type": "advancedText"}}, "class": "WorkflowActionExtractRange"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"regex": {"text": "\\w+", "tokenRanges": {}, "type": "advancedText"}, "outputOption": 1, "matchGroup": ""}, "class": "WorkflowActionMatchRegularExpression"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"regex": {"text": "\\d+:(\\d+)", "tokenRanges": {}, "type": "advancedText"}, "matchGroup": "1"}, "class": "WorkflowActionMatchRegularExpression"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"numberOfSteps": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "direction": 1, "unit": 2}, "class": "WorkflowActionExtendSelection"}], "name": "Select ->", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad4,5", "systemVersion": "12.1.4"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Select%20forward%20one%20word%20at%20a%20time%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22range%22%3A%20%7B%22text%22%3A%20%22%3F%3A%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Aselected-range-end%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionExtractRange%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22regex%22%3A%20%7B%22text%22%3A%20%22%5C%5Cw%2B%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22outputOption%22%3A%201%2C%20%22matchGroup%22%3A%20%22%22%7D%2C%20%22class%22%3A%20%22WorkflowActionMatchRegularExpression%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22regex%22%3A%20%7B%22text%22%3A%20%22%5C%5Cd%2B%3A%28%5C%5Cd%2B%29%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22matchGroup%22%3A%20%221%22%7D%2C%20%22class%22%3A%20%22WorkflowActionMatchRegularExpression%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22numberOfSteps%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22direction%22%3A%201%2C%20%22unit%22%3A%202%7D%2C%20%22class%22%3A%20%22WorkflowActionExtendSelection%22%7D%5D%2C%20%22name%22%3A%20%22Select%20-%3E%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad4%2C5%22%2C%20%22systemVersion%22%3A%20%2212.1.4%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "Select forward one word at a time", "title": "Select ->"}, {"url": "http://editorial-app.appspot.com/workflow/5782726510641152/-5bw0AilpJE", "workflow_data": {"username": "", "description": "Shows the iOS share sheet with the selected text as input. If nothing is selected, the entire document is shared. In a Markdown document, the text can optionally be converted to HTML first.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:syntax-mode"}, "type": "advancedText"}, "expression2": {"text": "markdown", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"button1Value": {"text": "[[html]]", "tokenRanges": {}, "type": "advancedText"}, "button3Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button2Value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "Share Document Text...", "button3Title": "", "button2Title": "Use Plain Text", "button1Title": "Convert to HTML", "message": {"text": "Do you want to convert this Markdown document to HTML for sharing?", "tokenRanges": {}, "type": "advancedText"}, "showCancelButton": true}, "class": "WorkflowActionShowAlert"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "[[html]]", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"autolinks": true, "tables": true, "smartypants": true, "strikethrough": true, "footnotes": true, "superscript": true, "metadata": false}, "class": "WorkflowActionConvertMarkdown"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\"/></head>\n<body>\n?\n</body>\n</html>", "tokenRanges": {"{67, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionShowShareSheet"}], "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad3,3", "systemVersion": "9.3.5"}, "icon": "minicons-icons-navigation-log-out-2.png", "type": "wkflw", "public": true, "name": "Share..."}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Shows%20the%20iOS%20share%20sheet%20with%20the%20selected%20text%20as%20input.%20If%20nothing%20is%20selected%2C%20the%20entire%20document%20is%20shared.%20In%20a%20Markdown%20document%2C%20the%20text%20can%20optionally%20be%20converted%20to%20HTML%20first.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Asyntax-mode%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22markdown%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22button1Value%22%3A%20%7B%22text%22%3A%20%22%5B%5Bhtml%5D%5D%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button3Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button2Value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Share%20Document%20Text...%22%2C%20%22button3Title%22%3A%20%22%22%2C%20%22button2Title%22%3A%20%22Use%20Plain%20Text%22%2C%20%22button1Title%22%3A%20%22Convert%20to%20HTML%22%2C%20%22message%22%3A%20%7B%22text%22%3A%20%22Do%20you%20want%20to%20convert%20this%20Markdown%20document%20to%20HTML%20for%20sharing%3F%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22showCancelButton%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionShowAlert%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%5B%5Bhtml%5D%5D%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22autolinks%22%3A%20true%2C%20%22tables%22%3A%20true%2C%20%22smartypants%22%3A%20true%2C%20%22strikethrough%22%3A%20true%2C%20%22footnotes%22%3A%20true%2C%20%22superscript%22%3A%20true%2C%20%22metadata%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionConvertMarkdown%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3C%21DOCTYPE%20html%3E%5Cn%3Chtml%3E%5Cn%3Chead%3E%3Cmeta%20charset%3D%5C%22utf-8%5C%22%2F%3E%3C%2Fhead%3E%5Cn%3Cbody%3E%5Cn%3F%5Cn%3C%2Fbody%3E%5Cn%3C%2Fhtml%3E%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B67%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionShowShareSheet%22%7D%5D%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad3%2C3%22%2C%20%22systemVersion%22%3A%20%229.3.5%22%7D%2C%20%22icon%22%3A%20%22minicons-icons-navigation-log-out-2.png%22%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22name%22%3A%20%22Share...%22%7D", "description": "Shows the iOS share sheet with the selected text as input. If nothing is selected, the entire document is shared. In a Markdown document, the text can optionally be converted to HTML first.", "title": "Share..."}, {"url": "http://editorial-app.appspot.com/workflow/5901817363824640/qFcp5oHuipw", "workflow_data": {"username": "", "description": "Prints the current document as plain text or HTML (converted from Markdown).", "actions": [{"customTitle": "If no document...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:filename"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "pauseWithoutShowingParameters": false, "subActions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"showHUD": true, "HUDTitle": "No Document Selected"}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}], "class": "WorkflowActionCondition", "pauseBeforeRunning": false}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"button1Value": {"text": "plain", "tokenRanges": {}, "type": "advancedText"}, "button3Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button2Value": {"text": "html", "tokenRanges": {}, "type": "advancedText"}, "title": "Print as...", "button3Title": "", "button2Title": "Markdown (HTML)", "button1Title": "Plain Text", "message": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "showCancelButton": true}, "class": "WorkflowActionShowAlert"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "If \"Plain Text\"...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "plain", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"font": {"name": "SourceSansPro-Regular", "size": 18}, "format": 1}, "class": "WorkflowActionPrint"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"showHUD": false, "HUDTitle": ""}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"tables": true, "autolinks": true, "smartypants": true, "strikethrough": true, "footnotes": true, "metadata": false, "superscript": true}, "class": "WorkflowActionConvertMarkdown"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Generate HTML Template", "parameters": {"text": {"text": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>Preview</title>\n    <style type=\"text/css\">\n    body {\n      margin: 0;\n      padding: 0;\n      border: 0;\n      color: black;\n      font-size: 18px;\n      font-family: \"Source Sans Pro\", Helvetica, sans-serif;\n      line-height: 150%;\n      vertical-align: baseline;\n      overflow: hidden;\n      background-color: white;\n    }\n    a {\n      color: black;\n      text-decoration:underline;\n    }\n    h1 {\n      font-size: 27px;\n      margin-top: 32px;\n      margin-bottom: 12px;\n    }\n    h2 {\n      font-size: 24px;\n      margin-top: 32px;\n      margin-bottom: 12px;\n    }\n    h3 {\n      font-size: 22px;\n    }\n    h4, h5, h6 {\n      font-size: 20px;\n      margin-top: 12px;\n      margin-bottom: 0;\n    }\n    h1:first-child {\n      margin-top: 0;\n    }\n    p {\n      margin-bottom: 12px;\n    }\n    p:last-child {\n      margin-bottom:0;\n    }\n    ol {\n      list-style: outside decimal;\n    }\n    ul {\n      list-style: outside disc;\n    }\n    ol, ul {\n      padding-left:0;\n      margin-bottom:12px;\n    }\n    ol li {\n      margin-bottom:16px;\n      margin-left:28px;\n    }\n    ul li {\n      margin-bottom: 12px;\n      margin-left: 20px;\n    }\n    ol:last-child, ul:last-child {\n      margin-bottom:0;\n    }\n    li > p {\n      margin-bottom:12px;\n    }\n    li > ol, li > ul {\n      margin-top: 12px !important;\n      padding-left:12px;\n    }\n    dl {\n      margin-bottom: 12px;\n    }\n    dl dt {\n      font-weight:bold;\n      margin-bottom: 8px;\n    }\n    dl dd {\n      margin-left: 0;\n      margin-bottom: 12px;\n    }\n    dl dd:last-child, dl:last-child {\n      margin-bottom: 0;\n    }\n    pre {\n      white-space: pre-wrap;\n      margin-bottom: 24px;\n      overflow: hidden;\n      padding: 3px;\n      -webkit-border-radius: 3px;\n      background-color: white;\n      border: 1px solid gray;\n    }\n    code {\n      font-family: \"DejaVuSansMono\", monospace;\n      font-size: 0.9em;\n      white-space: nowrap;\n      padding: 2px;\n    }\n    pre code {\n      font-family: \"DejaVuSansMono\", monospace;\n      white-space: pre-wrap;\n      border: none;\n      padding: 0;\n      background-color: transparent;\n      -webkit-border-radius: 0;\n    }\n    blockquote {\n      border-left: 3px solid #ccc;\n      margin-left: 0;\n      margin-right: auto;\n      width: 95%;\n      padding: 0 10px;\n    }\n    table {\n      margin-left: auto;\n      margin-right: auto;\n      margin-bottom: 24px;\n      border-bottom: 1px solid #ddd;\n      border-right: 1px solid #ddd;\n      border-spacing: 0;\n    }\n    table th {\n      padding: 3px 10px;\n      background-color: white;\n      border-top: 1px solid #ddd;\n      border-left: 1px solid #ddd;\n    }\n    table td {\n      padding: 3px 10px;\n      border-top: 1px solid #ddd;\n      border-left: 1px solid #ddd;\n    }\n    img {\n      border: none;\n      display: block;\n      margin: 1em auto;\n      max-width: 100%;\n    }\n    #content-wrapper {\n      height: 100%;\n      overflow-y: scroll;\n      overflow-x: hidden;\n      font-size: 1.0em;\n      width: 100%;\n    }\n    #content {\n      width: auto;\n      padding: 40px 40px 40px 40px;\n    }\n    .footnote {\n      font-size: 0.8em;\n      vertical-align: super;\n    }\n    .footnotes ol {\n      font-weight: bold;\n    }\n    .footnotes ol li p {\n      font-weight: normal;\n    }\n    </style>\n  </head>\n  <body>\n    <div id=\"content-wrapper\">\n      <div id=\"content\">\n        ?\n      </div>\n    </div>\n  </body>\n</html>\n", "tokenRanges": {"{3462, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"font": {"name": "Helvetica", "size": 16}}, "class": "WorkflowActionPrint"}], "name": "Print...", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad7,4", "systemVersion": "13.0"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_PRINT.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Prints%20the%20current%20document%20as%20plain%20text%20or%20HTML%20%28converted%20from%20Markdown%29.%22%2C%20%22actions%22%3A%20%5B%7B%22customTitle%22%3A%20%22If%20no%20document...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Afilename%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22subActions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20true%2C%20%22HUDTitle%22%3A%20%22No%20Document%20Selected%22%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%5D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22button1Value%22%3A%20%7B%22text%22%3A%20%22plain%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button3Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button2Value%22%3A%20%7B%22text%22%3A%20%22html%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Print%20as...%22%2C%20%22button3Title%22%3A%20%22%22%2C%20%22button2Title%22%3A%20%22Markdown%20%28HTML%29%22%2C%20%22button1Title%22%3A%20%22Plain%20Text%22%2C%20%22message%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22showCancelButton%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionShowAlert%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22If%20%5C%22Plain%20Text%5C%22...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22plain%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22font%22%3A%20%7B%22name%22%3A%20%22SourceSansPro-Regular%22%2C%20%22size%22%3A%2018%7D%2C%20%22format%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionPrint%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20false%2C%20%22HUDTitle%22%3A%20%22%22%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22tables%22%3A%20true%2C%20%22autolinks%22%3A%20true%2C%20%22smartypants%22%3A%20true%2C%20%22strikethrough%22%3A%20true%2C%20%22footnotes%22%3A%20true%2C%20%22metadata%22%3A%20false%2C%20%22superscript%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionConvertMarkdown%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Generate%20HTML%20Template%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3C%21DOCTYPE%20html%3E%5Cn%3Chtml%3E%5Cn%20%20%3Chead%3E%5Cn%20%20%20%20%3Cmeta%20http-equiv%3D%5C%22Content-Type%5C%22%20content%3D%5C%22text%2Fhtml%3B%20charset%3Dutf-8%5C%22%3E%5Cn%20%20%20%20%3Ctitle%3EPreview%3C%2Ftitle%3E%5Cn%20%20%20%20%3Cstyle%20type%3D%5C%22text%2Fcss%5C%22%3E%5Cn%20%20%20%20body%20%7B%5Cn%20%20%20%20%20%20margin%3A%200%3B%5Cn%20%20%20%20%20%20padding%3A%200%3B%5Cn%20%20%20%20%20%20border%3A%200%3B%5Cn%20%20%20%20%20%20color%3A%20black%3B%5Cn%20%20%20%20%20%20font-size%3A%2018px%3B%5Cn%20%20%20%20%20%20font-family%3A%20%5C%22Source%20Sans%20Pro%5C%22%2C%20Helvetica%2C%20sans-serif%3B%5Cn%20%20%20%20%20%20line-height%3A%20150%25%3B%5Cn%20%20%20%20%20%20vertical-align%3A%20baseline%3B%5Cn%20%20%20%20%20%20overflow%3A%20hidden%3B%5Cn%20%20%20%20%20%20background-color%3A%20white%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20a%20%7B%5Cn%20%20%20%20%20%20color%3A%20black%3B%5Cn%20%20%20%20%20%20text-decoration%3Aunderline%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20h1%20%7B%5Cn%20%20%20%20%20%20font-size%3A%2027px%3B%5Cn%20%20%20%20%20%20margin-top%3A%2032px%3B%5Cn%20%20%20%20%20%20margin-bottom%3A%2012px%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20h2%20%7B%5Cn%20%20%20%20%20%20font-size%3A%2024px%3B%5Cn%20%20%20%20%20%20margin-top%3A%2032px%3B%5Cn%20%20%20%20%20%20margin-bottom%3A%2012px%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20h3%20%7B%5Cn%20%20%20%20%20%20font-size%3A%2022px%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20h4%2C%20h5%2C%20h6%20%7B%5Cn%20%20%20%20%20%20font-size%3A%2020px%3B%5Cn%20%20%20%20%20%20margin-top%3A%2012px%3B%5Cn%20%20%20%20%20%20margin-bottom%3A%200%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20h1%3Afirst-child%20%7B%5Cn%20%20%20%20%20%20margin-top%3A%200%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20p%20%7B%5Cn%20%20%20%20%20%20margin-bottom%3A%2012px%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20p%3Alast-child%20%7B%5Cn%20%20%20%20%20%20margin-bottom%3A0%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20ol%20%7B%5Cn%20%20%20%20%20%20list-style%3A%20outside%20decimal%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20ul%20%7B%5Cn%20%20%20%20%20%20list-style%3A%20outside%20disc%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20ol%2C%20ul%20%7B%5Cn%20%20%20%20%20%20padding-left%3A0%3B%5Cn%20%20%20%20%20%20margin-bottom%3A12px%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20ol%20li%20%7B%5Cn%20%20%20%20%20%20margin-bottom%3A16px%3B%5Cn%20%20%20%20%20%20margin-left%3A28px%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20ul%20li%20%7B%5Cn%20%20%20%20%20%20margin-bottom%3A%2012px%3B%5Cn%20%20%20%20%20%20margin-left%3A%2020px%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20ol%3Alast-child%2C%20ul%3Alast-child%20%7B%5Cn%20%20%20%20%20%20margin-bottom%3A0%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20li%20%3E%20p%20%7B%5Cn%20%20%20%20%20%20margin-bottom%3A12px%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20li%20%3E%20ol%2C%20li%20%3E%20ul%20%7B%5Cn%20%20%20%20%20%20margin-top%3A%2012px%20%21important%3B%5Cn%20%20%20%20%20%20padding-left%3A12px%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20dl%20%7B%5Cn%20%20%20%20%20%20margin-bottom%3A%2012px%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20dl%20dt%20%7B%5Cn%20%20%20%20%20%20font-weight%3Abold%3B%5Cn%20%20%20%20%20%20margin-bottom%3A%208px%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20dl%20dd%20%7B%5Cn%20%20%20%20%20%20margin-left%3A%200%3B%5Cn%20%20%20%20%20%20margin-bottom%3A%2012px%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20dl%20dd%3Alast-child%2C%20dl%3Alast-child%20%7B%5Cn%20%20%20%20%20%20margin-bottom%3A%200%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20pre%20%7B%5Cn%20%20%20%20%20%20white-space%3A%20pre-wrap%3B%5Cn%20%20%20%20%20%20margin-bottom%3A%2024px%3B%5Cn%20%20%20%20%20%20overflow%3A%20hidden%3B%5Cn%20%20%20%20%20%20padding%3A%203px%3B%5Cn%20%20%20%20%20%20-webkit-border-radius%3A%203px%3B%5Cn%20%20%20%20%20%20background-color%3A%20white%3B%5Cn%20%20%20%20%20%20border%3A%201px%20solid%20gray%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20font-family%3A%20%5C%22DejaVuSansMono%5C%22%2C%20monospace%3B%5Cn%20%20%20%20%20%20font-size%3A%200.9em%3B%5Cn%20%20%20%20%20%20white-space%3A%20nowrap%3B%5Cn%20%20%20%20%20%20padding%3A%202px%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20pre%20code%20%7B%5Cn%20%20%20%20%20%20font-family%3A%20%5C%22DejaVuSansMono%5C%22%2C%20monospace%3B%5Cn%20%20%20%20%20%20white-space%3A%20pre-wrap%3B%5Cn%20%20%20%20%20%20border%3A%20none%3B%5Cn%20%20%20%20%20%20padding%3A%200%3B%5Cn%20%20%20%20%20%20background-color%3A%20transparent%3B%5Cn%20%20%20%20%20%20-webkit-border-radius%3A%200%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20blockquote%20%7B%5Cn%20%20%20%20%20%20border-left%3A%203px%20solid%20%23ccc%3B%5Cn%20%20%20%20%20%20margin-left%3A%200%3B%5Cn%20%20%20%20%20%20margin-right%3A%20auto%3B%5Cn%20%20%20%20%20%20width%3A%2095%25%3B%5Cn%20%20%20%20%20%20padding%3A%200%2010px%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20table%20%7B%5Cn%20%20%20%20%20%20margin-left%3A%20auto%3B%5Cn%20%20%20%20%20%20margin-right%3A%20auto%3B%5Cn%20%20%20%20%20%20margin-bottom%3A%2024px%3B%5Cn%20%20%20%20%20%20border-bottom%3A%201px%20solid%20%23ddd%3B%5Cn%20%20%20%20%20%20border-right%3A%201px%20solid%20%23ddd%3B%5Cn%20%20%20%20%20%20border-spacing%3A%200%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20table%20th%20%7B%5Cn%20%20%20%20%20%20padding%3A%203px%2010px%3B%5Cn%20%20%20%20%20%20background-color%3A%20white%3B%5Cn%20%20%20%20%20%20border-top%3A%201px%20solid%20%23ddd%3B%5Cn%20%20%20%20%20%20border-left%3A%201px%20solid%20%23ddd%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20table%20td%20%7B%5Cn%20%20%20%20%20%20padding%3A%203px%2010px%3B%5Cn%20%20%20%20%20%20border-top%3A%201px%20solid%20%23ddd%3B%5Cn%20%20%20%20%20%20border-left%3A%201px%20solid%20%23ddd%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20img%20%7B%5Cn%20%20%20%20%20%20border%3A%20none%3B%5Cn%20%20%20%20%20%20display%3A%20block%3B%5Cn%20%20%20%20%20%20margin%3A%201em%20auto%3B%5Cn%20%20%20%20%20%20max-width%3A%20100%25%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20%23content-wrapper%20%7B%5Cn%20%20%20%20%20%20height%3A%20100%25%3B%5Cn%20%20%20%20%20%20overflow-y%3A%20scroll%3B%5Cn%20%20%20%20%20%20overflow-x%3A%20hidden%3B%5Cn%20%20%20%20%20%20font-size%3A%201.0em%3B%5Cn%20%20%20%20%20%20width%3A%20100%25%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20%23content%20%7B%5Cn%20%20%20%20%20%20width%3A%20auto%3B%5Cn%20%20%20%20%20%20padding%3A%2040px%2040px%2040px%2040px%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20.footnote%20%7B%5Cn%20%20%20%20%20%20font-size%3A%200.8em%3B%5Cn%20%20%20%20%20%20vertical-align%3A%20super%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20.footnotes%20ol%20%7B%5Cn%20%20%20%20%20%20font-weight%3A%20bold%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20.footnotes%20ol%20li%20p%20%7B%5Cn%20%20%20%20%20%20font-weight%3A%20normal%3B%5Cn%20%20%20%20%7D%5Cn%20%20%20%20%3C%2Fstyle%3E%5Cn%20%20%3C%2Fhead%3E%5Cn%20%20%3Cbody%3E%5Cn%20%20%20%20%3Cdiv%20id%3D%5C%22content-wrapper%5C%22%3E%5Cn%20%20%20%20%20%20%3Cdiv%20id%3D%5C%22content%5C%22%3E%5Cn%20%20%20%20%20%20%20%20%3F%5Cn%20%20%20%20%20%20%3C%2Fdiv%3E%5Cn%20%20%20%20%3C%2Fdiv%3E%5Cn%20%20%3C%2Fbody%3E%5Cn%3C%2Fhtml%3E%5Cn%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B3462%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22font%22%3A%20%7B%22name%22%3A%20%22Helvetica%22%2C%20%22size%22%3A%2016%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionPrint%22%7D%5D%2C%20%22name%22%3A%20%22Print...%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad7%2C4%22%2C%20%22systemVersion%22%3A%20%2213.0%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_PRINT.png%22%7D", "description": "Prints the current document as plain text or HTML (converted from Markdown).", "title": "Print..."}, {"url": "http://editorial-app.appspot.com/workflow/5802603082416128/tFOsEuoPPf8", "workflow_data": {"username": "www.buddism.ru", "description": "Dictionary access and translation GUI. Dictionary based  on low level nosql database GVector. For key-value search used Phyton map. Dictionary can mange few Gb up to 1mln records.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"ui": "[\n  {\n    \"class\" : \"View\",\n    \"attributes\" : {\n      \"tint_color\" : \"RGBA(0.000000,0.478000,1.000000,1.000000)\",\n      \"enabled\" : true,\n      \"flex\" : \"\",\n      \"name\" : \"Dictionary\",\n      \"corner_radius\" : 11,\n      \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n      \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\"\n    },\n    \"frame\" : \"{{0, 0}, {768, 960}}\",\n    \"selected\" : false,\n    \"nodes\" : [\n      {\n        \"class\" : \"WebView\",\n        \"attributes\" : {\n          \"name\" : \"webview1\",\n          \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n          \"uuid\" : \"3093D6E5-B0E7-4BBF-A0B2-0BA0E6E6F550\",\n          \"enabled\" : true,\n          \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n          \"flex\" : \"WH\"\n        },\n        \"frame\" : \"{{0, 52}, {768, 908}}\",\n        \"selected\" : false,\n        \"nodes\" : [\n\n        ]\n      },\n      {\n        \"class\" : \"Label\",\n        \"attributes\" : {\n          \"font_size\" : 17,\n          \"enabled\" : true,\n          \"text\" : \"\",\n          \"flex\" : \"\",\n          \"name\" : \"label3\",\n          \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n          \"text_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n          \"alignment\" : \"left\",\n          \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n          \"uuid\" : \"6F8ECBA6-02B4-485B-A2C7-D1FA0A907029\"\n        },\n        \"frame\" : \"{{0, 0}, {355, 52}}\",\n        \"selected\" : false,\n        \"nodes\" : [\n\n        ]\n      },\n      {\n        \"class\" : \"Button\",\n        \"attributes\" : {\n          \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n          \"border_color\" : \"RGBA(0.285714,0.285714,0.285714,1.000000)\",\n          \"font_size\" : 15,\n          \"title\" : \"Close\",\n          \"enabled\" : true,\n          \"flex\" : \"\",\n          \"action\" : \"close\",\n          \"font_bold\" : false,\n          \"name\" : \"button3\",\n          \"border_width\" : 1,\n          \"uuid\" : \"6340362E-06C6-4603-82C9-78460C36CF91\",\n          \"corner_radius\" : 11\n        },\n        \"frame\" : \"{{0, 15}, {65, 37}}\",\n        \"selected\" : false,\n        \"nodes\" : [\n\n        ]\n      },\n      {\n        \"class\" : \"Button\",\n        \"attributes\" : {\n          \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n          \"border_color\" : \"RGBA(0.285714,0.285714,0.285714,1.000000)\",\n          \"font_size\" : 15,\n          \"title\" : \"Menu\",\n          \"enabled\" : true,\n          \"flex\" : \"\",\n          \"action\" : \"menu\",\n          \"font_bold\" : false,\n          \"name\" : \"button2\",\n          \"corner_radius\" : 11,\n          \"uuid\" : \"3809643C-7FEA-4266-B769-6F5C6708458C\",\n          \"border_width\" : 1\n        },\n        \"frame\" : \"{{64, 15}, {65, 37}}\",\n        \"selected\" : false,\n        \"nodes\" : [\n\n        ]\n      },\n      {\n        \"class\" : \"Label\",\n        \"attributes\" : {\n          \"font_size\" : 17,\n          \"enabled\" : true,\n          \"text\" : \"\",\n          \"flex\" : \"\",\n          \"name\" : \"label2\",\n          \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n          \"text_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n          \"alignment\" : \"left\",\n          \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n          \"uuid\" : \"F4AA9619-492D-4E9E-9100-F5527E07AE4D\"\n        },\n        \"frame\" : \"{{352, 0}, {416, 52}}\",\n        \"selected\" : false,\n        \"nodes\" : [\n\n        ]\n      },\n      {\n        \"class\" : \"Button\",\n        \"attributes\" : {\n          \"font_size\" : 27,\n          \"enabled\" : true,\n          \"flex\" : \"\",\n          \"font_bold\" : false,\n          \"name\" : \"button4\",\n          \"title\" : \"<\",\n          \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n          \"action\" : \"previousPage\",\n          \"alpha\" : 0.5,\n          \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n          \"uuid\" : \"21BD4B0A-224A-40FA-8CA8-D1FB198D27B4\"\n        },\n        \"frame\" : \"{{660, 15}, {36, 34}}\",\n        \"selected\" : false,\n        \"nodes\" : [\n\n        ]\n      },\n      {\n        \"class\" : \"Button\",\n        \"attributes\" : {\n          \"font_size\" : 27,\n          \"enabled\" : true,\n          \"flex\" : \"\",\n          \"font_bold\" : false,\n          \"name\" : \"button5\",\n          \"title\" : \">\",\n          \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n          \"action\" : \"nextPage\",\n          \"alpha\" : 0.5,\n          \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n          \"uuid\" : \"73387A16-9DD1-4005-AE02-C152A08129A1\"\n        },\n        \"frame\" : \"{{729, 15}, {39, 34}}\",\n        \"selected\" : false,\n        \"nodes\" : [\n\n        ]\n      },\n      {\n        \"class\" : \"TextView\",\n        \"attributes\" : {\n          \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n          \"alignment\" : \"center\",\n          \"border_color\" : \"RGBA(0.142857,0.142857,0.142857,1.000000)\",\n          \"font_size\" : 14,\n          \"enabled\" : true,\n          \"flex\" : \"\",\n          \"autosave_enabled\" : true,\n          \"text\" : \"0\",\n          \"text_color\" : \"RGBA(0.642857,0.642857,0.642857,1.000000)\",\n          \"name\" : \"textview1\",\n          \"corner_radius\" : 3,\n          \"editable\" : true,\n          \"border_width\" : 1,\n          \"uuid\" : \"5BCAA7D4-46F6-4B12-BE9F-3CD2D20CC45F\"\n        },\n        \"frame\" : \"{{690, 18}, {44, 31}}\",\n        \"selected\" : false,\n        \"nodes\" : [\n\n        ]\n      },\n      {\n        \"class\" : \"View\",\n        \"attributes\" : {\n          \"name\" : \"mainDictView\",\n          \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n          \"uuid\" : \"BA42E2C9-3247-4A52-8870-8D1744178E83\",\n          \"enabled\" : true,\n          \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n          \"flex\" : \"\"\n        },\n        \"frame\" : \"{{291, 82}, {773, 960}}\",\n        \"selected\" : false,\n        \"nodes\" : [\n          {\n            \"class\" : \"WebView\",\n            \"attributes\" : {\n              \"name\" : \"webview1\",\n              \"uuid\" : \"4339937C-C5F4-4043-BCD7-6F63249C7AAD\",\n              \"enabled\" : true,\n              \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"flex\" : \"WH\"\n            },\n            \"frame\" : \"{{0, 52}, {773, 924}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"Button\",\n            \"attributes\" : {\n              \"font_size\" : 15,\n              \"enabled\" : true,\n              \"flex\" : \"\",\n              \"font_bold\" : false,\n              \"name\" : \"button1\",\n              \"title\" : \"Close\",\n              \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"action\" : \"closeDictView\",\n              \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"uuid\" : \"58112768-722A-4476-87A7-94FB7F5C7B32\"\n            },\n            \"frame\" : \"{{0, 15}, {69, 37}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          }\n        ]\n      },\n      {\n        \"class\" : \"Button\",\n        \"attributes\" : {\n          \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n          \"border_color\" : \"RGBA(0.285714,0.285714,0.285714,1.000000)\",\n          \"font_size\" : 15,\n          \"title\" : \"Save\",\n          \"enabled\" : true,\n          \"flex\" : \"\",\n          \"action\" : \"save\",\n          \"font_bold\" : false,\n          \"name\" : \"button6\",\n          \"border_width\" : 1,\n          \"uuid\" : \"76247EF5-CFBC-49EC-9C68-EF442799D4CC\",\n          \"corner_radius\" : 11\n        },\n        \"frame\" : \"{{128, 15}, {65, 37}}\",\n        \"selected\" : false,\n        \"nodes\" : [\n\n        ]\n      },\n      {\n        \"class\" : \"Button\",\n        \"attributes\" : {\n          \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n          \"border_color\" : \"RGBA(0.285714,0.285714,0.285714,1.000000)\",\n          \"font_size\" : 15,\n          \"title\" : \"Translate\",\n          \"enabled\" : true,\n          \"flex\" : \"\",\n          \"action\" : \"translate\",\n          \"font_bold\" : false,\n          \"name\" : \"searchBtn\",\n          \"corner_radius\" : 11,\n          \"uuid\" : \"AB84DFCB-813B-4FA9-9D45-4F340A8ACB60\",\n          \"border_width\" : 1\n        },\n        \"frame\" : \"{{192, 15}, {82, 37}}\",\n        \"selected\" : false,\n        \"nodes\" : [\n\n        ]\n      },\n      {\n        \"class\" : \"Button\",\n        \"attributes\" : {\n          \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n          \"border_color\" : \"RGBA(0.285714,0.285714,0.285714,1.000000)\",\n          \"font_size\" : 15,\n          \"title\" : \"FullRep\",\n          \"enabled\" : true,\n          \"flex\" : \"\",\n          \"action\" : \"fullRep\",\n          \"font_bold\" : false,\n          \"name\" : \"button1\",\n          \"border_width\" : 1,\n          \"uuid\" : \"F0705140-19B0-43FB-A1FC-1B9FACB70AB0\",\n          \"corner_radius\" : 11\n        },\n        \"frame\" : \"{{273, 15}, {82, 37}}\",\n        \"selected\" : false,\n        \"nodes\" : [\n\n        ]\n      },\n      {\n        \"class\" : \"Button\",\n        \"attributes\" : {\n          \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n          \"border_color\" : \"RGBA(0.285714,0.285714,0.285714,1.000000)\",\n          \"font_size\" : 15,\n          \"title\" : \"Dict\",\n          \"enabled\" : true,\n          \"flex\" : \"\",\n          \"action\" : \"dictionary\",\n          \"font_bold\" : false,\n          \"name\" : \"button7\",\n          \"border_width\" : 1,\n          \"uuid\" : \"7E50095D-B8F4-475E-A615-B4F7BD1D20B0\",\n          \"corner_radius\" : 11\n        },\n        \"frame\" : \"{{354, 15}, {80, 37}}\",\n        \"selected\" : false,\n        \"nodes\" : [\n\n        ]\n      },\n      {\n        \"class\" : \"TextView\",\n        \"attributes\" : {\n          \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n          \"alignment\" : \"left\",\n          \"border_color\" : \"RGBA(0.142857,0.142857,0.142857,1.000000)\",\n          \"font_size\" : 17,\n          \"enabled\" : true,\n          \"flex\" : \"\",\n          \"autosave_enabled\" : false,\n          \"text_color\" : \"RGBA(0.000000,0.478431,1.000000,1.000000)\",\n          \"name\" : \"textview2\",\n          \"border_width\" : 1,\n          \"editable\" : true,\n          \"uuid\" : \"210854EA-F003-4475-931C-2CBCF0626D06\"\n        },\n        \"frame\" : \"{{440, 15}, {188, 37}}\",\n        \"selected\" : false,\n        \"nodes\" : [\n\n        ]\n      },\n      {\n        \"class\" : \"Button\",\n        \"attributes\" : {\n          \"font_size\" : 15,\n          \"enabled\" : true,\n          \"flex\" : \"\",\n          \"font_bold\" : false,\n          \"name\" : \"button9\",\n          \"title\" : \"x\",\n          \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n          \"action\" : \"clearSearch\",\n          \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n          \"uuid\" : \"10FB5460-494F-4282-AE2B-C9936059AF00\"\n        },\n        \"frame\" : \"{{630, 15}, {30, 37}}\",\n        \"selected\" : false,\n        \"nodes\" : [\n\n        ]\n      },\n      {\n        \"class\" : \"View\",\n        \"attributes\" : {\n          \"enabled\" : true,\n          \"flex\" : \"WH\",\n          \"name\" : \"view1\",\n          \"corner_radius\" : 0,\n          \"border_width\" : 0,\n          \"border_color\" : \"RGBA(0.500000,0.500000,0.500000,1.000000)\",\n          \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n          \"uuid\" : \"3A06E968-2FF4-41CE-821D-EF0BFFC5E90A\"\n        },\n        \"frame\" : \"{{192, 483}, {768, 960}}\",\n        \"selected\" : true,\n        \"nodes\" : [\n          {\n            \"class\" : \"Label\",\n            \"attributes\" : {\n              \"font_size\" : 21,\n              \"enabled\" : true,\n              \"text\" : \"Open File\",\n              \"flex\" : \"\",\n              \"name\" : \"label1\",\n              \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"text_color\" : \"RGBA(0.857143,0.857143,0.857143,1.000000)\",\n              \"alignment\" : \"center\",\n              \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"uuid\" : \"D9B3CEAD-5658-498B-8762-00542E67BF40\"\n            },\n            \"frame\" : \"{{0, 48}, {440, 31}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"Label\",\n            \"attributes\" : {\n              \"font_size\" : 21,\n              \"enabled\" : true,\n              \"text\" : \"Main Menu\",\n              \"flex\" : \"\",\n              \"name\" : \"label5\",\n              \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"text_color\" : \"RGBA(0.857143,0.857143,0.857143,1.000000)\",\n              \"alignment\" : \"center\",\n              \"background_color\" : \"RGBA(0.285714,0.285714,0.285714,1.000000)\",\n              \"uuid\" : \"92E06CAC-42C8-47C9-AA09-F7C3763B5AC0\"\n            },\n            \"frame\" : \"{{0, 23}, {768, 25}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"Button\",\n            \"attributes\" : {\n              \"font_size\" : 21,\n              \"enabled\" : true,\n              \"flex\" : \"\",\n              \"font_bold\" : false,\n              \"name\" : \"button2\",\n              \"title\" : \"x\",\n              \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"action\" : \"closeMenu\",\n              \"background_color\" : \"RGBA(0.142857,0.142857,0.142857,1.000000)\",\n              \"uuid\" : \"58AB4F3E-C7F7-4226-BDF1-6BAE23817D6A\"\n            },\n            \"frame\" : \"{{0, 23}, {70, 56}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"Label\",\n            \"attributes\" : {\n              \"font_size\" : 21,\n              \"enabled\" : true,\n              \"text\" : \"Export Translation Dictionary\",\n              \"flex\" : \"\",\n              \"name\" : \"label6\",\n              \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"text_color\" : \"RGBA(0.857143,0.857143,0.857143,1.000000)\",\n              \"alignment\" : \"center\",\n              \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"uuid\" : \"66CDB9B7-43EF-4DBB-AF76-3877D43C1E31\"\n            },\n            \"frame\" : \"{{439, 48}, {329, 31}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"TextField\",\n            \"attributes\" : {\n              \"background_color\" : \"RGBA(0.142857,0.142857,0.142857,1.000000)\",\n              \"alignment\" : \"left\",\n              \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"font_size\" : 17,\n              \"enabled\" : true,\n              \"flex\" : \"\",\n              \"autosave_enabled\" : true,\n              \"text\" : \"Dictionary\\/exportTranslationDictionary.txt\",\n              \"text_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"name\" : \"textfield2\",\n              \"border_style\" : 3,\n              \"uuid\" : \"A09FA24B-C049-4CA4-991E-5768BEDF6396\"\n            },\n            \"frame\" : \"{{448, 87}, {314, 46}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"Button\",\n            \"attributes\" : {\n              \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"border_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"font_size\" : 15,\n              \"title\" : \"Export\",\n              \"enabled\" : true,\n              \"flex\" : \"\",\n              \"action\" : \"exportAction\",\n              \"font_bold\" : false,\n              \"name\" : \"button3\",\n              \"border_width\" : 1,\n              \"uuid\" : \"BE09F7D2-6FF6-4378-9A96-5B9CF4A77E47\",\n              \"corner_radius\" : 11\n            },\n            \"frame\" : \"{{448, 141}, {314, 43}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"TableView\",\n            \"attributes\" : {\n              \"background_color\" : \"RGBA(1.000000,1.000000,1.000000,1.000000)\",\n              \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"data_source_number_of_lines\" : 1,\n              \"enabled\" : true,\n              \"tint_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"flex\" : \"WH\",\n              \"row_height\" : 23,\n              \"data_source_items\" : \"\",\n              \"data_source_delete_enabled\" : true,\n              \"data_source_action\" : \"openFile\",\n              \"name\" : \"tableview1\",\n              \"uuid\" : \"7C524666-0F10-40ED-9353-60673C683C79\",\n              \"data_source_font_size\" : 12\n            },\n            \"frame\" : \"{{0, 378}, {440, 582}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"TextField\",\n            \"attributes\" : {\n              \"background_color\" : \"RGBA(0.142857,0.142857,0.142857,1.000000)\",\n              \"alignment\" : \"left\",\n              \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"font_size\" : 17,\n              \"enabled\" : true,\n              \"flex\" : \"\",\n              \"autosave_enabled\" : true,\n              \"text\" : \"Dictionary\\/\",\n              \"text_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"name\" : \"textfield1\",\n              \"border_style\" : 3,\n              \"uuid\" : \"B3726672-7091-4984-A42A-534110F46BBD\"\n            },\n            \"frame\" : \"{{6, 87}, {434, 46}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"TableView\",\n            \"attributes\" : {\n              \"background_color\" : \"RGBA(1.000000,1.000000,1.000000,1.000000)\",\n              \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"data_source_number_of_lines\" : 1,\n              \"enabled\" : true,\n              \"tint_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"flex\" : \"\",\n              \"row_height\" : 23,\n              \"data_source_items\" : \"\",\n              \"data_source_delete_enabled\" : true,\n              \"data_source_action\" : \"openDir\",\n              \"name\" : \"tableview2\",\n              \"uuid\" : \"3092BB82-2C3D-4C9B-95EC-200E9F45C85F\",\n              \"data_source_font_size\" : 16\n            },\n            \"frame\" : \"{{0, 162}, {440, 194}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"Label\",\n            \"attributes\" : {\n              \"font_size\" : 15,\n              \"enabled\" : true,\n              \"text\" : \"Files\",\n              \"flex\" : \"\",\n              \"name\" : \"label2\",\n              \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"text_color\" : \"RGBA(0.857143,0.857143,0.857143,1.000000)\",\n              \"alignment\" : \"center\",\n              \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"uuid\" : \"E013F9A3-6A98-42AB-80EA-B691955C2989\"\n            },\n            \"frame\" : \"{{0, 355}, {440, 23}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"Label\",\n            \"attributes\" : {\n              \"font_size\" : 15,\n              \"enabled\" : true,\n              \"text\" : \"Folders\",\n              \"flex\" : \"\",\n              \"name\" : \"label3\",\n              \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"text_color\" : \"RGBA(0.857143,0.857143,0.857143,1.000000)\",\n              \"alignment\" : \"center\",\n              \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"uuid\" : \"89403B2B-78A6-46FB-A989-34068BE5AC1C\"\n            },\n            \"frame\" : \"{{0, 141}, {440, 23}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"TextField\",\n            \"attributes\" : {\n              \"background_color\" : \"RGBA(0.142857,0.142857,0.142857,1.000000)\",\n              \"alignment\" : \"left\",\n              \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"font_size\" : 17,\n              \"enabled\" : true,\n              \"flex\" : \"\",\n              \"autosave_enabled\" : true,\n              \"text\" : \"Dictionary\\/clearText.txt\",\n              \"text_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"name\" : \"textfield3\",\n              \"border_style\" : 3,\n              \"uuid\" : \"6785DB56-5400-479A-81B0-19E2E51E6C1F\"\n            },\n            \"frame\" : \"{{448, 247}, {314, 46}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"Button\",\n            \"attributes\" : {\n              \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"border_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"font_size\" : 15,\n              \"title\" : \"Replace in folder by regExp from file\",\n              \"enabled\" : true,\n              \"flex\" : \"\",\n              \"action\" : \"replaceRegExpFile\",\n              \"font_bold\" : false,\n              \"name\" : \"button1\",\n              \"corner_radius\" : 11,\n              \"uuid\" : \"D6BEBAD4-2953-488F-B14F-8EF89D3D600A\",\n              \"border_width\" : 1\n            },\n            \"frame\" : \"{{448, 301}, {314, 43}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"Label\",\n            \"attributes\" : {\n              \"font_size\" : 12,\n              \"enabled\" : true,\n              \"text\" : \"Replace and search in all files in directory by regExp \",\n              \"flex\" : \"\",\n              \"name\" : \"label4\",\n              \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"text_color\" : \"RGBA(0.857143,0.857143,0.857143,1.000000)\",\n              \"alignment\" : \"center\",\n              \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"uuid\" : \"B4041CD0-B739-4584-BD8E-AD2D6E0897CE\"\n            },\n            \"frame\" : \"{{448, 201}, {314, 20}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"Label\",\n            \"attributes\" : {\n              \"font_size\" : 12,\n              \"enabled\" : true,\n              \"text\" : \"from text file or from text field\",\n              \"flex\" : \"\",\n              \"name\" : \"label7\",\n              \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"text_color\" : \"RGBA(0.857143,0.857143,0.857143,1.000000)\",\n              \"alignment\" : \"center\",\n              \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"uuid\" : \"4FD361A4-6DFF-4FE2-BA73-6CFCD0F0F499\"\n            },\n            \"frame\" : \"{{448, 219}, {314, 20}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"Button\",\n            \"attributes\" : {\n              \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"border_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"font_size\" : 15,\n              \"title\" : \"Replace in folder by regExp from text field\",\n              \"enabled\" : true,\n              \"flex\" : \"\",\n              \"action\" : \"replaceRegExp\",\n              \"font_bold\" : false,\n              \"name\" : \"button4\",\n              \"corner_radius\" : 11,\n              \"uuid\" : \"7880412A-82E0-44F7-B775-0FEB2B39861B\",\n              \"border_width\" : 1\n            },\n            \"frame\" : \"{{448, 458}, {314, 43}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"TextField\",\n            \"attributes\" : {\n              \"background_color\" : \"RGBA(0.142857,0.142857,0.142857,1.000000)\",\n              \"alignment\" : \"left\",\n              \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"font_size\" : 17,\n              \"enabled\" : true,\n              \"flex\" : \"\",\n              \"autosave_enabled\" : true,\n              \"text\" : \"\",\n              \"text_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"name\" : \"textfield4\",\n              \"border_style\" : 3,\n              \"uuid\" : \"9EF0FE5F-28A9-4C66-96E8-2F13D5D327F5\"\n            },\n            \"frame\" : \"{{448, 352}, {314, 46}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"TextField\",\n            \"attributes\" : {\n              \"background_color\" : \"RGBA(0.142857,0.142857,0.142857,1.000000)\",\n              \"alignment\" : \"left\",\n              \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"font_size\" : 17,\n              \"enabled\" : true,\n              \"flex\" : \"\",\n              \"autosave_enabled\" : true,\n              \"text\" : \"\",\n              \"text_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"name\" : \"textfield5\",\n              \"border_style\" : 3,\n              \"uuid\" : \"4FABE866-9AF9-40F2-A482-E22ACA709C18\"\n            },\n            \"frame\" : \"{{448, 404}, {314, 46}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"Button\",\n            \"attributes\" : {\n              \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"border_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"font_size\" : 15,\n              \"title\" : \"Replace in open file\",\n              \"enabled\" : true,\n              \"flex\" : \"\",\n              \"action\" : \"replaceRegExpText\",\n              \"font_bold\" : false,\n              \"name\" : \"button5\",\n              \"corner_radius\" : 11,\n              \"uuid\" : \"FF5600D8-7367-41B5-8E8A-03E43F787AF9\",\n              \"border_width\" : 1\n            },\n            \"frame\" : \"{{448, 509}, {314, 43}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"Button\",\n            \"attributes\" : {\n              \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"border_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"font_size\" : 15,\n              \"title\" : \"Search in DHARMABOOK\",\n              \"enabled\" : true,\n              \"flex\" : \"\",\n              \"action\" : \"searchInDharmabook\",\n              \"font_bold\" : false,\n              \"name\" : \"button6\",\n              \"corner_radius\" : 11,\n              \"uuid\" : \"DA3EA42D-07DC-4A1F-93BA-25BF130A28C9\",\n              \"border_width\" : 1\n            },\n            \"frame\" : \"{{448, 614}, {314, 43}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"Button\",\n            \"attributes\" : {\n              \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"border_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"font_size\" : 15,\n              \"title\" : \"Search in open file\",\n              \"enabled\" : true,\n              \"flex\" : \"\",\n              \"action\" : \"searchInFile\",\n              \"font_bold\" : false,\n              \"name\" : \"button7\",\n              \"border_width\" : 1,\n              \"uuid\" : \"14CCB182-AAC6-4B6B-97C9-9A8B850A9B1E\",\n              \"corner_radius\" : 11\n            },\n            \"frame\" : \"{{448, 767}, {314, 43}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"TextField\",\n            \"attributes\" : {\n              \"background_color\" : \"RGBA(0.142857,0.142857,0.142857,1.000000)\",\n              \"alignment\" : \"left\",\n              \"border_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"font_size\" : 17,\n              \"enabled\" : true,\n              \"flex\" : \"\",\n              \"autosave_enabled\" : true,\n              \"text\" : \"\",\n              \"text_color\" : \"RGBA(0.000000,0.000000,0.000000,1.000000)\",\n              \"name\" : \"textfield6\",\n              \"border_style\" : 3,\n              \"uuid\" : \"A36CD691-F8F1-4985-8F91-9F654236FBDB\"\n            },\n            \"frame\" : \"{{448, 560}, {314, 46}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"Button\",\n            \"attributes\" : {\n              \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"border_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"font_size\" : 15,\n              \"title\" : \"copyText\",\n              \"enabled\" : true,\n              \"flex\" : \"\",\n              \"action\" : \"copyText\",\n              \"font_bold\" : false,\n              \"name\" : \"button8\",\n              \"border_width\" : 1,\n              \"uuid\" : \"1FC890B1-758E-4E78-B997-A67BB2BF9689\",\n              \"corner_radius\" : 11\n            },\n            \"frame\" : \"{{448, 869}, {314, 43}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"Button\",\n            \"attributes\" : {\n              \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"frame\" : \"{{344, 464}, {80, 32}}\",\n              \"border_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"font_size\" : 15,\n              \"title\" : \"Export text by ID\",\n              \"enabled\" : true,\n              \"flex\" : \"\",\n              \"action\" : \"exportTextByID\",\n              \"font_bold\" : false,\n              \"name\" : \"button10\",\n              \"border_width\" : 1,\n              \"uuid\" : \"C44080CD-D4EE-4DA6-906C-B9DFF712DD76\",\n              \"corner_radius\" : 11,\n              \"class\" : \"Button\"\n            },\n            \"frame\" : \"{{448, 716}, {314, 43}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"Button\",\n            \"attributes\" : {\n              \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"frame\" : \"{{344, 464}, {80, 32}}\",\n              \"border_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"font_size\" : 15,\n              \"title\" : \"Search in DHARMABOOK full text\",\n              \"enabled\" : true,\n              \"flex\" : \"\",\n              \"action\" : \"searchInDharmabookFullText\",\n              \"font_bold\" : false,\n              \"name\" : \"button11\",\n              \"corner_radius\" : 11,\n              \"uuid\" : \"52A2694E-518F-45C1-B35C-5863258EC4D0\",\n              \"border_width\" : 1,\n              \"class\" : \"Button\"\n            },\n            \"frame\" : \"{{448, 665}, {314, 43}}\",\n            \"selected\" : false,\n            \"nodes\" : [\n\n            ]\n          },\n          {\n            \"class\" : \"Button\",\n            \"attributes\" : {\n              \"background_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"frame\" : \"{{344, 464}, {80, 32}}\",\n              \"border_color\" : \"RGBA(0.214286,0.214286,0.214286,1.000000)\",\n              \"font_size\" : 15,\n              \"title\" : \"Search in text\",\n              \"enabled\" : true,\n              \"flex\" : \"\",\n              \"action\" : \"searchInFileText\",\n              \"font_bold\" : false,\n              \"name\" : \"button9\",\n              \"border_width\" : 1,\n              \"uuid\" : \"A4717F3A-A8D4-4480-9AC8-CE48A59BBCC7\",\n              \"corner_radius\" : 11,\n              \"class\" : \"Button\"\n            },\n            \"frame\" : \"{{448, 818}, {314, 43}}\",\n            \"selected\" : true,\n            \"nodes\" : [\n\n            ]\n          }\n        ]\n      }\n    ]\n  }\n]", "script": "#coding: utf-8\nimport workflow\nimport ui\nimport console\nimport pickle\nimport re\nimport io\nimport time\nimport xml.parsers.expat\nimport sys\nimport os\nimport copy\nimport urlparse\nimport dialogs\nfrom array import *\n\npathMain=os.getcwd()\npathMain=re.sub(r'Library.*','',pathMain)\npathMain+='Documents/'\npathDir=''\npathSave=pathMain+'Dictionary/'\ntextFile=list()\ndict=list()\npageSize=100\n#pageStyle='practice.html'\npageStyle='page.html'\n#pageStyle='practice_read.html'\nreadMode=1\n\naction_in = workflow.get_input()\n\n\n#enum\nREAD=1 #\u0440\u0435\u0436\u0438\u043c \u0447\u0442\u0435\u043d\u0438\u044f \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0441\u043b\u043e\u0433\u043e\u0432 \u043f\u043e \u043f\u0430\u043c\u044f\u0442\u0438\nALL=1\nAUTO=0\nEMPTY=-1\nEDIT=1\nLINK=0\nCHINK_SIZE=1024*40\nVALUE_SIZE=1024*20\nMB=1024*1000\nSTART_MARK='@_dict_/'\nEND_MARK='@_end_/'\nEMPTY_MARK='_*_'\nMARK=':|:'\nJS=0\nUSER=1\nTRANSLATE=1\nDICT_REPORT_TEXT=2\nDICT_REPORT_USER=3\nFULL_REPORT=4\n\nINDEX_RESIZE=4 #\u0432\u043e \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0431\u0443\u0434\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\nFILE_RESIZE=2 #\u0432\u043e \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0431\u0443\u0434\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430\nFILE_RESIZE_DELTA=100 #\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043a \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044e \u0432 FILE_RESIZE \u0440\u0430\u0437.(\u043d\u0443\u0436\u0435\u043d \u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0444\u0430\u0439\u043b)\nPOOL_SIZE=16384  \n\nMEMORY_LOCATION=0\nMMAP_LOCATION=1\n\nglobal Pref\nPref=list()\t\t #preferences\n\nclass GVector():\n\t#protected\n\tdataPath=''\n  #MemoryFile\n\tdataMFile=''\n  #GVector *parent\n  #public\n\tindex=[]\t\t\t\t\t\t\t\t\t\t#\u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 GVector\n\tinnerData=array('L')\t\t\t #\u043c\u0430\u0441\u0441\u0438\u0432 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0439 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0430\u0439\u043b\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435\n  #\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435\n\trecordCount=0  \t  \t\t\t  #\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u0435\n\trecordArraySize=0\t\t\t\t  #\u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0443\u0447\u0435\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u0435\u0439\n\tdataSize=0  \t \t  \t\t\t\t  #\u0440\u0430\u0437\u043c\u0435\u0440 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0439 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438\n\tpoolSize=0  \t \t  \t\t\t\t  #\u043e\u0431\u0449\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u0430\n\tlockFlag=0\t\t\t\t\t\t\t\t  #\u0444\u043b\u0430\u0433 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0447\u0442\u0435\u043d\u0438\u044f-\u0437\u0430\u043f\u0438\u0441\u0438\n\tindexOffset=0\t \t  \t\t\t  #\u0430\u0434\u0440\u0435\u0441 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0437\u0430\u043f\u0438\u0441\u0435\u0439. \u043e\u0442\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0444\u0430\u0439\u043b\u0430\n\tvectorID=0\n\tdataLocation=0\n\t\n\t\n\tdef __init__(self):\n\t\tpass\n\t\n\tdef openData(self,dataPath):\n\t\tself.dataPath=dataPath\n\t\ttry:\n\t\t\topen(dataPath, 'r')\n\t\texcept:\n\t\t\tf=open(dataPath, 'w')\n\t\t\tf.close()\n\t\t\n\t\tc=os.stat(dataPath)\n\t\tself.dataMFile=os.open(dataPath,os.O_RDWR)\n\t\tself.poolSize=c.st_size\n\t\tprint 'poolSize={:,}'.format(self.poolSize)\n\t\tself.init()\n\t\t\t\n\tdef init(self):\n\t\tself.dataLocation=MMAP_LOCATION \t \t\t \t  #\u0444\u043b\u0430\u0433 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439  \u0438\u043b\u0438  \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438\n\t\t#cout<<\" dataMFile->size()={}\".format(dataMFile->size()\n\t\t#\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0444\u0430\u0439\u043b \u0444\u0430\u0439\u043b\u043e\u043c GVector\n\t\tif(self.poolSize<POOL_SIZE):\t\t\t\t\t\t\t#\u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b GVector \t \t\n\t\t\tprint 'new vector'\n\t\t\tfor i in range(16): self.innerData.append(0)\n\t\t\tself.innerData[0]=0xfffffffa\t\t   #\u043c\u0430\u0440\u043a\u0435\u0440 \u043d\u0430\u043b\u0438\u0447\u0438\u044f GVector\n\t\t\tself.recordArraySize=1024\n\t\t\tself.recordCount=0\n\t\t\tself.dataSize=(self.recordArraySize)*4+64\n\t\t\tself.indexOffset=64\n\t\t\tself.vectorID=0xffffffff\n\t\t\tself.lockFlag=0\n\t\t\tindexName=\"name:|:data\"\n\t\t\t#index=(uint*)(data+*indexOffset)  #\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430\n\t\t\tself.push_back(indexName) \t \t \t \t \t\t  \t#\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0438\u043c\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439\n\t\t\tself.recordCount=1\n\t\t\tself.setSpace(POOL_SIZE)\n\t\t\tself.saveData()\t\t\t\n\t\telse:\n\t\t\t#\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0444\u0430\u0439\u043b \u0444\u0430\u0439\u043b\u043e\u043c GVector\n\t\t\tself.readData()\n\t\t\tif(self.innerData[0]!=0xfffffffa):\n\t\t\t\tprint \"no valid GVector file \"+ self.dataPath\n\t\t\t\treturn\n\t\t\t\n\tdef saveData(self):\t\t\t\n\t\t\tself.innerData[1]=self.poolSize\t\t\t\t   #\u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u0430\n\t\t\tself.innerData[2]=self.recordCount  \t\t\t #\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u0435\n\t\t\tself.innerData[3]=self.recordArraySize\t\t#\u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0443\u0447\u0435\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u0435\u0439\n\t\t\tself.innerData[4]=self.dataSize \t \t\t\t   #\u0440\u0430\u0437\u043c\u0435\u0440 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0439 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438\n\t\t\tself.innerData[5]=self.lockFlag\t\t\t\t   #\u0444\u043b\u0430\u0433 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0447\u0442\u0435\u043d\u0438\u044f-\u0437\u0430\u043f\u0438\u0441\u0438\n\t\t\tself.innerData[6]=self.indexOffset\t \t \t\t\t#\u0430\u0434\u0440\u0435\u0441 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0437\u0430\u043f\u0438\u0441\u0435\u0439. \u043e\u0442\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0444\u0430\u0439\u043b\u0430\n\t\t\tself.innerData[7]=self.vectorID \t \t\t\t   #\u0438\u043d\u0434\u0435\u0445 \u0437\u0430\u043f\u0438\u0441\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 GVector \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u0435\n\t\t\t\n\t\t\tstr=array.tostring(self.innerData)\n\t\t\tos.lseek(self.dataMFile,0,os.SEEK_SET)\n\t\t\tos.write(self.dataMFile,str)\t\n\t\t\n\tdef readData(self):\n\t\tos.lseek(self.dataMFile,0,os.SEEK_SET)\n\t\tstr=os.read(self.dataMFile,64)\n\t\tself.innerData=array('L')\n\t\tself.innerData.fromstring(str)\n\t\t#print self.innerData\n\t\tself.poolSize=self.innerData[1]\t\t\t\t   #\u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u0430\n\t\tself.recordCount=self.innerData[2]  \t\t\t #\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u0435\n\t\tself.recordArraySize=self.innerData[3]\t\t#\u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0443\u0447\u0435\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u0435\u0439\n\t\tself.dataSize=self.innerData[4] \t \t\t\t   #\u0440\u0430\u0437\u043c\u0435\u0440 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0439 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438\n\t\tself.lockFlag=self.innerData[5]\t\t\t\t   #\u0444\u043b\u0430\u0433 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0447\u0442\u0435\u043d\u0438\u044f-\u0437\u0430\u043f\u0438\u0441\u0438\n\t\tself.indexOffset=self.innerData[6]\t \t \t\t\t#\u0430\u0434\u0440\u0435\u0441 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0437\u0430\u043f\u0438\u0441\u0435\u0439. \u043e\u0442\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0444\u0430\u0439\u043b\u0430\n\t\tself.vectorID=self.innerData[7] \t \t\t\t   #\u0438\u043d\u0434\u0435\u0445 \u0437\u0430\u043f\u0438\u0441\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 GVector \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u0435\n\t\t\n\tdef mPut(self,offset,str):\n\t\tos.lseek(self.dataMFile,offset,os.SEEK_SET)\n\t\tos.write(self.dataMFile,str)\n\t\t\n\tdef mPutInt(self,offset,value):\n\t\tt=array('L')\n\t\tt.append(value)\n\t\tstr=t.tostring()\n\t\tos.lseek(self.dataMFile,offset,os.SEEK_SET)\n\t\tos.write(self.dataMFile,str)\n\t\t\n\n\tdef mGet(self,offset,size):\n\t\tos.lseek(self.dataMFile,offset,os.SEEK_SET)\n\t\treturn os.read(self.dataMFile,size)\n\t\n\tdef mGetInt(self,offset):\n\t\t#print 'of {}'.format(offset)\n\t\tt=array('L')\n\t\tos.lseek(self.dataMFile,offset,os.SEEK_SET)\n\t\tstr=os.read(self.dataMFile,4)\n\t\tt.fromstring(str)\n\t\treturn t[0]\n\t\n\tdef setSpace(self,space):\n\t\tif(self.vectorID==0xffffffff):\n\t\t\tif(self.dataLocation==MEMORY_LOCATION):\n\t\t\t\tprint 1\n\t\t\telse:\n\t\t\t\tos.ftruncate(self.dataMFile,space)\n\t\t\t\tself.poolSize=space\n\t\telse:\n\t\t\tprint 3\t\t\t\t\t\t\t\n\t\t\t\n\tdef close(self):\n\t\tself.saveData()\n\t\tos.close(self.dataMFile)\t\t\n\t\t\n\t\t\t\n\t#\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 GVector\n\tdef push_back(self,str):\n\t\tsize=len(str)\t\t\n\t\t#\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0438 \u043c\u0435\u0441\u0442\u0430 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\n\t\tif(self.recordArraySize<self.recordCount+1):\n\t\t\tself.recordArraySize=self.recordCount+1\n\t\t\tprint \"resize GVector index recordArraySize={:,} recordCount={} self.poolSize={:,}\".format(self.recordArraySize,self.recordCount,self.poolSize)\n\t\t\t#\u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u043a\u0430\u043a \u043d\u043e\u0432\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c\n\t\t\t#\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0438 \u043c\u0435\u0441\u0442\u0430 \u0432 \u043f\u0443\u043b\u0435\n\t\t\tif(self.recordArraySize*INDEX_RESIZE+self.dataSize>self.poolSize):\n\t\t\t\tnewSize=self.poolSize+(self.recordArraySize+1)*INDEX_RESIZE\n\t\t\t\tprint 'start resize pool for index. New size={:,}'.format(newSize)\n\t\t\t\t#print \"vectorID_={}\".format(self.vectorID\n\t\t\t\tself.setSpace(newSize)\t\n\t\t\t#\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0438\u043d\u0434\u0435\u0445\n\t\t\ts=self.mGet(self.indexOffset,(self.recordArraySize-1)*4)\n\t\t\tself.mPut(self.dataSize,s)\n\t\t\tself.recordArraySize=self.recordArraySize*INDEX_RESIZE\n\t\t\tself.indexOffset=self.dataSize\n\t\t\tself.dataSize+=self.recordArraySize*4\n\t\t#cout<<\" poolSize1={}\".format(self.poolSize<<\" dataSize={}\".format(self.dataSize\n\t\t#\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0438 \u043c\u0435\u0441\u0442\u0430 \u0432 \u043f\u0443\u043b\u0435 \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438\n\t\tif(self.dataSize+size+256>self.poolSize):\n\t\t\tnewSize=(self.poolSize)*FILE_RESIZE+size*FILE_RESIZE_DELTA\n\t\t\tif(newSize<self.dataSize+size+256):\n\t\t\t\tnewSize=int((self.dataSize+size+256)*1.5)\n\t\t\tprint \"@resize GVector file new poolSize={:,} bytes c3\".format(newSize)\n\t\t\tself.setSpace(newSize)\t\n \t\t#\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044be\n\t\tself.mPutInt(self.dataSize,size) \t \t\t\t\t  #\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0434\u043b\u0438\u043d\u043d\u0443 \u0437\u0430\u043f\u0438\u0441\u0438\n\t\tself.mPut(self.dataSize+4,str)\t\t\t\t\t   #\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u044c\n\t\t#\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0438\u043d\u0434\u0435\u043a\u0441\n\t\tself.mPutInt(self.indexOffset+self.recordCount*4,self.dataSize)\t\t\n\t\tself.recordCount=self.recordCount+1\n\t\tself.dataSize=self.dataSize+size+4\n\t\t\n\t\tself.saveData()\t\t\n\t\t#print \"new data\"\n\t\t#print \"innerData={}\".format(self.innerData)\n\t\t#print \"poolSize={}\".format(self.poolSize)\n\t\t#print \"recordCount={}\".format(self.recordCount)\n\t\t#print \"recordArraySize={}\".format(self.recordArraySize)\n\t\t#print \"dataSize={}\".format(self.dataSize)\n\t\t#print \"indexOffset={}\".format(self.indexOffset)\n\t\t\n\tdef resize(self,size,recordSize):\n\t\tsize+=1  #\u043f\u043b\u044e\u0441 \u0438\u043c\u0435\u043d\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c\n\t\tif(size>self.recordCount):\n\t\t\tif(size>self.recordArraySize):\n\t\t\t\tself.recordArraySize=size\n\t\t\t\tif(self.recordArraySize+self.dataSize>self.poolSize):\n\t\t\t\t\tnewSize=self.poolSize+(self.recordArraySize+1)*INDEX_RESIZE\n\t\t\t\t\tself.setSpace(newSize)\n\t\t\t\t#\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0438\u043d\u0434\u0435\u0445\n\t\t\t\tstr=self.mGet(self.indexOffset,(self.recordArraySize-1)*4)\n\t\t\t\tself.mPut(self.dataSize,str)\n\t\t\t\tself.recordArraySize=self.recordArraySize*INDEX_RESIZE\n\t\t\t\tself.indexOffset=self.dataSize\n\t\t\t\tself.dataSize+=self.recordArraySize*4\n\t\t\tnewSize=size*(recordSize+4)+self.recordArraySize*4+64\t\n\t\t\tif(newSize>self.poolSize):\n\t\t\t\tself.setSpace(newSize)\n\t\t\t#\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0438\u043d\u0434\u0435\u043a\u0441 \u0437\u0430\u043f\u0438\u0441\u0438\n\t\t\tfor i in range(self.recordCount,size):\n\t\t\t\tself.mPutInt(self.indexOffset+i*4,0)\n\t\tself.recordCount=size\n\t\t\n\tdef putStr(self,indexRecord,str):\n\t\tindexRecord+=1  #\u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438\u043d\u0434\u0435\u043a\u0441 \u0438\u043c\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439\n\t\toffset=self.mGetInt(self.indexOffset+indexRecord*4)\n\t\t#print 'offset {}'.format(offset)\n\t\tif(offset==0): #\u0437\u0430\u043f\u0438\u0441\u044c \u0435\u0449\u0435 \u043d\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430\n\t\t\tsize=0\n\t\telse:\n\t\t\tsize=self.mGetInt(offset)\n\t\tif(len(str)>size):\n\t\t\tsize=len(str)\n\t\t\t#\u0443\u043a\u0430\u0437\u0430\u0432\u0430\u0435\u043c \u0447\u0442\u043e \u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e,\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0430 \u043d\u043e\u0432\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0438\u043d\u0434\u0435\u0445\n\t\t\tif(offset>0): \n\t\t\t\tself.mPutInt(offset,0)\n\t\t\t#\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0438 \u043c\u0435\u0441\u0442\u0430 \u0432 \u043f\u0443\u043b\u0435 \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438\n\t\t\tif(self.dataSize+size+256>self.poolSize):\n\t\t\t\tnewSize=(self.poolSize)*FILE_RESIZE+size*FILE_RESIZE_DELTA\n\t\t\t\tprint \"@resize GVector file new poolSize={:,} bytes c1\".format(newSize)\n\t\t\t\tself.setSpace(newSize)\t\n   \t\t#\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044be\n\t\t\tself.mPutInt(self.dataSize,size) \t \t #\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0434\u043b\u0438\u043d\u043d\u0443 \u0437\u0430\u043f\u0438\u0441\u0438\n\t\t\tself.mPut(self.dataSize+4,str)\t\t\t\t\t   #\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u044c\n\t\t\t#\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0438\u043d\u0434\u0435\u043a\u0441\n\t\t\tself.mPutInt(self.indexOffset+indexRecord*4,self.dataSize)\t\t\t\t\n\t\t\tself.dataSize=self.dataSize+size+4\t\t\t\n\t\telse:\n\t\t\t#\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044be\n\t\t\tsize=len(str)\n\t\t\tself.mPutInt(offset,size) \t \t\t\t\t  #\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0434\u043b\u0438\u043d\u043d\u0443 \u0437\u0430\u043f\u0438\u0441\u0438\n\t\t\tself.mPut(offset+4,str)\t\t\t\t\t    #\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u044c\n\t\tself.saveData()\t\n\t\t\n\tdef getStr(self,indexRecord):\n\t\tindexRecord+=1  #\u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438\u043d\u0434\u0435\u043a\u0441 \u0438\u043c\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439\n\t\tif(indexRecord>=self.recordCount):\n\t\t\treturn EMPTY\n\t\toffset=self.mGetInt(self.indexOffset+indexRecord*4)\n\t\t#print ' offset {}'.format(offset)\n\t\tsize=self.mGetInt(offset)\n\t\t#print ' size {}'.format(size)\n\t\tif(size+offset+4>self.dataSize):\n\t\t\tprint 'index={} offset={} size={} recordCount={}'.format(indexRecord,offset,size,self.recordCount)\n\t\t\tprint \"size out of range\"\n\t\t\treturn EMPTY\n\t\treturn self.mGet(offset+4,size)\t\t\n\n\tdef checkIndex(self,limit):\n\t\tprint 'check index'\n\t\tfor i in range(limit):\n\t\t\tt=self.mGetInt(self.indexOffset+i*4)\n\t\t\tprint t\n\t\t\td=self.mGetInt(t)\n\t\t\tprint '    d={}'.format(d)\n\t\t\t\n\tdef printStr(self,str):\n\t\tt=memoryview(str)\n\t\tg=t.tolist()\n\t\tg=g[:25]\n\t\tprint g\n\n'''\t\npData=pathSave+\"XML_DICT/_GVectorTest.txt\"\t\n#os.unlink(pData)\t\n\nv=GVector()\nv.openData(pData)\t\t\nprint 'start'\nst=v.getStr(996)\nprint st\n\n#v.checkIndex(10)\nsys.exit()\n\t\nfor i in range(1000):\n\t#print i\n\t#s='1234567890 wwwwwwwwwwwwwwwwwwwwwwwwwwwww 1234567890 www {}'.format(i)\n\t#v.push_back(s)\n\ts='1234567890 www {}'.format(i)\n\tv.putStr(i,s)\n\t\n\tst=v.getStr(i)\n\tif(st!=s):\n\t\tprint 'no data'\n\t\tprint i\n\t\tprint 'retutn str='\n\t\tv.printStr(st)\n\t\tprint st\n\t\tbreak\n\nprint 'done'\t\nsys.exit()\n'''\t\n\n\t\nclass dictBase ():\n\tkeyTib=''\n\tkeyList=list()\n\tdata=list()\n\thistory=list()\n\tvData=GVector()\n\tpImdex=''  #path to index file\n\tdictKey={}\n\tdictSize=0\n\tfileSize=0\n\tstep=0\n\tflagSave=0\n\temptyStr=''\n\temptyRec=EMPTY #dict of empty record index\n\tres=''\n\tinsert=0\n\tvalue=''\n\teditMode=LINK\n\tmainMode=TRANSLATE\n\tid=1\n\t\n\tdef __init__(self):\n\t\tpass\n\t\t\n\tdef openData(self,vData,pIndex):\n\t\tself.vData=vData\n\t\tself.pIndex=pIndex\n\t\t#t1=time.time()\n\t\ttry:\n\t\t\topen(pIndex, 'r')\n\t\texcept:\t\n\t\t\tf=open(pIndex, 'w')\n\t\t\tf.close()\n\t\t\n\t\tf=open(pIndex, 'r')\n\t\tself.keyList=f.readlines()\n\t\tf.close()\n\t\ti=0\n\t\tfor line in self.keyList:\n\t\t\tself.dictKey[line]=i\n\t\t\ti+=1\n\t\t#t2=time.time()\n\t\t#print 'time={}'.format(t2-t1)\n\n\t\tself.emptyStr=''.zfill(CHINK_SIZE)\n\t\tself.data.append('')\n\t\tself.data.append('')\n\t\tself.data.append('')\t\t\n\t\t\n\tdef close(self):\n\t\tself.vData.close()\n\t\tif(self.flagSave==1):\n\t\t\tf=open(pIndex, 'w')\n\t\t\tf.writelines(self.keyList)\n\t\t\tf.close()\t\n\t\n\tdef has_key(self,key):\n\t\tif(key in self.dictKey):\n\t\t\tstr=self.dictKey[key]\n\t\t\tc=int(str)\n\t\t\treturn c\n\t\telse:\n\t\t\treturn -1\n\t\t\t\n\tdef get(self,key):\n\t\tself.res=''\n\t\tif(len(self.keyList)==0):\n\t\t\tprint 'no data'\n\t\t\treturn self.res\n\t\ti=self.has_key(key+'\\n')\t\n\t\t#print i\n\t\tif(i>EMPTY):\n\t\t\tself.res=self.vData.getStr(i)\n\t\t\treturn self.res \n\t\treturn self.res\n\t\t\t\n\t\n\tdef put(self,key,value):\n\t\tif(self.step>1000):  #progress\n\t\t\tself.step=0\n\t\t\tprint '{} {}'.format(self.insert,len(self.keyList))\n\t\tself.step+=1\n\t\tself.insert+=1\n\t\t\n\t\ti=self.has_key(key+'\\n')\n\t\t#print 'has key={}'.format(i)\n\t\tif(i==EMPTY):\n\t\t\tself.flagSave=1\n\t\t\tself.dictKey[key+'\\n']=len(self.keyList)\n\t\t\tself.keyList.append(key+'\\n')\n\t\t\tself.vData.push_back(value)\n\t\telse:\n\t\t\tself.vData.putStr(i,value)\n\t\t\t\t\t\t\n\t\t\t\n\tdef add(self,key,value):\n\t\tself.get(key)\n\t\tstr=self.res\n\t\tif(len(str)):\n\t\t\tstr=str+END_MARK+value\n\t\telse:\n\t\t\tstr=key+':|:'+value\n\t\tself.put(key,str)\n\t\t\t\t\n\tdef push(self,key,value):\n\t\tself.get(key)\n\t\tstr=self.res\n\t\tif(len(str)):\n\t\t\tstr=value+END_MARK+str\n\t\telse:\n\t\t\tstr=key+':|:'+value\n\t\tself.put(key,str)\n\t\t\n\tdef rep(self,key,value,dName):\n\t\t'''\n\t\tself.get(key)\n\t\tstr=self.res\n\t\tif(len(str)):\n\t\t\tc=str.split(END_MARK)\n\t\t\tstr=''\n\t\t\tfor line in c:\n\t\t\t\tif(dName in line):\n\t\t\t\t\tcontinue\n\t\t\t\tstr+=line+END_MARK\n\t\t\tstr+=value\n\t\telse:\n\t\t\tstr=key+':|:'+value\n\t\tself.put(key,str)\n\t\t'''\n\t\t\n\tdef saveInd(self):\n\t\twith open(pIndex, 'w') as f:\n\t\t\tf.writelines(self.keyList)\n\t\t\t#print 'done save'\n\t\tself.insert=0\n\t\tself.step=0\n\t\n\tdef rem(self,key):\n\t\tkey_n=key+'\\n'\n\t\tif(key_n in self.dictKey):\n\t\t\tself.put(key,EMPTY_MARK)\n\t\t\t\n\tdef clear(self):\n\t\tf=open(pIndex, 'w')\n\t\tf.close()\n\t\tself.vData.resize(0,128)\n\t\tself.vData.saveData()\n\t\tself.keyList=list()\n\t\tself.dictKey={}\n\t\t\n\tdef normalisation(self):\n\t\tstep=0\n\t\tfor i in range(1,len(self.keyList)):\n\t\t\tif(step>=1000):\n\t\t\t\tprint i\n\t\t\t\tstep=0\n\t\t\tstep+=1\n\t\t\tstr=self.vData.getStr(i)\n\t\t\tlines=str.split(MARK)\n\t\t\tif(len(lines)<4):\n\t\t\t\tcontinue\n\t\t\tif(len(str)):\n\t\t\t\tstr=re.sub(r'^[^:]*:\\|:', '',str)\n\t\t\t\tif(len(str)<10):\n\t\t\t\t\tprint 'no data in str'\n\t\t\t\t\tprint i\n\t\t\t\t\t#print str\n\t\t\t\telse:\n\t\t\t\t\tself.vData.putStr(i,str)\n\t\t\telse:\n\t\t\t\tprint 'no data'\n\t\t\t\tprint i\n\t\t\n\t\n\tdef formatReport(self):\n\t\tstr=self.res\n\t\tlines=str.split(END_MARK)\n\t\tstr=''\n\t\tfor line in lines:\n\t\t\tline=line.replace(MARK,'<br>')\n\t\t\tline=re.sub(r'\\[c:[^\\]]*\\]',r'',line)\n\t\t\tline=re.sub(r'^([^\\<]*)<br>\\1',r'\\1',line)\n\t\t\t#print line\n\t\t\t#print '_____________'\n\t\t\tif('<br>TT' in line or '<br>DK' in line):\n\t\t\t\t#print line\n\t\t\t\tline=line.replace('\u0f21','@1')\n\t\t\t\tline=line.replace('\u0f22','@2')\n\t\t\t\tline=line.replace('\u0f23','@3')\n\t\t\t\tline=line.replace('\u0f24','@4')\n\t\t\t\tline=line.replace('\u0f25','@5')\n\t\t\t\tline=line.replace('\u0f26','@6')\n\t\t\t\tline=line.replace('\u0f27','@7')\n\t\t\t\tline=line.replace('\u0f28','@8')\n\t\t\t\tline=line.replace('\u0f29','@9')\n\t\t\t\tline=line.replace('\u0f20','@0')\n\t\t\t\tline=re.sub(r'@([\\d])@([\\d])',r'@\\1\\2',line)\n\t\t\t\tline=re.sub(r'@([\\d])@([\\d])',r'@\\1\\2',line)\n\t\t\t\tline=line.replace('@','\\n')\n\t\t\t\tline=line.replace(' ','\u0f0b\u0fbe\u0f0b')\n\t\t\t\tline=line.replace('\u0f0d\u0f0b','\u0f0d')\n\t\t\t\tline=line.replace('\u0f0d','\u0f0d\\n')\n\t\t\t\tline=line.replace('\u0f3c','\\n\u0f3d')\n\t\t\t\tline=line.replace('\u0f3d','\u0f3d\\n')\n\t\t\t\tline=line.replace('<br>TT','')\n\t\t\t\tline=line.replace('<br>DK','')\n\t\t\t\tself.data[0]=line\n\t\t\t\tdictReport()\n\t\t\t\tline=self.data[0]\n\t\t\t\tline=line.replace('\u0fbe\u0f0b',' ')\n\t\t\t\tline=line.replace('\u0fbe','<br>')\n\t\t\t\tline=line.replace('<c><br>','<c>')\n\t\t\t\tline=line.replace('<br>\u0f0d</c>','\u0f0d</c>')\n\t\t\t\tline+='TT'\n\t\t\telse:\n\t\t\t\tid='{}'.format(dt.id)\n\t\t\t\tline='<t id=\"l'+id+'\" onClick=\"edit(\\'l'+id+'\\')\">'+line+'</t>'\n\t\t\t\tdt.id+=1\n\t\t\tstr+=line+'<hr>'\n\t\tself.res=str\n\t\t\n\tdef loadTXT(self,name,mode):\n\t\tprint 'load {} mode {}'.format(name,mode)\n\t\t\n\t\twith open(pathSave+'XML_DICT/'+name+'.txt') as f:\n\t\t\tstr=f.read()\n\t\t\tf.close()\n\t\t\tstr=str.replace('\\r','\\n')\n\t\t\td=str.split('\\n')\n\t\t\tprint len(d)\n\t\t\tif(len(name)>5):\n\t\t\t\tname='YP'\n\t\t\ti=0\n\t\t\tm=0\n\t\t\tif(mode=='put'):\n\t\t\t\tm=1\n\t\t\tif(mode=='roots'):\n\t\t\t\tm=3\n\t\t\tfor line in d:\n\t\t\t\t#print len(line)\n\t\t\t\t#print line\n\t\t\t\tline=line.replace(':|:YP','')\n\t\t\t\tline=line.replace(' @ ','\\t')\n\t\t\t\tc=line.split('\\t')\n\t\t\t\tif (m == 3):\n\t\t\t\t\tcd=c[0].split('\u0f0b')\n\t\t\t\t\tif len(cd) ==2:\n\t\t\t\t\t self.get(c[0])\n\t\t\t\t\t if self.res!='':\n\t\t\t\t\t \t continue\n\t\t\t\t\telse:\n\t\t\t\t\t\tcontinue;\n\t\t\t\ti+=1\n\t\t\t\t\n\t\t\t\tif(len(c)>1 and len(c[0])<1048):\n\t\t\t\t\tstr=c[1]+MARK+name\n\t\t\t\t\tif m==1 or m==3:\n\t\t\t\t\t\tself.put(c[0],str)\n\t\t\t\t\telse:\n\t\t\t\t\t\tself.add(c[0],str)\n\t\t\t\t\t#self.rep(c[0],str,':|:'+name)\n\t\t\t\telse:\n\t\t\t\t\tif(len(line)>0):\n\t\t\t\t\t\tprint 'no valid record '+line\n\t\t\t\t\t\tprint i\n\n\tdef export(self,path):\n\t\tsearchText.text='{}'.format(len(self.keyList))\n\t\twith open(path,'w') as f:\n\t\t\tres=list()\n\t\t\tstep=0\n\t\t\ti=0\n\t\t\tfor line in self.keyList:\n\t\t\t\tif(step==1000):\n\t\t\t\t\tstep=0\n\t\t\t\t\tsearchText.text='{}'.format(i)\n\t\t\t\ti+=1\n\t\t\t\tstep+=1\n\t\t\t\tkey=line[0:len(line)-1]\n\t\t\t\t#print key \n\t\t\t\ts=self.get(key)\n\t\t\t\t#print str\n\t\t\t\tres.append(key+' @ '+str(s)+'\\n')\n\t\t\tf.writelines(res)\n\t\tprint 'done export'\n\t\t\t\n\n# 3 handler functions\ndef start_element(name, attrs):\n\tif(name=='key'):\n\t\tif(attrs['ln']=='tb'):\n\t\t\tdt.keyTib='{}'.format(attrs['key'])\n\t\telse:\n\t\t\tn=Pref[4]\n\t\t\t#str=attrs['key']+':|:'+attrs['ln']+':|:TD'\n\t\t\tdt.value+=attrs['key']+MARK+n+END_MARK\t\t\n\t\n\tif(name=='rec'):\t\n\t\tdt.value=''\n\t\t#print 'Start element:', name, attrs\n\ndef end_element(name):\n\tif(name=='rec'):\n\t\tn=Pref[4]\n\t\tif(len(dt.keyTib)>1 and len(dt.value)>3):\n\t\t\t#dt.rep(dt.keyTib,dt.value,':|:'+n)\n\t\t\t#print dt.keyTib\n\t\t\tdt.add(dt.keyTib,dt.value)\n\t\ndef char_data(data):\n\tpass\n\t\t#print 'Character data:', repr(data)\n\ndef loadXML(name):\n\t\t\tif(len(Pref)<5):\n\t\t\t\tfor i in range(5):\n\t\t\t\t\tPref.append('')\n\t\t\tPref[4]=name\n\t\t\tp = xml.parsers.expat.ParserCreate()\n\t\t\tp.StartElementHandler = start_element\n\t\t\tp.EndElementHandler = end_element\n\t\t\tp.CharacterDataHandler = char_data\n\t\t\twith open(pathSave+'XML_DICT/'+name+'.xml') as f:\n\t\t\t\tp.ParseFile(f)\n\n\ndef test(name,d_):\n\td_.get(name)\n\tprint d_.res\n\ndef loadDB():\n\tprint 'load DB'\n\t#dt.clear()\t\n\t'''\n\tdt.loadTXT('MG','')\n\tdt.saveInd()\n\tdt.loadTXT('TD','')\n\tdt.saveInd()\n\tdt.loadTXT('HP','')\n\tdt.saveInd()\n\tdt.loadTXT('VD','')\n\tdt.saveInd()\n\tdt.loadTXT('GRM_','')\n\tdt.saveInd()\n\tdt.loadTXT('ER','')\n\tdt.saveInd()\n\tdt.loadTXT('IW','')\n\tdt.saveInd()\n\tdt.loadTXT('JW','')\n\tdt.saveInd()\n\t##dt.loadTXT('RB','')\n\t#dt.saveInd()\n\t'''\n\tdt.loadTXT('YO','')\n\tdt.saveInd()\n\tdt.loadTXT('RE','')\n\tdt.saveInd()\n\tdt.loadTXT('MVP','')\n\tdt.saveInd()\n\tdt.loadTXT('MV','')\n \tdt.saveInd()\n\tdt.loadTXT('DR','')\n\tdt.saveInd()\n\tdt.loadTXT('SCD','')\n\tdt.saveInd()\n\tdt.loadTXT('TT','')\n\tdt.saveInd()\n\tdt.loadTXT('DK','')\n\tdt.saveInd()\n\t##dt.loadTXT('RYD','')\n\t#dt.saveInd()\n\t\n\ndef exportAction(sender):\n\tpath=fileView['textfield2'].text\n\tpath=pathMain+path\n\tfileView.x=1024\n\tdk.export(path)\n\n\ndef selectAction(request):\n\tif('action' in request):\n\t\taction=request['action']\n\t\tif (len(action)>0 and action[0]=='export'):\n\t\t\texport()\n\t\t\treturn\n\ndef dictionary(sender):\n\tjs='readStr()'\n\tif(mainDictView.x==0):\n\t\ttextAll=dictView.eval_js(js)\n\telse:\n\t\ttextAll=textIn.eval_js(js)\n\tstr=htmlToText(textAll)\n\tstr+='\u0f0b'\n\tstr=str.replace('\u0f0b\u0f0b','\u0f0b')\n\tprint str\n\tsearchText.text=str\t\n\tif(len(str)>1):\n\t\tdictEntry()\n\ndef fullRep(sender):\n\tstr=searchText.text\n\tif(len(str)>0):\n\t\tstr+='\u0f0b'\n\t\tstr=str.replace('\u0f0b\u0f0b','\u0f0b')\n\t\tsearchText.text=str\t\n\t\tdictReport()\n\t\tprintHtml(dt.data[0])\n\t\t\t\n\tdt.mainMode=FULL_REPORT\t\n\tjs='readText()'\n\ttextAll=textIn.eval_js(js)\n\t#textIn.text is unicode, it is need convert it in utf-8\n\ttextAll='{}'.format(textAll)\n\ttextAll=htmlToText(textAll)\n\tdt.data[0]=textAll\n\tdictReport()\n\tprintHtml(dt.data[0])\n\t#searchBtn.title='Word From Text'\n\tdt.mainMode=DICT_REPORT_TEXT\n\t#t2=time.time()\n\t#printHtml(report+'\\n done in {} sec'.format(t2-t1))\n\n\t\ndef translate(sender):\n\tstr=searchText.text\n\tif(len(str)>0 and str[0]=='?'): #parse request as CGI query request\n\t\t\t\trequest=urlparse.parse_qs(str[1:])\n\t\t\t\tselectAction(request)\n\t\t\t\treturn\n\tif(len(str)>0):\n\t\tstr+='\u0f0b'\n\t\tstr=str.replace('\u0f0b\u0f0b','\u0f0b')\n\t\tsearchText.text=str\n\t\tdictEntry()\n\t\treturn\n\t\t\n\tdt.mainMode=TRANSLATE\t\t\t\n\tjs='readText()'\n\ttextAll=textIn.eval_js(js)\n\t#textIn.text is unicode, it is need convert it in utf-8\n\ttextAll='{}'.format(textAll)\n\ttextAll=htmlToText(textAll)\n\tdt.data[0]=textAll\n\tdictReport()\n\tprintHtml(dt.data[0])\n\tdt.mainMode=DICT_REPORT_TEXT\n\t#t2=time.time()\n\t#printHtml(report+'\\n done in {} sec'.format(t2-t1))\n\t\t\n\t\t\t\ndef dictEntry():\n\t\"\"\"report from all dictionaries in database\"\"\"\n\tmainDictView.x=0\n\tmainDictView.height=1024\n\ttextAll=searchText.text\n\ttextAll='{}'.format(textAll)\n\ttextAll+='\u0f0b'\n\ttextAll=textAll.replace('\u0f0b\u0f0b','\u0f0b')\n\tdt.history.append(textAll)\n\tdk.get(textAll)\n\tres=''\n\tres+='['+linkDict(textAll)+linkEdit('='+dk.res)+']\u0f0b<hr>'\n\tdt.get(textAll)\n\tdt.formatReport()\n\tres+=dt.res\n\tprintHTML_(res)\n\t\n\t\ndef dictReport():\n\treport=''\n\ttextAll=dt.data[0]\n\t#textAll='\u0f56\u0f0b\u0f51\u0f42\u0f0b\u0f42\u0f72\u0f0b\u0f60\u0f56\u0fb2\u0f66\u0f0b\u0f56\u0f74\u0f60\u0f72\u0f0b\u0f58\u0f46\u0f7c\u0f42\u0f0b\u0f58\u0f50\u0f62\u0f0b\u0f50\u0f74\u0f42\u0f0b\u0f54\u0f0b\u0f53\u0f72\u0f0b\u0f62\u0f44\u0f0b\u0f56\u0f5e\u0f72\u0f53\u0f0b\u0f62\u0fab\u0f7c\u0f42\u0f66\u0f0b\u0f54\u0f0b\u0f46\u0f7a\u0f53\u0f0b\u0f54\u0f7c\u0f60\u0f72\u0f0b\u0f46\u0f7c\u0f66\u0f0b\u0f40\u0fb1\u0f72\u0f0b\u0f62\u0fa3\u0f58\u0f0b\u0f42\u0fb2\u0f44\u0f66\u0f0b\u0f63\u0f66\u0f0b\u0f60\u0f7c\u0f51\u0f0b\u0f42\u0f66\u0f63\u0f0b\u0f62\u0fa1\u0f7c\u0f0b\u0f62\u0f97\u0f7a\u0f0b\u0f66\u0f99\u0f72\u0f44\u0f0b\u0f54\u0f7c\u0f60\u0f72\u0f0b\u0f50\u0f7a\u0f42\u0f0b\u0f54\u0f0b\u0f56\u0fb3\u0f0b\u0f53\u0f0b\u0f58\u0f7a\u0f51\u0f0b\u0f54\u0f0b\u0f60\u0f51\u0f72\u0f0b\u0f61\u0f72\u0f53\u0f0b\u0f4f\u0f7a\u0f0b\u0f0d\u0f0b\\n'\n\ttext=textAll.split('\\n')\n\td=dk.dictKey\n\treportT=''\n\tn=0\n\t\n\tfor n in range(0,len(text)-1):\n\t\tsrc=text[n]\n\t\ts=src\n\t\treportN=text[n+1]\n\t\trd={} #dictionary of words result\n \t\tlng=len(s)\n \t\tif(lng<2):\n \t\t\tcontinue\n \t\tif(re.search('\u0f0b', reportN) == None and re.search('\u0f0d', reportN) == None):\n \t\t\treportT=reportN\n \t\tif(re.search('\u0f0b', s) == None and re.search('\u0f0d', s) == None):\n \t\t\tif(re.search('[\\d\\[<]',src)!=None):\n \t\t\t\treport+='<br><d>'+src+'</d>'\n \t\t\tcontinue\n\t\ts=unicode(s)\n \t\ts=re.sub(u'[ _\\d\\ \"\t\\'\\*\\(\\)\\{\\}\\[\\]@\u2022#\\%\\&\u0f04\u0f05\u0f14\u0f34\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u0f20\u0f0e\u0f0d\u0f11\u0f08\u0f0c\u0f10\u0f0f\u0f3c\u0f3d\u0900-\u097f]',u\"\u0f0b\",s)\n \t\ts=re.sub(u'\u0f7f',u'\u0f7f\u0f0b',s)\n \t\ts=s+u'\u0f0b\u0f0d'\n\t\ts=re.sub(u'\u0f0b[\u0f0b]+',u\"\u0f0b\",s)\n\t\ts=re.sub(u'([^\u0f0b])\u0f60\u0f7c\u0f0b',r\"\\1\u0f0b(\u0442\u043e\u0447\u043a\u0430)\u0f0b\",s)\n\t\t#s=re.sub(u'([^\u0f0b])\u0f60\u0f58\u0f0b',r\"\\1\u0f0b[\u0f60\u0f58=\u0438\u043b\u0438]\u0f0b\",s)\n\t\ts=re.sub(u'\u0f42\u0f0b\u0f42\u0f7c\u0f0b\u0f0d',u\"\u0f42\u0f0b(\u0442\u043e\u0447\u043a\u0430)\u0f0b\",s)\n\t\ts=re.sub(u'\u0f44\u0f0b\u0f44\u0f7c\u0f0b\u0f0d',u\"\u0f44\u0f0b(\u0442\u043e\u0447\u043a\u0430)\u0f0b\",s)\n\t\ts=re.sub(u'\u0f51\u0f0b\u0f51\u0f7c\u0f0b\u0f0d',u\"\u0f51\u0f0b(\u0442\u043e\u0447\u043a\u0430)\u0f0b\",s)\n\t\ts=re.sub(u'\u0f53\u0f0b\u0f53\u0f7c\u0f0b\u0f0d',u\"\u0f53\u0f0b(\u0442\u043e\u0447\u043a\u0430)\u0f0b\",s)\n\t\ts=re.sub(u'\u0f56\u0f0b\u0f56\u0f7c\u0f0b\u0f0d',u\"\u0f56\u0f0b(\u0442\u043e\u0447\u043a\u0430)\u0f0b\",s)\n\t\ts=re.sub(u'\u0f58\u0f0b\u0f58\u0f7c\u0f0b\u0f0d',u\"\u0f58\u0f0b(\u0442\u043e\u0447\u043a\u0430)\u0f0b\",s)\n\t\ts=re.sub(u'\u0f62\u0f0b\u0f62\u0f7c\u0f0b\u0f0d',u\"\u0f62\u0f0b(\u0442\u043e\u0447\u043a\u0430)\u0f0b\",s)\n\t\ts=re.sub(u'\u0f63\u0f0b\u0f63\u0f7c\u0f0b\u0f0d',u\"\u0f63\u0f0b(\u0442\u043e\u0447\u043a\u0430)\u0f0b\",s)\n\t\ts=re.sub(u'\u0f66\u0f0b\u0f66\u0f7c\u0f0b\u0f0d',u\"\u0f66\u0f0b(\u0442\u043e\u0447\u043a\u0430)\u0f0b\",s)\n\t\ts=re.sub(u'\u0f0b\u0f4f\u0f7c\u0f0b\u0f0d',u\"\u0f0b(\u0442\u043e\u0447\u043a\u0430)\u0f0b\",s)\n\t\ts=re.sub(u'\u0f0b\u0f54\u0f60\u0f44\u0f0b',u\"\u0f0b\u0f54\u0f0b[\u0f60\u0f44=\u0443\u0441\u0442\u0443\u043f.]\u0f0b\",s)\n\t\ts=re.sub(u'\u0f0b\u0f56\u0f60\u0f44\u0f0b',u\"\u0f0b\u0f56\u0f0b[\u0f60\u0f44=\u043e\u0447\u0435\u043d\u044c]\u0f0b\",s)\n\t\ts='{}'.format(s)\n\n\t\tl=s.split('\u0f0b')\n\t\tres=''\n\t\tresD=''\n\t\t\n\t\t\t\t\n\t\tlng=len(l)\n\t\tstart=0\n\t\tend=lng-1\n\t\t\n\t\ti=lng\n\t\tcount=0\n\t\t#t1=time.time()\n\t\t\n\t\twhile start<lng :\n\t\t\t#make query string decrease end\n\t\t\tend=lng\n\t\t\twhile end>-1 :\n\t\t\t\tj=start\n\t\t\t\tline=''\n\t\t\t\twhile j < end:\n\t\t\t\t\tline+=l[j]+'\u0f0b'\n\t\t\t\t\tj+=1\n\t\t\t\tcount+=1\n\t\t\t\tif (count >1000):\n\t\t\t\t\t#print line+' {} {}'.format(start,end)\n\t\t\t\t\tbreak\n\t\t\t\tld=line+'\\n'\n\t\t\t\tif(ld in d):\n\t\t\t\t\tdk.get(line)\n\t\t\t\t\t#c=str(dk.res)\n\t\t\t\t\tc=dk.res\n\t\t\t\t\tif(EMPTY_MARK in c):\n\t\t\t\t\t\tend-=1\n\t\t\t\t\t\tcontinue\n\t\t\t\t\tif('__' in c):\n\t\t\t\t\t\tres+='['+linkDict(line)+linkEdit('='+c)+']\u0f0b<br></c><c>'\n\t\t\t\t\t\tend-=1\n\t\t\t\t\t\tcontinue\n\t\t\t\t\tres+='['+linkDict(line)+linkEdit('='+c)+']\u0f0b'\n\t\t\t\t\tif(dt.mainMode==FULL_REPORT and start==0 and end==lng-1):\n\t\t\t\t\t\tend-=1\n\t\t\t\t\t\tcontinue\n\t\t\t\t\tstart=end-1\n\t\t\t\t\tbreak\n\t\t\t\t#next check big dictionary report\n\t\t\t\tif(len(line)>3 and ld in dt.dictKey):\n\t\t\t\t\tresD+='['+linkDict(line)+linkEdit('=')+'] '\n\t\t\t\tln=line+'@'\n\t\t\t\tl1=ln.replace('\u0f60\u0f72\u0f0b@','\u0f0b')\n\t\t\t\tld=l1+'\\n'\n\t\t\t\tif(ld in d):\n\t\t\t\t\tdk.get(l1)\n\t\t\t\t\tc=dk.res\n\t\t\t\t\tif(EMPTY_MARK in c):\n\t\t\t\t\t\tend-=1\n\t\t\t\t\t\tcontinue\n\t\t\t\t\tres+='['+linkDict(l1)+linkEdit('='+c)+']\u0f0b['+linkDict('-\u0f60\u0f72\u0f0b')+linkEdit('=g.p')+']\u0f0b'\n\t\t\t\t\trd[l1]=1\n\t\t\t\t\tstart=end-1\n\t\t\t\t\tbreak\n\t\t\t\t#next check big dictionary report\n\t\t\t\tif(len(l1)>3 and ld in dt.dictKey):\n\t\t\t\t\tresD+='['+linkDict(l1)+linkEdit('=')+'] '\n\t\t\t\tl1=ln.replace('\u0f66\u0f0b@','\u0f0b')\n\t\t\t\tld=l1+'\\n'\n\t\t\t\tif(ld in d):\n\t\t\t\t\tdk.get(l1)\n\t\t\t\t\tc=dk.res\n\t\t\t\t\tif(EMPTY_MARK in c):\n\t\t\t\t\t\tend-=1\n\t\t\t\t\t\tcontinue\n\t\t\t\t\tres+='['+linkDict(l1)+linkEdit('='+c)+']\u0f0b['+linkDict('-\u0f66\u0f0b')+linkEdit('=i.p.')+']\u0f0b'\n\t\t\t\t\trd[l1]=1\n\t\t\t\t\tstart=end-1\n\t\t\t\t\tbreak\n\t\t\t\t#next check big dictionary report\n\t\t\t\tif(len(l1)>3 and ld in dt.dictKey):\n\t\t\t\t\tresD+='['+linkDict(l1)+linkEdit('=')+'] '\n\t\t\t\tl1=ln.replace('\u0f62\u0f0b@','\u0f0b')\n\t\t\t\tld=l1+'\\n'\n\t\t\t\tif(ld in d):\n\t\t\t\t\tdk.get(l1)\n\t\t\t\t\tc=dk.res\n\t\t\t\t\tif(EMPTY_MARK in c):\n\t\t\t\t\t\tend-=1\n\t\t\t\t\t\tcontinue\n\t\t\t\t\tres+='['+linkDict(l1)+linkEdit('='+c)+']\u0f0b['+linkDict('-\u0f62\u0f0b')+linkEdit('=d.l.')+']\u0f0b'\n\t\t\t\t\trd[l1]=1\n\t\t\t\t\tstart=end-1\n\t\t\t\t\tbreak\n\t\t\t\t#next check big dictionary report\n\t\t\t\tif(len(l1)>3 and ld in dt.dictKey):\t\n\t\t\t\t\tresD+='['+linkDict(l1)+linkEdit('=')+'] '\n\t\t\t\tl1=ln.replace('\u0f60\u0f7c\u0f0b@','\u0f60\u0f0b')\n\t\t\t\tld=l1+'\\n'\n\t\t\t\tif(ld in d):\n\t\t\t\t\tdk.get(l1)\n\t\t\t\t\tc=dk.res\n\t\t\t\t\tif(EMPTY_MARK in c):\n\t\t\t\t\t\tend-=1\n\t\t\t\t\t\tcontinue\n\t\t\t\t\tres+='['+linkDict(l1)+linkEdit('='+c)+'](\u0442\u043e\u0447\u043a\u0430)\u0f0b'\n\t\t\t\t\trd[l1]=1\n\t\t\t\t\tstart=end-1\n\t\t\t\t\tbreak\n\t\t\t\t#next check big dictionary report\n\t\t\t\tif(len(l1)>3 and ld in dt.dictKey):\n\t\t\t\t\tresD+='['+linkDict(l1)+linkEdit('=')+'] '\n\t\t\t\tl1=ln.replace('\u0f60\u0f58\u0f0b@','\u0f0b')\n\t\t\t\tld=l1+'\\n'\n\t\t\t\tif(ld in d):\n\t\t\t\t\tdk.get(l1)\n\t\t\t\t\tc=dk.res\n\t\t\t\t\tif(EMPTY_MARK in c):\n\t\t\t\t\t\tend-=1\n\t\t\t\t\t\tcontinue\n\t\t\t\t\tres+='['+linkDict(l1)+linkEdit('='+c)+']\u0f0b['+linkDict('-\u0f60\u0f58\u0f0b')+linkEdit('=\u0438\u043b\u0438')+']\u0f0b'\n\t\t\t\t\trd[l1]=1\n\t\t\t\t\tstart=end-1\n\t\t\t\t\tbreak\n\t\t\t\t#next check big dictionary report\n\t\t\t\tif(len(l1)>3 and ld in dt.dictKey):\n\t\t\t\t\tresD+='['+linkDict(l1)+linkEdit('=')+'] '\n\t\t\t\tend-=1\n\t\t\t\tif(end==start):\n\t\t\t\t\tres+=line\n\t\t\t\t\tbreak\n\t\t\tstart+=1\n\t\t\tres=res.replace(':|:YP','')\t\n\t\t\n\t\tif(re.search('lt',src)!=None):\n\t\t\tsrc='<d>'+src+'</d>'\n\t\telse:\n\t\t\tsrc='<tib contentEditable>'+src+'</tib>'\n\t\treport+=src+'\\n<d>'+reportT+'</d><br>\\n<w>'+res+'\\n'\n\t\tif(len(resD)>10):\n\t\t\treport+='<r>'+resD+'</r>'\t\n\t\treport+='</w><br><br>\\n'\n\t\treportT=''\n\t\tif(dt.mainMode==FULL_REPORT):\n\t\t\tres=''\n\t\t\tfor line in l:\n\t\t\t\tld=line+'\u0f0b\\n'\n\t\t\t\tkey=line+'\u0f0b'\n\t\t\t\tif(ld in d):\n\t\t\t\t\tdk.get(key)\n\t\t\t\t\tc=dk.res\n\t\t\t\t\tres+='['+linkDict(key)+linkEdit('='+c)+']\u0f0b'\t\n\t\t\tres=res.replace(':|:YP','')\t\t\n\t\t\treport+='<br><c>'+res+'</c>\\n<br>'\t\n\t\t\t\n\t\t#print report\n\t\t#sys.exit()\n\t\t#return\n\tdt.data[0]=report\n\t\ndef linkDict(line):\n\ts=''\n\tid='s{}'.format(dt.id)\n\ts='<r id=\"'+id+'\" onClick=\"set(\\''+id+'\\')\">'+line+'</r>'\n\tdt.id+=1\n\treturn s\n\t\ndef linkText(line):\n\ts=''\n\tid='s{}'.format(dt.id)\n\ts='<t id=\"'+id+'\" onClick=\"edit(\\''+id+'\\')\">'+line+'</t>'\n\tdt.id+=1\n\treturn s\n\n'''\ndef linkEdit(line):\n\t#line=re.sub('^[^:]*:\\|:','=',line)\n\ts=''\n\tid='s{}'.format(dt.id)\n\tl=line\n\tline=line.replace('@','')\n\tline=line.replace('*','')\n\tline=line.replace('%','')\n\tif(l!=line):\n\t\ts='<t id=\"'+id+'\" onClick=\"edit(\\''+id+'\\')\" onBlur=\"v(\\''+id+'\\')\">'+line+'</t>'\n\telse:\n\t\ts='<t id=\"'+id+'\" onClick=\"edit(\\''+id+'\\')\" onBlur=\"v(\\''+id+'\\')\"><r>'+line+'</r></t>'\n\tdt.id+=1\n\treturn s\n'''\n\ndef linkEdit(line):\n\t#line=re.sub('^[^:]*:\\|:','=',line)\n\ts=''\n\tid='s{}'.format(dt.id)\n\tl=line\n\tline=line.replace('@','')\n\tline=line.replace('*','')\n\tline=line.replace('%','')\n\t\n\ts='<t id=\"'+id+'\" style=\"color:#373737\" onClick=\"edit(\\''+id+'\\')\" onBlur=\"v(\\''+id+'\\')\">'+line+'</t>'\n\t\n\tdt.id+=1\n\treturn s\t\n\ndef convertDict():\n\twith open(pathSave+\"allDict_uni.txt\",'w') as f:\n\t\twith open(pathSave+\"allDict_rus16.js\",'r') as file:\n\t\t\tfor line in file:\n\t\t\t\tif(('\",\"\",\"' in line)==False):\n\t\t\t\t\tcontinue\n\t\t\t\tstr=line.replace('[\"','')\n\t\t\t\tstr=str.replace('\",\"\",\"',' @ ')\n\t\t\t\tstr=str.replace('\"],','')\n\t\t\t\tf.write(str)\n\t\t\t\t\t\t\t\t\t\t \ndef previousPage(sender):\n\tglobal Pref\n\tpath=fileView['textfield1'].text\n\tpath=pathMain+'{}'.format(path)\n\twith open(path,\"r\") as f:\n\t\ttextFile=f.readlines()\n\tc=pageIndex.text\n\ti=0\n\tif('#' in c):\n\t\tfor line in textFile:\n\t\t\tif(c in line):\n\t\t\t\tbreak\n\t\t\ti+=1\n\t\ti=i/pageSize\n\telse:\n\t\ti=eval(c)-1\n\tif(i<0):\n\t\ti=len(textFile)/pageSize\n\tpage=textFile[i*pageSize:i*pageSize+pageSize]\n\tpageIndex.text='{}'.format(i)\n\tPref[2]=pageIndex.text\n\ttext='<t id=\"t1\" onClick=\"edit(\\'t1\\')\">'+'<br>'.join(page)+'</t>'\n\tsearchBtn.title='Translate'\n\tdt.mainMode=TRANSLATE\n\tsearchText.text=''\n\tsavePref()\n\tprintHtml(text)\n\n\ndef nextPage(sender):\n\tglobal Pref\n\tpath=fileView['textfield1'].text\n\tpath=pathMain+'{}'.format(path)\n\twith open(path,\"r\") as f:\n\t\ttextFile=f.readlines()\n\tc=pageIndex.text\n\ti=0\n\tif('#' in c):\n\t\tfor line in textFile:\n\t\t\tif(c in line):\n\t\t\t\tbreak\n\t\t\ti+=1\n\t\ti=i/pageSize\n\telse:\n\t\ti=eval(c)+1\n\tif(i>len(textFile)/pageSize):\n\t\ti=0\n\tpage=textFile[i*pageSize:i*pageSize+pageSize]\n\tpageIndex.text='{}'.format(i)\n\tPref[2]=pageIndex.text\n\ttext='<t id=\"t1\" onClick=\"edit(\\'t1\\')\">'+'<br>'.join(page)+'</t>'\n\tsearchBtn.title='Translate'\n\tdt.mainMode=TRANSLATE\n\tsearchText.text=''\n\tsavePref()\n\tprintHtml(text)\n\t\n\t\ndef printHtml(text):\n\t#with open(pathSave+pageStyle,\"r\") as f:\n\thtmlPage=Pref[0]\n\tstr=htmlPage.replace('@@@TEXT@@@',text)\n\tstr=str.replace( chr(0),' ')\n\ttextIn.load_html(str)\t\n\ndef printHTML_(text):\n\t#with open(pathSave+pageStyle,\"r\") as f:\n\thtmlPage=Pref[0]\n\tstr=htmlPage.replace('@@@TEXT@@@',text)\n\tdictView.load_html(str)\t\n\ndef openText():\n\tpathField=fileView['textfield1']\n\tpath=pathField.text\t\n\tpath=pathMain+'{}'.format(path)\n\tif(os.path.isfile(path)):\n\t\t\n\t\twith open(pathSave+pageStyle,\"r\") as f:\n\t\t\thtmlPage=f.read()\n\t\t\tPref[0]=htmlPage\n\t\twith open(path,\"r\") as f:\n\t\t\ttextFile=f.readlines()\n\t\t\tif(len(textFile)<1):\n\t\t\t\tstr='no text'\n\t\t\telse:\n\t\t\t\tif(len(textFile[0])>1024):\n\t\t\t\t\tstr='too long line'\n\t\t\t\telse:\n\t\t\t\t\tc=pageIndex.text\n\t\t\t\t\ti=eval(c)\n\t\t\t\t\tpage=textFile[i*pageSize:i*pageSize+pageSize]\n\t\t\t\t\t#pageIndex.text='{}'.format(i)\n\t\t\t\t\tstr='<br>'.join(page)\n\t\t\t\t\tif(len(str)>90000):\n\t\t\t\t\t\tstr='too long line'\n\t\t\t\t\n\t\t\ttext='<t id=\"t1\" onClick=\"edit(\\'t1\\')\">'+str+'</t>'\n\t\t\tstr=htmlPage.replace('@@@TEXT@@@',text)\n\t\t\tstr=str.replace( chr(0),' ')\n\t\t\ttextIn.load_html(str)\t\n\t\t\t#print str\n\telse:\n\t\tprint 'not open '+ path\n\t\tmenu(1)\n\t\t\ndef copyText(sender):\n\tpathField=fileView['textfield1']\n\tpath=pathField.text\t\n\tpath=pathMain+'{}'.format(path)\n\tif(os.path.isfile(path)):\n\t\twith open(path,\"r\") as f:\n\t\t\ttextFile=f.read()\n\t\tdialogs.share_text(textFile)\n\t\ndef menu(sender):\n\tpath=fileView['textfield1'].text\n\tpath=re.sub('/[/]+','/',path)\n\tfileView['textfield1'].text=path\n\ttbl=fileView['tableview1']\n\ttblD=fileView['tableview2']\n\tpath=os.path.dirname(path)\n\tif(os.path.isdir(pathMain+path)):\n\t\tlistD=os.listdir(pathMain+path)\n\telse:\n\t\tpath='/'\n\t\tlistD=os.listdir(pathMain)\n\t\tfileView['textfield1'].text='/'\n\tl=[]\n\tld=['...']\n\tfor line in listD:\n\t\tif(os.path.isdir(pathMain+path+'/'+line)):\n\t\t\tld.append(line)\n\t\telse:\n\t\t\tl.append(line)\n\ttbl.data_source.items=l\n\ttblD.data_source.items=ld\n\tfileView.x=0\n\t\ndef openDir(sender):\n\tpath=fileView['textfield1'].text\n\tpath=path.replace('#','/')\n\tpath=os.path.dirname(path)\n\ttbl=fileView['tableview1']\n\ttblD=fileView['tableview2']\n\tdir=tblD.data_source.items[tblD.selected_row[1]]\n\tif(dir=='...'):\n\t\tpath=os.path.dirname(path)\n\t\tdir=''\n\tlistD=os.listdir(pathMain+path+'/'+dir)\n\tc=path+'/'+dir+'/'\n\tc=c.replace('#','/')\n\tc=re.sub('//+','/',c)\n\tfileView['textfield1'].text=c\n\tl=[]\n\tld=['...']\n\tfor line in listD:\n\t\tif(os.path.isdir(pathMain+path+'/'+dir+'/'+line)):\n\t\t\tld.append(line)\n\t\telse:\n\t\t\tl.append(line)\n\ttbl.data_source.items=l\n\ttblD.data_source.items=ld\n\ndef openFile(sender):\n\tglobal Pref\n\ttbl=fileView['tableview1']\n\tline=tbl.data_source.items[tbl.selected_row[1]]\n\tfileView.x=1024\n\tpath=fileView['textfield1'].text\n\tpath=os.path.dirname(path)\n\tfileView['textfield1'].text=path+'/'+line\n\tPref[1]=path+'/'+line\n\tPref[2]='0'\n\tpageIndex.text='0'\n\tsavePref()\n\topenText()\n\t\t\ndef closeMenu(sender):\n\tfileView.x=1024\n\ndef replaceRegExpFile(sender):\n\tpath=fileView['textfield1'].text\n\tpath=pathMain+'{}'.format(path)\n\tpathRep=fileView['textfield3'].text\n\tpathRep=pathMain+'{}'.format(pathRep)\n\twith open(pathRep,\"r\") as f:\n\t\tstr=f.read()\n\t\tdataRegExp=str.split('\\n:|:\\n')\n\t\t\n\tpath=os.path.dirname(path)\n\tlistD=os.listdir(path)\n\tfor line in listD:\n\t\tprint line\n\t\tif(os.path.isdir(path+'/'+line)):\n\t\t\tpass\n\t\telse:\n\t\t\tprint 'start '+line\n\t\t\twith open(path+'/'+line,\"r\") as f:\n\t\t\t\ttext=f.read()\n\t\t\t\tfor l in dataRegExp:\n\t\t\t\t\tc=l.split(' --> ')\n\t\t\t\t\tif(len(c)<2):\n\t\t\t\t\t\tprint 'not valid re '+l\n\t\t\t\t\telse:\n\t\t\t\t\t\ttext=re.sub(c[0],c[1],text)\n\t\t\twith open(path+'/'+line,\"w\") as f:\t\n\t\t\t\tf.write(text)\t\n\t\t\tprint 'done '+line\t\n\n\t\ndef replaceRegExp(sender):\n\tpass\t\n\ndef replaceRegExpText(sender):\n\tpath=fileView['textfield1'].text\n\tpath=pathMain+'{}'.format(path)\n\ttextSrc=fileView['textfield4'].text\n\ttextSrc='{}'.format(textSrc)\n\ttextRep=fileView['textfield5'].text\n\ttextRep='{}'.format(textRep)\n\ta=re.compile(textSrc,re.M)\n\twith open(path,\"r\") as f:\n\t\ttextFile=f.read()\n\t\ttextFile=unicode(textFile)\n\t\tc=chr(0xA0)\n\t\ttextFile=re.sub(c,' ',textFile)\n\t\ttextFile='{}'.format(textFile)\n\t\t#s=textFile[0:32]\n\t\t#s=unicode(s)\n\t\t#i=0\n\t\t#while i<len(s):\n\t\t#\tprint '{0:x}'.format(ord(s[i]))\n\t\t#\ti+=1\n\t\t\n\t\ttextFile=re.sub(a,textRep,textFile)\n\t\t#textFile=textFile.replace(textSrc,textRep)\n\t\t#textFile=textFile.replace(' ','\\n')\n\t\t#textFile=re.sub('\u0f0d','\u0f0d\\n',textFile)\n\t\t#textFile=re.sub(r'\\n[\\n]+','\\n',textFile)\n\t\t#textFile=re.sub(r'\u0f0d\\n[ ]*\u0f0d\\n','\u0f0d\\n\u0f0d',textFile)\n\t\t#textFile=re.sub(r' ','\\n',textFile)\n\t\t\n\twith open(path,\"w\") as f:\t\n\t\tf.write(textFile)\t\t\n\topenText()\n\tfileView.x=1024\n\t\n\t\ndef searchInDharmabook(sender):\n\tpath=pathSave+\"XML_DICT/DHARMABOOK.tab\"\t\n\ttext=fileView['textfield6'].text\n\ttext='{}'.format(text)\n\tres=''\n\ti=0\n\n\twith open(path,\"r\") as f:\n\t\tfor line in f:\n\t\t\tstr=line[0:1024]\n\t\t\tif(text in str):\n\t\t\t\tl=len(str)\n\t\t\t\tstr=str[0:str.rfind(' ')]\n\t\t\t\tif(len(str)==l):\n\t\t\t\t\tstr=str[0:str.rfind('\u00b6')]\n\t\t\t\tres+=str+'\\n'\n\t\t\t\ti+=1\n\t\t\tif(i>300):\n\t\t\t\tbreak \t\n\twith open(pathSave+'res_dharmabook.txt',\"w\") as f:\n\t\tf.write(res)  \t\n \tfileView.x=1024\n \t\ndef searchInDharmabookFullText(sender):\n\tpath=pathSave+\"XML_DICT/DHARMABOOK.tab\"\t\n\ttext=fileView['textfield6'].text\n\ttext='{}'.format(text)\n\tres=''\n\tsearchCount=0\n\n\twith open(path,\"r\") as f:\n\t\tfor line in f:\n\t\t\tindex=line.find(text)\n\t\t\tif(index!=-1):\n\t\t\t\tstr=line[0:256]\n\t\t\t\tif(str.rfind(' ')!=-1):\n\t\t\t\t\tstr=str[0:str.rfind(' ')]\n\t\t\t\telse:\n\t\t\t\t\tif(str.rfind('\u00b6')!=-1):\n\t\t\t\t\t\tstr=str[0:str.rfind('\u00b6')]\n\t\t\t\t\telse:\n\t\t\t\t\t\tif(str.rfind('\u0f0b')!=-1):\n\t\t\t\t\t\t\t\tstr=str[0:str.rfind('\u0f0b')]\n\t\t\t\t#print '{0:d}'.format(len(resList))+' found '+str\n\t\t\t\tres+='\\n================================\\n'+str+'\\n____________________________________\\n'\n\t\n\t\t\twhile(index!=-1):\t\n\t\t\t\t\tstr=line[index-512:index]\n\t\t\t\t\tl=len(str)\n\t\t\t\t\tif(str.find(' ')!=-1):\n\t\t\t\t\t\tstr=str[str.find(' '):l]\n\t\t\t\t\telse:\n\t\t\t\t\t\tif(str.find('\u00b6')!=-1):\n\t\t\t\t\t\t\tstr=str[str.find('\u00b6'):l]\n\t\t\t\t\t\telse:\n\t\t\t\t\t\t\tif(str.find('\u0f0b')!=-1):\n\t\t\t\t\t\t\t\tstr=str[str.find('\u0f0b'):l]\n\t\t\t\t\tres+=str\n\t\t\t\t\t\n\t\t\t\t\tstr=line[index:index+512]\n\t\t\t\t\tif(str.rfind(' ')!=-1):\n\t\t\t\t\t\tstr=str[0:str.rfind(' ')]\n\t\t\t\t\telse:\n\t\t\t\t\t\tif(str.rfind('\u00b6')!=-1):\n\t\t\t\t\t\t\tstr=str[0:str.rfind('\u00b6')]\n\t\t\t\t\t\telse:\n\t\t\t\t\t\t\tif(str.rfind('\u0f0b')!=-1):\n\t\t\t\t\t\t\t\tstr=str[0:str.rfind('\u0f0b')]\n\t\t\t\t\tres+=str+'\\n\\n'\n\t\t\t\t\tsearchCount+=1\n\t\t\t\t\tif(searchCount>300):\n\t\t\t\t\t\tbreak \t\n\t\t\t\t\tindex=line.find(text,index+len(text))\n\t\t\tif(searchCount>300):\n\t\t\t\t\tbreak \n\tres=unicode(res)\n\tc=chr(0xA0)\n\tres=re.sub(c,' ',res)\n\tres='{}'.format(res)\t\t\n\tres=res.replace('\u00b6','\\n')\n\tres=res.replace('\u0f0d ','\u0f0d\\n')\n\tres=res.replace('\u0f14 ','\u0f14 \\n')\n\twith open(pathSave+'res_dharmabookFullText.txt',\"w\") as f:\n\t\tf.write(res)  \t\n \tfileView.x=1024\n \t\n \t\ndef exportTextByID(sender):\n\tpath=pathSave+\"XML_DICT/DHARMABOOK.tab\"\t\n\ttext=fileView['textfield6'].text\n\ttext='{}'.format(text)\n\twith open(path,\"r\") as f:\n\t\tfor line in f:\n\t\t\tstr=line[0:128]\n\t\t\tif(text in str):\n\t\t\t\twith open(pathSave+'res_dharmabookText.txt',\"w\") as f:\n\t\t\t\t\tf.write(line)  \n\t\t\t\tbreak\t\n \tfileView.x=1024\n  \t\n \t\n\ndef searchInFolder(sender):\n\tprint 'search'\n\tpath=fileView['textfield1'].text\n\tpath=pathMain+'{}'.format(path)\n\tprint path\n\tstr=fileView['textfield6'].text\n\tstr='{}'.format(str)\n\tres=''\t\n\tpath=os.path.dirname(path)\n\tlistD=os.listdir(path)\n\ti=0\n\tfor line in listD:\n\t\tif(os.path.isdir(path+'/'+line)):\n\t\t\tpass\n\t\telse:\n\t\t\twith open(path+'/'+line,\"r\") as f:\n\t\t\t\tfor l in f:\n\t\t\t\t\tif (str in l):\n\t\t\t\t\t\tres+=line+'\\n'+l+'\\n'\n\t\t\t\t\t\ti+=1\n\t\t\t\t\t\tif(i>100):\n\t\t\t\t\t\t\tres=res.replace('\\n\\n','\\n')\n\t\t\t\t\t\t\twith open(pathSave+'res.txt',\"w\") as f:\n\t\t\t\t\t\t\t\tf.write(res)\n\t\t\t\t\t\t\treturn\n\tres=res.replace('\\n\\n','\\n')\n\twith open(pathSave+'res_1.txt',\"w\") as f:\n\t\tf.write(res)\n\ndef searchInFileText(sender):\n\tpath=fileView['textfield1'].text\n\ttext=fileView['textfield6'].text\n\ttext='{}'.format(text)\n\tpath=pathMain+'{}'.format(path)\n\twith open(path,\"r\") as f:\n\t\ttextFile=f.readlines()\n\ti=0\n\tfor line in textFile:\n\t\tif(text in line):\n\t\t\tbreak\n\t\ti+=1\n\ti=i/pageSize\n\tpage=textFile[i*pageSize:i*pageSize+pageSize]\n\tpageIndex.text='{}'.format(i)\n\ttext='<t id=\"t1\" onClick=\"edit(\\'t1\\')\">'+'<br>'.join(page)+'</t>'\n\tprintHtml(text)\n\tfileView.x=1024\n\t\ndef searchInFile(sender):\t\n\tpath=fileView['textfield1'].text\n\ttext=fileView['textfield6'].text\n\ttext='{}'.format(text)\n\tpath=pathMain+'{}'.format(path)\n\tres='test'\n\tsearchCount=0\n\n\twith open(path,\"r\") as f:\n\t\ttextLines=f.readlines()\n\t\ti=1\n\t\tl=len(textLines)-1\n\t\twhile(i<l):\n\t\t\tindex=textLines[i].find(text)\n\t\t\tif(index!=-1):\n\t\t\t\tres+=textLines[i-1]+textLines[i]+textLines[i+1]+'\\n\u0f04\u0f0d\u0f0d\\n'\n\t\t\t\tsearchCount+=1\n\t\t\ti+=1\n\tprint searchCount\n\twith open(pathSave+'res_dharmabookTextSearch.txt',\"w\") as f:\n\t\tf.write(res)  \t\n \tfileView.x=1024\n \t\n\n\ndef close(sender):\n\tdt.close()\t\n\tview.close()\n\tsavePref()\n\ndef cmpLines(a,b):\n\ta_=len(a.split(' @ ')[0])\n\tb_=len(b.split(' @ ')[0])\n\tif(a_>b_):\n\t\treturn -1\n\telif(a_<b_):\n\t\treturn 1\n\telse:\n\t\treturn 0\n\t\n\ndef saveDict(text):\n\tdictNew=list()\n\ttext=re.sub(r'<[^>]*>','',text)\n\ttext=text.replace('\u00ab','\u0f3c')\n\ttext=text.replace('{','\u0f3c')\n\ttext=text.replace('\u00bb','\u0f3d')\n\ttext=text.replace('}','\u0f3d')\n\tlines=text.split('[')\n\tfor l in lines:\n\t\tif ('=' in l):\n\t\t\tcontinue\n\t\tif ('/' in l):\n\t\t\t#print l\n\t\t\tc=l.split(']')\n\t\t\td=c[0].split('/')\n\t\t\tif(len(d)>1):\n\t\t\t\tkey=d[0]+'\u0f0b'\n\t\t\t\tkey=key.replace('\u0f0b\u0f0b','\u0f0b')\n\t\t\t\tif (d[1]=='-'):\n\t\t\t\t\tdk.rem(key)\n\t\t\t\t\tcontinue\n\t\t\t\tif(len(d[0])<3 or len(d[1])<3):\n\t\t\t\t\tcontinue\n\t\t\t\tvalue=d[1]+'%'\n\t\t\t\tvalue=value.replace('@%','%')\n\t\t\t\tvalue=value.replace('*%','%')\n\t\t\t\tvalue=value.replace('%%','%')\n\t\t\t\tdk.put(key,value)\n\tdk.saveInd()\n\t\t\ndef htmlToText(textAll):\n\ttextAll=textAll.replace('\\n','')\n\ttextAll=textAll.replace('<br>','\\n')\n\ttextAll=textAll.replace('<div>','\\n')\n\ttextAll=textAll.replace('&nbsp','')\n\ttextAll=textAll.replace('<c>','@')\n\ttextAll=textAll.replace('<r>','@')\n\t#textAll=textAll.replace('[','@')\n\ttextAll=re.sub(r'@.*','@',textAll)\n\ttextAll=textAll.replace('@\\n','')\n\ttextAll=re.sub(r'<[^>]*>','',textAll)\n\treturn textAll\n\ndef save(sender):\n\tf = open(pathSave+'_pref.txt',\"w\")\n\tpickle.dump(Pref, f)\n\tf.close()\t\n\t\t\n\t#textIn.text is unicode, it is need convert it in utf-8\n\t#need rewrite with codecs \n\tjs='readText()'\n\tif(mainDictView.x==0):\n\t\ttextAll=dictView.eval_js(js)\n\t\ttextAll='{}'.format(textAll)\n\t\tsaveDict(textAll)\n\t\treturn\n\t\n\ttextAll=textIn.eval_js(js)\n\t#textIn.text is unicode, it is need convert it in utf-8\n\ttextAll='{}'.format(textAll)\n\tsaveDict(textAll)\n\ndef clearSearch(sender):\n\tsearchText.text=''\n\t\t\ndef closeDictView(sender):\n\tif(len(dt.history)>0):\n\t\tdt.history.pop()\n\t\tif(len(dt.history)>0):\n\t\t\tsearchText.text=dt.history[len(dt.history)-1]\n\t\t\tdt.history.pop()\n\t\t\tdictEntry()\n\t\telse:\n\t\t\tmainDictView.x=1024\n\telse:\n\t\tmainDictView.x=1024\n\t\ndef setCommentaryTag(sender):\n\tpath=fileView['textfield1'].text\n\tpath=pathMain+'{}'.format(path)\n\twith open(path,\"r\") as f:\n\t\ttextFile=f.readlines()\n\t\t\t\t\t\t\t\t\t\t\t\t  \n\tfor key in dk.keyList:\n\t\tkey=key.rstrip('\\n')\n\t\tdk.get(key)\n\t\tc=dk.res\n\t\tif('__' in c):\n\t\t\ti=0\n\t\t\tkey=key.rstrip('\u0f0b')\n\t\t\tfor line in textFile:\n\t\t\t\ts=unicode(line)\n\t\t\t\ts=re.sub(u'[ _\\d\\ \"\t\\'\\*\\(\\)\\{\\}\\[\\]@\u2022#\\%\\&\u0f04\u0f05\u0f14\u0f34\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u0f20\u0f0e\u0f0d\u0f11\u0f08\u0f0c\u0f10\u0f0f\u0f3c\u0f3d\u0900-\u097f]',u\"\u0f0b\",s)\n\t\t\t\ts=re.sub(u'\u0f0b[\u0f0b]+',u\"\u0f0b\",s)\n\t\t\t\ts='{}'.format(s)\n\t\t\t\tif(key in s):\n\t\t\t\t\ttextFile[i]='#_'+textFile[i]\n\t\t\t\t\tbreak\n\t\t\t\ti+=1\n\twith open(path,\"w\") as f:\n\t\tf.writelines(textFile)\n\t\t\t\ndef buildSummary(sender):\n\tpath=fileView['textfield1'].text\n\tpath=pathMain+'{}'.format(path)\n\tres=''\n\twith open(path,\"r\") as f:\n\t\tfor line in f:\n\t\t\tif('#' in line):\n\t\t\t\tres+=line\t\n\tfileView['textfield1'].text='Dictionary/_res.txt'\n\tpath=pathMain+'Dictionary/_res.txt'\n\twith open(path,\"w\") as f:\n\t\tf.write(res)\n\topenText()\n\t\n\ndef fileCopy(path1,path2):\n\tprint copy\n\tf=open(path1, 'r')\n\tt=f.readlines()\n\t#print len(t)\n\tf.close()\n\tf=open(path2, 'w')\n\tf.writelines(t)\n\tf.close()\n\t\ndef sortDict(name):\n\tprint 'load {}'.format(name)\n\twith open(pathSave+'XML_DICT/'+name+'.txt') as f:\n\t\tstr=f.read()\n\t\tf.close()\n\t\tstr=str.replace('\\r','\\n')\n\t\td=str.split('\\n')\n\t\tprint len(d)\n\t\td.sort()\n\t\ti=0\n\t\ts=list()\n\t\tl=''\n\t\tfor line in d:\n\t\t\ti+=1\n\t\t\tline=line.replace('*','@')\n\t\t\tline=re.sub('[\\n\\r\\t ]*$','',line)\n\t\t\tif(l==line):\n\t\t\t\tcontinue\n\t\t\t\n\t\t\t#print line+'/'\n\t\t\t#print len(line)\n\t\t\t#if(i==10):\n\t\t\t\t#break\t\n\t\t\t\t\n\t\t\tl=line\n\t\t\ts.append(line+'\\n')\n\t\tf=open(pathSave+'XML_DICT/'+name+'_new.txt', 'w')\n\t\tf.writelines(s)\t\n\t\tf.close()\n\t\tprint len(s)\n\t\tprint 'done'\n\t\t\ndef loadPref():\n\tglobal Pref\n\tp=pathSave+'_pref_dict.txt'\n\ttry:\n\t\tio.open(p,'r')\n\texcept IOError:\n\t\tsavePref()\n\twith open(p,'r') as f:\n\t\tPref=pickle.load(f)\n\twhile len(Pref) < 5:\n\t\tPref.append('')\n\tfileView['textfield1'].text=Pref[1]\n\tif(Pref[2]==''):\n\t\tPref[2]='0'\n\tpageIndex.text=Pref[2]\n\t\t\ndef savePref():\n\tglobal Pref\n\tp=pathSave+'_pref_dict.txt'\n\twith open(p,'w') as f:\n\t\tpickle.dump(Pref,f)\n\t\t\n\n#sortDict('exportDictionary_sort')\n#sys.exit()\n\n\n\n#pData=pathSave+\"XML_DICT/DHARMABOOK.bin\"\t\n#v=GVector()\n#v.openData(pData)\t\n#print v.getStr(0)\n\n#s=' '\n#print ord(s)\n#dialogs.share_text('123')\n#sys.exit()\n\n\n\npData=pathSave+\"XML_DICT/_GVector.txt\"\t\npIndex=pathSave+\"XML_DICT/_GVectorIndex.txt\"\t\n\npData_=pathSave+\"XML_DICT/_GVector1.txt\"\t\npIndex_=pathSave+\"XML_DICT/_GVectorIndex1.txt\"\t\n\n\n#fileCopy(pData,pData_)\n#fileCopy(pIndex,pIndex_)\n#sys.exit()\n\nv=GVector()\nv.openData(pData)\t\ndt=dictBase()\ndk=copy.deepcopy(dt)\ndt.openData(v,pIndex)\n\n#os.unlink(pData)\n#os.unlink(pIndex)\n#loadDB()\n#print 'done'\n#s=dt.vData.getStr(88683)  #88684\n#print s\n#v.checkIndex(20)\n#test('\u0f40\u0f0b\u0f40\u0f0b',dt)\n\n#dt.close()\n#sys.exit()\n\ndk.dictKey={}\ndk.keyList=list()\ndk.data=list()\n\n#open translation dictionary\npData=pathSave+\"XML_DICT/_GVectorDict.txt\"\t\npIndex=pathSave+\"XML_DICT/_GVectorDictIndex.txt\"\t\n\nt=GVector()\nt.openData(pData)\t\n\t\ndk.openData(t,pIndex)\n\n#test('\u0f62\u0fa3\u0f0b',dk)\n\n#print 'l={} t={}'.format(len(dt.keyList), t2-t1)\n#print len(dt.keyList)\n\n\t\n#dt.close()\n#dk.close()\n#sys.exit()\n#print 'load DK'\n#dk.clear()\n#dk.loadTXT('word_dict','put')\n#dk.loadTXT('exportDictionaryRus','roots')\n#dt.close()\n#dk.normalisation()\n#print 'done'\n#s=dk.vData.getStr(21)\n#print s\n#dk.close()\n#sys.exit()\n\nview = ui.load_view()\t#super view\ntextIn=view['webview1']\nfileView=view['view1']\npageIndex=view['textview1']\nsearchText=view['textview2']\nsearchBtn=view['searchBtn']\nmainDictView=view['mainDictView']\nmainDictView.x=1024\nmainDictView.y=0\ndictView=mainDictView['webview1']\nfileView.x=1024\nfileView.y=0\nview.present('fullscreen',hide_title_bar=True)\n#view.present('popover')\n\n\nloadPref()\nopenText()\n#action_out = action_in\n#workflow.set_output(action_out)\n"}, "class": "WorkflowActionRunScript"}], "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad2,1", "systemVersion": "9.3.5"}, "icon": "TYPICONS-ALL_SPANNER.png", "type": "wkflw", "public": true, "name": "DictionaryGVector_words"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22www.buddism.ru%22%2C%20%22description%22%3A%20%22Dictionary%20access%20and%20translation%20GUI.%20Dictionary%20based%20%20on%20low%20level%20nosql%20database%20GVector.%20For%20key-value%20search%20used%20Phyton%20map.%20Dictionary%20can%20mange%20few%20Gb%20up%20to%201mln%20records.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22ui%22%3A%20%22%5B%5Cn%20%20%7B%5Cn%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22View%5C%22%2C%5Cn%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%5C%22tint_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.478000%2C1.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22Dictionary%5C%22%2C%5Cn%20%20%20%20%20%20%5C%22corner_radius%5C%22%20%3A%2011%2C%5Cn%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%5Cn%20%20%20%20%7D%2C%5Cn%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B0%2C%200%7D%2C%20%7B768%2C%20960%7D%7D%5C%22%2C%5Cn%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22WebView%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22webview1%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%223093D6E5-B0E7-4BBF-A0B2-0BA0E6E6F550%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22WH%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B0%2C%2052%7D%2C%20%7B768%2C%20908%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2017%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22label3%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22text_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%226F8ECBA6-02B4-485B-A2C7-D1FA0A907029%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B0%2C%200%7D%2C%20%7B355%2C%2052%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.285714%2C0.285714%2C0.285714%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22Close%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22close%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button3%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_width%5C%22%20%3A%201%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%226340362E-06C6-4603-82C9-78460C36CF91%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22corner_radius%5C%22%20%3A%2011%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B0%2C%2015%7D%2C%20%7B65%2C%2037%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.285714%2C0.285714%2C0.285714%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22Menu%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22menu%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button2%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22corner_radius%5C%22%20%3A%2011%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%223809643C-7FEA-4266-B769-6F5C6708458C%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_width%5C%22%20%3A%201%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B64%2C%2015%7D%2C%20%7B65%2C%2037%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2017%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22label2%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22text_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22F4AA9619-492D-4E9E-9100-F5527E07AE4D%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B352%2C%200%7D%2C%20%7B416%2C%2052%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2027%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button4%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22%3C%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22previousPage%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alpha%5C%22%20%3A%200.5%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%2221BD4B0A-224A-40FA-8CA8-D1FB198D27B4%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B660%2C%2015%7D%2C%20%7B36%2C%2034%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2027%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button5%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22%3E%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22nextPage%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alpha%5C%22%20%3A%200.5%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%2273387A16-9DD1-4005-AE02-C152A08129A1%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B729%2C%2015%7D%2C%20%7B39%2C%2034%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextView%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22center%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.142857%2C0.142857%2C0.142857%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2014%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22autosave_enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%220%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22text_color%5C%22%20%3A%20%5C%22RGBA%280.642857%2C0.642857%2C0.642857%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22textview1%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22corner_radius%5C%22%20%3A%203%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22editable%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_width%5C%22%20%3A%201%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%225BCAA7D4-46F6-4B12-BE9F-3CD2D20CC45F%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B690%2C%2018%7D%2C%20%7B44%2C%2031%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22View%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22mainDictView%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22BA42E2C9-3247-4A52-8870-8D1744178E83%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B291%2C%2082%7D%2C%20%7B773%2C%20960%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22WebView%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22webview1%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%224339937C-C5F4-4043-BCD7-6F63249C7AAD%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22WH%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B0%2C%2052%7D%2C%20%7B773%2C%20924%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button1%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22Close%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22closeDictView%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%2258112768-722A-4476-87A7-94FB7F5C7B32%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B0%2C%2015%7D%2C%20%7B69%2C%2037%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.285714%2C0.285714%2C0.285714%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22Save%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22save%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button6%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_width%5C%22%20%3A%201%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%2276247EF5-CFBC-49EC-9C68-EF442799D4CC%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22corner_radius%5C%22%20%3A%2011%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B128%2C%2015%7D%2C%20%7B65%2C%2037%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.285714%2C0.285714%2C0.285714%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22Translate%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22translate%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22searchBtn%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22corner_radius%5C%22%20%3A%2011%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22AB84DFCB-813B-4FA9-9D45-4F340A8ACB60%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_width%5C%22%20%3A%201%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B192%2C%2015%7D%2C%20%7B82%2C%2037%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.285714%2C0.285714%2C0.285714%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22FullRep%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22fullRep%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button1%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_width%5C%22%20%3A%201%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22F0705140-19B0-43FB-A1FC-1B9FACB70AB0%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22corner_radius%5C%22%20%3A%2011%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B273%2C%2015%7D%2C%20%7B82%2C%2037%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.285714%2C0.285714%2C0.285714%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22Dict%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22dictionary%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button7%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_width%5C%22%20%3A%201%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%227E50095D-B8F4-475E-A615-B4F7BD1D20B0%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22corner_radius%5C%22%20%3A%2011%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B354%2C%2015%7D%2C%20%7B80%2C%2037%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextView%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.142857%2C0.142857%2C0.142857%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2017%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22autosave_enabled%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22text_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.478431%2C1.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22textview2%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_width%5C%22%20%3A%201%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22editable%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22210854EA-F003-4475-931C-2CBCF0626D06%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B440%2C%2015%7D%2C%20%7B188%2C%2037%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button9%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22x%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22clearSearch%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%2210FB5460-494F-4282-AE2B-C9936059AF00%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B630%2C%2015%7D%2C%20%7B30%2C%2037%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22View%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22WH%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22view1%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22corner_radius%5C%22%20%3A%200%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_width%5C%22%20%3A%200%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.500000%2C0.500000%2C0.500000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%223A06E968-2FF4-41CE-821D-EF0BFFC5E90A%5C%22%5Cn%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B192%2C%20483%7D%2C%20%7B768%2C%20960%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2021%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22Open%20File%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22label1%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text_color%5C%22%20%3A%20%5C%22RGBA%280.857143%2C0.857143%2C0.857143%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22center%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22D9B3CEAD-5658-498B-8762-00542E67BF40%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B0%2C%2048%7D%2C%20%7B440%2C%2031%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2021%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22Main%20Menu%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22label5%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text_color%5C%22%20%3A%20%5C%22RGBA%280.857143%2C0.857143%2C0.857143%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22center%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.285714%2C0.285714%2C0.285714%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%2292E06CAC-42C8-47C9-AA09-F7C3763B5AC0%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B0%2C%2023%7D%2C%20%7B768%2C%2025%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2021%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button2%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22x%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22closeMenu%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.142857%2C0.142857%2C0.142857%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%2258AB4F3E-C7F7-4226-BDF1-6BAE23817D6A%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B0%2C%2023%7D%2C%20%7B70%2C%2056%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2021%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22Export%20Translation%20Dictionary%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22label6%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text_color%5C%22%20%3A%20%5C%22RGBA%280.857143%2C0.857143%2C0.857143%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22center%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%2266CDB9B7-43EF-4DBB-AF76-3877D43C1E31%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B439%2C%2048%7D%2C%20%7B329%2C%2031%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.142857%2C0.142857%2C0.142857%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2017%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22autosave_enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22Dictionary%5C%5C%2FexportTranslationDictionary.txt%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22textfield2%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_style%5C%22%20%3A%203%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22A09FA24B-C049-4CA4-991E-5768BEDF6396%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B448%2C%2087%7D%2C%20%7B314%2C%2046%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22Export%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22exportAction%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button3%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_width%5C%22%20%3A%201%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22BE09F7D2-6FF6-4378-9A96-5B9CF4A77E47%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22corner_radius%5C%22%20%3A%2011%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B448%2C%20141%7D%2C%20%7B314%2C%2043%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TableView%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%281.000000%2C1.000000%2C1.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22data_source_number_of_lines%5C%22%20%3A%201%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22tint_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22WH%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22row_height%5C%22%20%3A%2023%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22data_source_items%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22data_source_delete_enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22data_source_action%5C%22%20%3A%20%5C%22openFile%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22tableview1%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%227C524666-0F10-40ED-9353-60673C683C79%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22data_source_font_size%5C%22%20%3A%2012%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B0%2C%20378%7D%2C%20%7B440%2C%20582%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.142857%2C0.142857%2C0.142857%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2017%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22autosave_enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22Dictionary%5C%5C%2F%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22textfield1%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_style%5C%22%20%3A%203%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22B3726672-7091-4984-A42A-534110F46BBD%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B6%2C%2087%7D%2C%20%7B434%2C%2046%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TableView%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%281.000000%2C1.000000%2C1.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22data_source_number_of_lines%5C%22%20%3A%201%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22tint_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22row_height%5C%22%20%3A%2023%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22data_source_items%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22data_source_delete_enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22data_source_action%5C%22%20%3A%20%5C%22openDir%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22tableview2%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%223092BB82-2C3D-4C9B-95EC-200E9F45C85F%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22data_source_font_size%5C%22%20%3A%2016%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B0%2C%20162%7D%2C%20%7B440%2C%20194%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22Files%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22label2%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text_color%5C%22%20%3A%20%5C%22RGBA%280.857143%2C0.857143%2C0.857143%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22center%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22E013F9A3-6A98-42AB-80EA-B691955C2989%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B0%2C%20355%7D%2C%20%7B440%2C%2023%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22Folders%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22label3%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text_color%5C%22%20%3A%20%5C%22RGBA%280.857143%2C0.857143%2C0.857143%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22center%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%2289403B2B-78A6-46FB-A989-34068BE5AC1C%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B0%2C%20141%7D%2C%20%7B440%2C%2023%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.142857%2C0.142857%2C0.142857%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2017%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22autosave_enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22Dictionary%5C%5C%2FclearText.txt%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22textfield3%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_style%5C%22%20%3A%203%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%226785DB56-5400-479A-81B0-19E2E51E6C1F%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B448%2C%20247%7D%2C%20%7B314%2C%2046%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22Replace%20in%20folder%20by%20regExp%20from%20file%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22replaceRegExpFile%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button1%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22corner_radius%5C%22%20%3A%2011%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22D6BEBAD4-2953-488F-B14F-8EF89D3D600A%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_width%5C%22%20%3A%201%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B448%2C%20301%7D%2C%20%7B314%2C%2043%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2012%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22Replace%20and%20search%20in%20all%20files%20in%20directory%20by%20regExp%20%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22label4%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text_color%5C%22%20%3A%20%5C%22RGBA%280.857143%2C0.857143%2C0.857143%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22center%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22B4041CD0-B739-4584-BD8E-AD2D6E0897CE%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B448%2C%20201%7D%2C%20%7B314%2C%2020%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Label%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2012%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22from%20text%20file%20or%20from%20text%20field%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22label7%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text_color%5C%22%20%3A%20%5C%22RGBA%280.857143%2C0.857143%2C0.857143%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22center%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%224FD361A4-6DFF-4FE2-BA73-6CFCD0F0F499%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B448%2C%20219%7D%2C%20%7B314%2C%2020%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22Replace%20in%20folder%20by%20regExp%20from%20text%20field%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22replaceRegExp%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button4%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22corner_radius%5C%22%20%3A%2011%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%227880412A-82E0-44F7-B775-0FEB2B39861B%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_width%5C%22%20%3A%201%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B448%2C%20458%7D%2C%20%7B314%2C%2043%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.142857%2C0.142857%2C0.142857%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2017%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22autosave_enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22textfield4%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_style%5C%22%20%3A%203%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%229EF0FE5F-28A9-4C66-96E8-2F13D5D327F5%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B448%2C%20352%7D%2C%20%7B314%2C%2046%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.142857%2C0.142857%2C0.142857%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2017%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22autosave_enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22textfield5%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_style%5C%22%20%3A%203%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%224FABE866-9AF9-40F2-A482-E22ACA709C18%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B448%2C%20404%7D%2C%20%7B314%2C%2046%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22Replace%20in%20open%20file%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22replaceRegExpText%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button5%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22corner_radius%5C%22%20%3A%2011%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22FF5600D8-7367-41B5-8E8A-03E43F787AF9%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_width%5C%22%20%3A%201%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B448%2C%20509%7D%2C%20%7B314%2C%2043%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22Search%20in%20DHARMABOOK%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22searchInDharmabook%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button6%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22corner_radius%5C%22%20%3A%2011%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22DA3EA42D-07DC-4A1F-93BA-25BF130A28C9%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_width%5C%22%20%3A%201%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B448%2C%20614%7D%2C%20%7B314%2C%2043%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22Search%20in%20open%20file%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22searchInFile%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button7%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_width%5C%22%20%3A%201%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%2214CCB182-AAC6-4B6B-97C9-9A8B850A9B1E%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22corner_radius%5C%22%20%3A%2011%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B448%2C%20767%7D%2C%20%7B314%2C%2043%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22TextField%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.142857%2C0.142857%2C0.142857%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22alignment%5C%22%20%3A%20%5C%22left%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2017%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22autosave_enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22text_color%5C%22%20%3A%20%5C%22RGBA%280.000000%2C0.000000%2C0.000000%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22textfield6%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_style%5C%22%20%3A%203%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22A36CD691-F8F1-4985-8F91-9F654236FBDB%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B448%2C%20560%7D%2C%20%7B314%2C%2046%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22copyText%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22copyText%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button8%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_width%5C%22%20%3A%201%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%221FC890B1-758E-4E78-B997-A67BB2BF9689%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22corner_radius%5C%22%20%3A%2011%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B448%2C%20869%7D%2C%20%7B314%2C%2043%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B344%2C%20464%7D%2C%20%7B80%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22Export%20text%20by%20ID%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22exportTextByID%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button10%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_width%5C%22%20%3A%201%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22C44080CD-D4EE-4DA6-906C-B9DFF712DD76%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22corner_radius%5C%22%20%3A%2011%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B448%2C%20716%7D%2C%20%7B314%2C%2043%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B344%2C%20464%7D%2C%20%7B80%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22Search%20in%20DHARMABOOK%20full%20text%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22searchInDharmabookFullText%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button11%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22corner_radius%5C%22%20%3A%2011%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%2252A2694E-518F-45C1-B35C-5863258EC4D0%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_width%5C%22%20%3A%201%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B448%2C%20665%7D%2C%20%7B314%2C%2043%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22attributes%5C%22%20%3A%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22background_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B344%2C%20464%7D%2C%20%7B80%2C%2032%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_color%5C%22%20%3A%20%5C%22RGBA%280.214286%2C0.214286%2C0.214286%2C1.000000%29%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_size%5C%22%20%3A%2015%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22title%5C%22%20%3A%20%5C%22Search%20in%20text%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22enabled%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22flex%5C%22%20%3A%20%5C%22%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22action%5C%22%20%3A%20%5C%22searchInFileText%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22font_bold%5C%22%20%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22name%5C%22%20%3A%20%5C%22button9%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22border_width%5C%22%20%3A%201%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22uuid%5C%22%20%3A%20%5C%22A4717F3A-A8D4-4480-9AC8-CE48A59BBCC7%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22corner_radius%5C%22%20%3A%2011%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%22class%5C%22%20%3A%20%5C%22Button%5C%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22frame%5C%22%20%3A%20%5C%22%7B%7B448%2C%20818%7D%2C%20%7B314%2C%2043%7D%7D%5C%22%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22selected%5C%22%20%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%22nodes%5C%22%20%3A%20%5B%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%5D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%5D%5Cn%20%20%7D%5Cn%5D%22%2C%20%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20ui%5Cnimport%20console%5Cnimport%20pickle%5Cnimport%20re%5Cnimport%20io%5Cnimport%20time%5Cnimport%20xml.parsers.expat%5Cnimport%20sys%5Cnimport%20os%5Cnimport%20copy%5Cnimport%20urlparse%5Cnimport%20dialogs%5Cnfrom%20array%20import%20%2A%5Cn%5CnpathMain%3Dos.getcwd%28%29%5CnpathMain%3Dre.sub%28r%27Library.%2A%27%2C%27%27%2CpathMain%29%5CnpathMain%2B%3D%27Documents%2F%27%5CnpathDir%3D%27%27%5CnpathSave%3DpathMain%2B%27Dictionary%2F%27%5CntextFile%3Dlist%28%29%5Cndict%3Dlist%28%29%5CnpageSize%3D100%5Cn%23pageStyle%3D%27practice.html%27%5CnpageStyle%3D%27page.html%27%5Cn%23pageStyle%3D%27practice_read.html%27%5CnreadMode%3D1%5Cn%5Cnaction_in%20%3D%20workflow.get_input%28%29%5Cn%5Cn%5Cn%23enum%5CnREAD%3D1%20%23%5Cu0440%5Cu0435%5Cu0436%5Cu0438%5Cu043c%20%5Cu0447%5Cu0442%5Cu0435%5Cu043d%5Cu0438%5Cu044f%20%5Cu0441%20%5Cu043f%5Cu0435%5Cu0440%5Cu0435%5Cu0432%5Cu043e%5Cu0434%5Cu043e%5Cu043c%20%5Cu0441%5Cu043b%5Cu043e%5Cu0433%5Cu043e%5Cu0432%20%5Cu043f%5Cu043e%20%5Cu043f%5Cu0430%5Cu043c%5Cu044f%5Cu0442%5Cu0438%5CnALL%3D1%5CnAUTO%3D0%5CnEMPTY%3D-1%5CnEDIT%3D1%5CnLINK%3D0%5CnCHINK_SIZE%3D1024%2A40%5CnVALUE_SIZE%3D1024%2A20%5CnMB%3D1024%2A1000%5CnSTART_MARK%3D%27%40_dict_%2F%27%5CnEND_MARK%3D%27%40_end_%2F%27%5CnEMPTY_MARK%3D%27_%2A_%27%5CnMARK%3D%27%3A%7C%3A%27%5CnJS%3D0%5CnUSER%3D1%5CnTRANSLATE%3D1%5CnDICT_REPORT_TEXT%3D2%5CnDICT_REPORT_USER%3D3%5CnFULL_REPORT%3D4%5Cn%5CnINDEX_RESIZE%3D4%20%23%5Cu0432%5Cu043e%20%5Cu0441%5Cu043a%5Cu043e%5Cu043b%5Cu044c%5Cu043a%5Cu043e%20%5Cu0440%5Cu0430%5Cu0437%20%5Cu0431%5Cu0443%5Cu0434%5Cu0435%5Cu0442%20%5Cu0443%5Cu0432%5Cu0435%5Cu043b%5Cu0438%5Cu0447%5Cu0438%5Cu0432%5Cu0430%5Cu0442%5Cu044c%5Cu0441%5Cu044f%20%5Cu0440%5Cu0430%5Cu0437%5Cu043c%5Cu0435%5Cu0440%20%5Cu0438%5Cu043d%5Cu0434%5Cu0435%5Cu043a%5Cu0441%5Cu0430%5CnFILE_RESIZE%3D2%20%23%5Cu0432%5Cu043e%20%5Cu0441%5Cu043a%5Cu043e%5Cu043b%5Cu044c%5Cu043a%5Cu043e%20%5Cu0440%5Cu0430%5Cu0437%20%5Cu0431%5Cu0443%5Cu0434%5Cu0435%5Cu0442%20%5Cu0443%5Cu0432%5Cu0435%5Cu043b%5Cu0438%5Cu0447%5Cu0438%5Cu0432%5Cu0430%5Cu0442%5Cu044c%5Cu0441%5Cu044f%20%5Cu0440%5Cu0430%5Cu0437%5Cu043c%5Cu0435%5Cu0440%20%5Cu0444%5Cu0430%5Cu0439%5Cu043b%5Cu0430%5CnFILE_RESIZE_DELTA%3D100%20%23%5Cu043a%5Cu043e%5Cu043b%5Cu0438%5Cu0447%5Cu0435%5Cu0441%5Cu0442%5Cu0432%5Cu043e%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0435%5Cu0439%20%5Cu043d%5Cu0430%20%5Cu043a%5Cu043e%5Cu0442%5Cu043e%5Cu0440%5Cu043e%5Cu0435%20%5Cu0443%5Cu0432%5Cu0435%5Cu043b%5Cu0438%5Cu0447%5Cu0438%5Cu0432%5Cu0430%5Cu0435%5Cu0442%5Cu0441%5Cu044f%20%5Cu0440%5Cu0430%5Cu0437%5Cu043c%5Cu0435%5Cu0440%20%5Cu0444%5Cu0430%5Cu0439%5Cu043b%5Cu0430%20%5Cu0432%20%5Cu0434%5Cu043e%5Cu043f%5Cu043e%5Cu043b%5Cu043d%5Cu0435%5Cu043d%5Cu0438%5Cu0438%20%5Cu043a%20%5Cu0443%5Cu0432%5Cu0435%5Cu043b%5Cu0438%5Cu0447%5Cu0435%5Cu043d%5Cu0438%5Cu044e%20%5Cu0432%20FILE_RESIZE%20%5Cu0440%5Cu0430%5Cu0437.%28%5Cu043d%5Cu0443%5Cu0436%5Cu0435%5Cu043d%20%5Cu043f%5Cu0440%5Cu0438%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0438%20%5Cu0431%5Cu043e%5Cu043b%5Cu044c%5Cu0448%5Cu0438%5Cu0445%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0435%5Cu0439%20%5Cu0432%20%5Cu043d%5Cu0435%5Cu0431%5Cu043e%5Cu043b%5Cu044c%5Cu0448%5Cu043e%5Cu0439%20%5Cu0444%5Cu0430%5Cu0439%5Cu043b%29%5CnPOOL_SIZE%3D16384%20%20%5Cn%5CnMEMORY_LOCATION%3D0%5CnMMAP_LOCATION%3D1%5Cn%5Cnglobal%20Pref%5CnPref%3Dlist%28%29%5Ct%5Ct%20%23preferences%5Cn%5Cnclass%20GVector%28%29%3A%5Cn%5Ct%23protected%5Cn%5CtdataPath%3D%27%27%5Cn%20%20%23MemoryFile%5Cn%5CtdataMFile%3D%27%27%5Cn%20%20%23GVector%20%2Aparent%5Cn%20%20%23public%5Cn%5Ctindex%3D%5B%5D%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%23%5Cu043c%5Cu0430%5Cu0441%5Cu0441%5Cu0438%5Cu0432%20%5Cu0438%5Cu043d%5Cu0434%5Cu0435%5Cu043a%5Cu0441%5Cu043e%5Cu0432%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0435%5Cu0439%20%5Cu0432%20GVector%5Cn%5CtinnerData%3Darray%28%27L%27%29%5Ct%5Ct%5Ct%20%23%5Cu043c%5Cu0430%5Cu0441%5Cu0441%5Cu0438%5Cu0432%20%5Cu0440%5Cu0430%5Cu0437%5Cu043c%5Cu0435%5Cu0449%5Cu0435%5Cu043d%5Cu043d%5Cu044b%5Cu0439%20%5Cu0432%20%5Cu043d%5Cu0430%5Cu0447%5Cu0430%5Cu043b%5Cu0435%20%5Cu0444%5Cu0430%5Cu0439%5Cu043b%5Cu0430%2C%20%5Cu0432%20%5Cu043a%5Cu043e%5Cu0442%5Cu043e%5Cu0440%5Cu044b%5Cu0439%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu044b%5Cu0432%5Cu0430%5Cu044e%5Cu0442%5Cu0441%5Cu044f%20%5Cu0432%5Cu043d%5Cu0443%5Cu0442%5Cu0440%5Cu0435%5Cu043d%5Cu043d%5Cu0438%5Cu0435%20%5Cu043f%5Cu0435%5Cu0440%5Cu0435%5Cu043c%5Cu0435%5Cu043d%5Cu043d%5Cu044b%5Cu0435%5Cn%20%20%23%5Cu0432%5Cu043d%5Cu0443%5Cu0442%5Cu0440%5Cu0435%5Cu043d%5Cu043d%5Cu0438%5Cu0435%20%5Cu043f%5Cu0435%5Cu0440%5Cu0435%5Cu043c%5Cu0435%5Cu043d%5Cu043d%5Cu044b%5Cu0435%5Cn%5CtrecordCount%3D0%20%20%5Ct%20%20%5Ct%5Ct%5Ct%20%20%23%5Cu043a%5Cu043e%5Cu043b%5Cu0438%5Cu0447%5Cu0435%5Cu0441%5Cu0442%5Cu0432%5Cu043e%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0435%5Cu0439%20%5Cu0432%20%5Cu0432%5Cu0435%5Cu043a%5Cu0442%5Cu043e%5Cu0440%5Cu0435%5Cn%5CtrecordArraySize%3D0%5Ct%5Ct%5Ct%5Ct%20%20%23%5Cu0440%5Cu0430%5Cu0437%5Cu043c%5Cu0435%5Cu0440%20%5Cu0444%5Cu0430%5Cu0439%5Cu043b%5Cu0430%20%5Cu0443%5Cu0447%5Cu0435%5Cu0442%5Cu0430%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0435%5Cu0439%5Cn%5CtdataSize%3D0%20%20%5Ct%20%5Ct%20%20%5Ct%5Ct%5Ct%5Ct%20%20%23%5Cu0440%5Cu0430%5Cu0437%5Cu043c%5Cu0435%5Cu0440%20%5Cu0437%5Cu0430%5Cu043d%5Cu0438%5Cu043c%5Cu0430%5Cu0435%5Cu043c%5Cu044b%5Cu0439%20%5Cu0430%5Cu043a%5Cu0442%5Cu0443%5Cu0430%5Cu043b%5Cu044c%5Cu043d%5Cu044b%5Cu043c%5Cu0438%20%5Cu0434%5Cu0430%5Cu043d%5Cu043d%5Cu044b%5Cu043c%5Cu0438%5Cn%5CtpoolSize%3D0%20%20%5Ct%20%5Ct%20%20%5Ct%5Ct%5Ct%5Ct%20%20%23%5Cu043e%5Cu0431%5Cu0449%5Cu0438%5Cu0439%20%5Cu0440%5Cu0430%5Cu0437%5Cu043c%5Cu0435%5Cu0440%20%5Cu0444%5Cu0430%5Cu0439%5Cu043b%5Cu0430%20%5Cu0432%5Cu0435%5Cu043a%5Cu0442%5Cu043e%5Cu0440%5Cu0430%5Cn%5CtlockFlag%3D0%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%20%20%23%5Cu0444%5Cu043b%5Cu0430%5Cu0433%20%5Cu0431%5Cu043b%5Cu043e%5Cu043a%5Cu0438%5Cu0440%5Cu043e%5Cu0432%5Cu043a%5Cu0438%20%5Cu0447%5Cu0442%5Cu0435%5Cu043d%5Cu0438%5Cu044f-%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0438%5Cn%5CtindexOffset%3D0%5Ct%20%5Ct%20%20%5Ct%5Ct%5Ct%20%20%23%5Cu0430%5Cu0434%5Cu0440%5Cu0435%5Cu0441%20%5Cu0440%5Cu0430%5Cu0437%5Cu043c%5Cu0435%5Cu0449%5Cu0435%5Cu043d%5Cu0438%5Cu044f%20%5Cu043c%5Cu0430%5Cu0441%5Cu0441%5Cu0438%5Cu0432%5Cu0430%20%5Cu0438%5Cu043d%5Cu0434%5Cu0435%5Cu043a%5Cu0441%5Cu0430%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0435%5Cu0439.%20%5Cu043e%5Cu0442%5Cu0441%5Cu0447%5Cu0438%5Cu0442%5Cu044b%5Cu0432%5Cu0430%5Cu0435%5Cu0442%5Cu0441%5Cu044f%20%5Cu043e%5Cu0442%20%5Cu043d%5Cu0430%5Cu0447%5Cu0430%5Cu043b%5Cu0430%20%5Cu0444%5Cu0430%5Cu0439%5Cu043b%5Cu0430%5Cn%5CtvectorID%3D0%5Cn%5CtdataLocation%3D0%5Cn%5Ct%5Cn%5Ct%5Cn%5Ctdef%20__init__%28self%29%3A%5Cn%5Ct%5Ctpass%5Cn%5Ct%5Cn%5Ctdef%20openData%28self%2CdataPath%29%3A%5Cn%5Ct%5Ctself.dataPath%3DdataPath%5Cn%5Ct%5Cttry%3A%5Cn%5Ct%5Ct%5Ctopen%28dataPath%2C%20%27r%27%29%5Cn%5Ct%5Ctexcept%3A%5Cn%5Ct%5Ct%5Ctf%3Dopen%28dataPath%2C%20%27w%27%29%5Cn%5Ct%5Ct%5Ctf.close%28%29%5Cn%5Ct%5Ct%5Cn%5Ct%5Ctc%3Dos.stat%28dataPath%29%5Cn%5Ct%5Ctself.dataMFile%3Dos.open%28dataPath%2Cos.O_RDWR%29%5Cn%5Ct%5Ctself.poolSize%3Dc.st_size%5Cn%5Ct%5Ctprint%20%27poolSize%3D%7B%3A%2C%7D%27.format%28self.poolSize%29%5Cn%5Ct%5Ctself.init%28%29%5Cn%5Ct%5Ct%5Ct%5Cn%5Ctdef%20init%28self%29%3A%5Cn%5Ct%5Ctself.dataLocation%3DMMAP_LOCATION%20%5Ct%20%5Ct%5Ct%20%5Ct%20%20%23%5Cu0444%5Cu043b%5Cu0430%5Cu0433%20%5Cu0440%5Cu0430%5Cu0437%5Cu043c%5Cu0435%5Cu0449%5Cu0435%5Cu043d%5Cu0438%5Cu044f%20%5Cu0434%5Cu0430%5Cu043d%5Cu043d%5Cu044b%5Cu0445%20%5Cu0432%20%5Cu043e%5Cu043f%5Cu0435%5Cu0440%5Cu0430%5Cu0442%5Cu0438%5Cu0432%5Cu043d%5Cu043e%5Cu0439%20%20%5Cu0438%5Cu043b%5Cu0438%20%20%5Cu043e%5Cu0442%5Cu043e%5Cu0431%5Cu0440%5Cu0430%5Cu0436%5Cu0430%5Cu0435%5Cu043c%5Cu043e%5Cu0439%20%5Cu043f%5Cu0430%5Cu043c%5Cu044f%5Cu0442%5Cu0438%5Cn%5Ct%5Ct%23cout%3C%3C%5C%22%20dataMFile-%3Esize%28%29%3D%7B%7D%5C%22.format%28dataMFile-%3Esize%28%29%5Cn%5Ct%5Ct%23%5Cu043f%5Cu0440%5Cu043e%5Cu0432%5Cu0435%5Cu0440%5Cu044f%5Cu0435%5Cu043c%20%5Cu044f%5Cu0432%5Cu043b%5Cu044f%5Cu0435%5Cu0442%5Cu0441%5Cu044f%20%5Cu043b%5Cu0438%20%5Cu0444%5Cu0430%5Cu0439%5Cu043b%20%5Cu0444%5Cu0430%5Cu0439%5Cu043b%5Cu043e%5Cu043c%20GVector%5Cn%5Ct%5Ctif%28self.poolSize%3CPOOL_SIZE%29%3A%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%23%5Cu043d%5Cu043e%5Cu0432%5Cu044b%5Cu0439%20%5Cu0444%5Cu0430%5Cu0439%5Cu043b%20GVector%20%5Ct%20%5Ct%5Cn%5Ct%5Ct%5Ctprint%20%27new%20vector%27%5Cn%5Ct%5Ct%5Ctfor%20i%20in%20range%2816%29%3A%20self.innerData.append%280%29%5Cn%5Ct%5Ct%5Ctself.innerData%5B0%5D%3D0xfffffffa%5Ct%5Ct%20%20%20%23%5Cu043c%5Cu0430%5Cu0440%5Cu043a%5Cu0435%5Cu0440%20%5Cu043d%5Cu0430%5Cu043b%5Cu0438%5Cu0447%5Cu0438%5Cu044f%20GVector%5Cn%5Ct%5Ct%5Ctself.recordArraySize%3D1024%5Cn%5Ct%5Ct%5Ctself.recordCount%3D0%5Cn%5Ct%5Ct%5Ctself.dataSize%3D%28self.recordArraySize%29%2A4%2B64%5Cn%5Ct%5Ct%5Ctself.indexOffset%3D64%5Cn%5Ct%5Ct%5Ctself.vectorID%3D0xffffffff%5Cn%5Ct%5Ct%5Ctself.lockFlag%3D0%5Cn%5Ct%5Ct%5CtindexName%3D%5C%22name%3A%7C%3Adata%5C%22%5Cn%5Ct%5Ct%5Ct%23index%3D%28uint%2A%29%28data%2B%2AindexOffset%29%20%20%23%5Cu0438%5Cu043d%5Cu0438%5Cu0446%5Cu0438%5Cu0430%5Cu043b%5Cu0438%5Cu0437%5Cu0430%5Cu0446%5Cu0438%5Cu044f%20%5Cu0438%5Cu043d%5Cu0434%5Cu0435%5Cu043a%5Cu0441%5Cu0430%5Cn%5Ct%5Ct%5Ctself.push_back%28indexName%29%20%5Ct%20%5Ct%20%5Ct%20%5Ct%20%5Ct%5Ct%20%20%5Ct%23%5Cu0438%5Cu043d%5Cu0438%5Cu0446%5Cu0438%5Cu0430%5Cu043b%5Cu0438%5Cu0437%5Cu0430%5Cu0446%5Cu0438%5Cu044f%20%5Cu0438%5Cu043d%5Cu0434%5Cu0435%5Cu043a%5Cu0441%5Cu0430%20%5Cu0438%5Cu043c%5Cu0435%5Cu043d%5Cu043d%5Cu044b%5Cu0445%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0435%5Cu0439%5Cn%5Ct%5Ct%5Ctself.recordCount%3D1%5Cn%5Ct%5Ct%5Ctself.setSpace%28POOL_SIZE%29%5Cn%5Ct%5Ct%5Ctself.saveData%28%29%5Ct%5Ct%5Ct%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%23%5Cu043f%5Cu0440%5Cu043e%5Cu0432%5Cu0435%5Cu0440%5Cu044f%5Cu0435%5Cu043c%20%5Cu044f%5Cu0432%5Cu043b%5Cu044f%5Cu0435%5Cu0442%5Cu0441%5Cu044f%20%5Cu043b%5Cu0438%20%5Cu0444%5Cu0430%5Cu0439%5Cu043b%20%5Cu0444%5Cu0430%5Cu0439%5Cu043b%5Cu043e%5Cu043c%20GVector%5Cn%5Ct%5Ct%5Ctself.readData%28%29%5Cn%5Ct%5Ct%5Ctif%28self.innerData%5B0%5D%21%3D0xfffffffa%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctprint%20%5C%22no%20valid%20GVector%20file%20%5C%22%2B%20self.dataPath%5Cn%5Ct%5Ct%5Ct%5Ctreturn%5Cn%5Ct%5Ct%5Ct%5Cn%5Ctdef%20saveData%28self%29%3A%5Ct%5Ct%5Ct%5Cn%5Ct%5Ct%5Ctself.innerData%5B1%5D%3Dself.poolSize%5Ct%5Ct%5Ct%5Ct%20%20%20%23%5Cu0440%5Cu0430%5Cu0437%5Cu043c%5Cu0435%5Cu0440%20%5Cu0444%5Cu0430%5Cu0439%5Cu043b%5Cu0430%20%5Cu0432%5Cu0435%5Cu043a%5Cu0442%5Cu043e%5Cu0440%5Cu0430%5Cn%5Ct%5Ct%5Ctself.innerData%5B2%5D%3Dself.recordCount%20%20%5Ct%5Ct%5Ct%20%23%5Cu043a%5Cu043e%5Cu043b%5Cu0438%5Cu0447%5Cu0435%5Cu0441%5Cu0442%5Cu0432%5Cu043e%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0435%5Cu0439%20%5Cu0432%20%5Cu0432%5Cu0435%5Cu043a%5Cu0442%5Cu043e%5Cu0440%5Cu0435%5Cn%5Ct%5Ct%5Ctself.innerData%5B3%5D%3Dself.recordArraySize%5Ct%5Ct%23%5Cu0440%5Cu0430%5Cu0437%5Cu043c%5Cu0435%5Cu0440%20%5Cu0444%5Cu0430%5Cu0439%5Cu043b%5Cu0430%20%5Cu0443%5Cu0447%5Cu0435%5Cu0442%5Cu0430%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0435%5Cu0439%5Cn%5Ct%5Ct%5Ctself.innerData%5B4%5D%3Dself.dataSize%20%5Ct%20%5Ct%5Ct%5Ct%20%20%20%23%5Cu0440%5Cu0430%5Cu0437%5Cu043c%5Cu0435%5Cu0440%20%5Cu0437%5Cu0430%5Cu043d%5Cu0438%5Cu043c%5Cu0430%5Cu0435%5Cu043c%5Cu044b%5Cu0439%20%5Cu0430%5Cu043a%5Cu0442%5Cu0443%5Cu0430%5Cu043b%5Cu044c%5Cu043d%5Cu044b%5Cu043c%5Cu0438%20%5Cu0434%5Cu0430%5Cu043d%5Cu043d%5Cu044b%5Cu043c%5Cu0438%5Cn%5Ct%5Ct%5Ctself.innerData%5B5%5D%3Dself.lockFlag%5Ct%5Ct%5Ct%5Ct%20%20%20%23%5Cu0444%5Cu043b%5Cu0430%5Cu0433%20%5Cu0431%5Cu043b%5Cu043e%5Cu043a%5Cu0438%5Cu0440%5Cu043e%5Cu0432%5Cu043a%5Cu0438%20%5Cu0447%5Cu0442%5Cu0435%5Cu043d%5Cu0438%5Cu044f-%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0438%5Cn%5Ct%5Ct%5Ctself.innerData%5B6%5D%3Dself.indexOffset%5Ct%20%5Ct%20%5Ct%5Ct%5Ct%23%5Cu0430%5Cu0434%5Cu0440%5Cu0435%5Cu0441%20%5Cu0440%5Cu0430%5Cu0437%5Cu043c%5Cu0435%5Cu0449%5Cu0435%5Cu043d%5Cu0438%5Cu044f%20%5Cu043c%5Cu0430%5Cu0441%5Cu0441%5Cu0438%5Cu0432%5Cu0430%20%5Cu0438%5Cu043d%5Cu0434%5Cu0435%5Cu043a%5Cu0441%5Cu0430%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0435%5Cu0439.%20%5Cu043e%5Cu0442%5Cu0441%5Cu0447%5Cu0438%5Cu0442%5Cu044b%5Cu0432%5Cu0430%5Cu0435%5Cu0442%5Cu0441%5Cu044f%20%5Cu043e%5Cu0442%20%5Cu043d%5Cu0430%5Cu0447%5Cu0430%5Cu043b%5Cu0430%20%5Cu0444%5Cu0430%5Cu0439%5Cu043b%5Cu0430%5Cn%5Ct%5Ct%5Ctself.innerData%5B7%5D%3Dself.vectorID%20%5Ct%20%5Ct%5Ct%5Ct%20%20%20%23%5Cu0438%5Cu043d%5Cu0434%5Cu0435%5Cu0445%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0438%2C%20%5Cu0432%20%5Cu043a%5Cu043e%5Cu0442%5Cu043e%5Cu0440%5Cu043e%5Cu0439%20GVector%20%5Cu0440%5Cu0430%5Cu0437%5Cu043c%5Cu0435%5Cu0449%5Cu0435%5Cu043d%20%5Cu0432%20%5Cu0440%5Cu043e%5Cu0434%5Cu0438%5Cu0442%5Cu0435%5Cu043b%5Cu044c%5Cu0441%5Cu043a%5Cu043e%5Cu043c%20%5Cu0432%5Cu0435%5Cu043a%5Cu0442%5Cu043e%5Cu0440%5Cu0435%5Cn%5Ct%5Ct%5Ct%5Cn%5Ct%5Ct%5Ctstr%3Darray.tostring%28self.innerData%29%5Cn%5Ct%5Ct%5Ctos.lseek%28self.dataMFile%2C0%2Cos.SEEK_SET%29%5Cn%5Ct%5Ct%5Ctos.write%28self.dataMFile%2Cstr%29%5Ct%5Cn%5Ct%5Ct%5Cn%5Ctdef%20readData%28self%29%3A%5Cn%5Ct%5Ctos.lseek%28self.dataMFile%2C0%2Cos.SEEK_SET%29%5Cn%5Ct%5Ctstr%3Dos.read%28self.dataMFile%2C64%29%5Cn%5Ct%5Ctself.innerData%3Darray%28%27L%27%29%5Cn%5Ct%5Ctself.innerData.fromstring%28str%29%5Cn%5Ct%5Ct%23print%20self.innerData%5Cn%5Ct%5Ctself.poolSize%3Dself.innerData%5B1%5D%5Ct%5Ct%5Ct%5Ct%20%20%20%23%5Cu0440%5Cu0430%5Cu0437%5Cu043c%5Cu0435%5Cu0440%20%5Cu0444%5Cu0430%5Cu0439%5Cu043b%5Cu0430%20%5Cu0432%5Cu0435%5Cu043a%5Cu0442%5Cu043e%5Cu0440%5Cu0430%5Cn%5Ct%5Ctself.recordCount%3Dself.innerData%5B2%5D%20%20%5Ct%5Ct%5Ct%20%23%5Cu043a%5Cu043e%5Cu043b%5Cu0438%5Cu0447%5Cu0435%5Cu0441%5Cu0442%5Cu0432%5Cu043e%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0435%5Cu0439%20%5Cu0432%20%5Cu0432%5Cu0435%5Cu043a%5Cu0442%5Cu043e%5Cu0440%5Cu0435%5Cn%5Ct%5Ctself.recordArraySize%3Dself.innerData%5B3%5D%5Ct%5Ct%23%5Cu0440%5Cu0430%5Cu0437%5Cu043c%5Cu0435%5Cu0440%20%5Cu0444%5Cu0430%5Cu0439%5Cu043b%5Cu0430%20%5Cu0443%5Cu0447%5Cu0435%5Cu0442%5Cu0430%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0435%5Cu0439%5Cn%5Ct%5Ctself.dataSize%3Dself.innerData%5B4%5D%20%5Ct%20%5Ct%5Ct%5Ct%20%20%20%23%5Cu0440%5Cu0430%5Cu0437%5Cu043c%5Cu0435%5Cu0440%20%5Cu0437%5Cu0430%5Cu043d%5Cu0438%5Cu043c%5Cu0430%5Cu0435%5Cu043c%5Cu044b%5Cu0439%20%5Cu0430%5Cu043a%5Cu0442%5Cu0443%5Cu0430%5Cu043b%5Cu044c%5Cu043d%5Cu044b%5Cu043c%5Cu0438%20%5Cu0434%5Cu0430%5Cu043d%5Cu043d%5Cu044b%5Cu043c%5Cu0438%5Cn%5Ct%5Ctself.lockFlag%3Dself.innerData%5B5%5D%5Ct%5Ct%5Ct%5Ct%20%20%20%23%5Cu0444%5Cu043b%5Cu0430%5Cu0433%20%5Cu0431%5Cu043b%5Cu043e%5Cu043a%5Cu0438%5Cu0440%5Cu043e%5Cu0432%5Cu043a%5Cu0438%20%5Cu0447%5Cu0442%5Cu0435%5Cu043d%5Cu0438%5Cu044f-%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0438%5Cn%5Ct%5Ctself.indexOffset%3Dself.innerData%5B6%5D%5Ct%20%5Ct%20%5Ct%5Ct%5Ct%23%5Cu0430%5Cu0434%5Cu0440%5Cu0435%5Cu0441%20%5Cu0440%5Cu0430%5Cu0437%5Cu043c%5Cu0435%5Cu0449%5Cu0435%5Cu043d%5Cu0438%5Cu044f%20%5Cu043c%5Cu0430%5Cu0441%5Cu0441%5Cu0438%5Cu0432%5Cu0430%20%5Cu0438%5Cu043d%5Cu0434%5Cu0435%5Cu043a%5Cu0441%5Cu0430%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0435%5Cu0439.%20%5Cu043e%5Cu0442%5Cu0441%5Cu0447%5Cu0438%5Cu0442%5Cu044b%5Cu0432%5Cu0430%5Cu0435%5Cu0442%5Cu0441%5Cu044f%20%5Cu043e%5Cu0442%20%5Cu043d%5Cu0430%5Cu0447%5Cu0430%5Cu043b%5Cu0430%20%5Cu0444%5Cu0430%5Cu0439%5Cu043b%5Cu0430%5Cn%5Ct%5Ctself.vectorID%3Dself.innerData%5B7%5D%20%5Ct%20%5Ct%5Ct%5Ct%20%20%20%23%5Cu0438%5Cu043d%5Cu0434%5Cu0435%5Cu0445%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0438%2C%20%5Cu0432%20%5Cu043a%5Cu043e%5Cu0442%5Cu043e%5Cu0440%5Cu043e%5Cu0439%20GVector%20%5Cu0440%5Cu0430%5Cu0437%5Cu043c%5Cu0435%5Cu0449%5Cu0435%5Cu043d%20%5Cu0432%20%5Cu0440%5Cu043e%5Cu0434%5Cu0438%5Cu0442%5Cu0435%5Cu043b%5Cu044c%5Cu0441%5Cu043a%5Cu043e%5Cu043c%20%5Cu0432%5Cu0435%5Cu043a%5Cu0442%5Cu043e%5Cu0440%5Cu0435%5Cn%5Ct%5Ct%5Cn%5Ctdef%20mPut%28self%2Coffset%2Cstr%29%3A%5Cn%5Ct%5Ctos.lseek%28self.dataMFile%2Coffset%2Cos.SEEK_SET%29%5Cn%5Ct%5Ctos.write%28self.dataMFile%2Cstr%29%5Cn%5Ct%5Ct%5Cn%5Ctdef%20mPutInt%28self%2Coffset%2Cvalue%29%3A%5Cn%5Ct%5Ctt%3Darray%28%27L%27%29%5Cn%5Ct%5Ctt.append%28value%29%5Cn%5Ct%5Ctstr%3Dt.tostring%28%29%5Cn%5Ct%5Ctos.lseek%28self.dataMFile%2Coffset%2Cos.SEEK_SET%29%5Cn%5Ct%5Ctos.write%28self.dataMFile%2Cstr%29%5Cn%5Ct%5Ct%5Cn%5Cn%5Ctdef%20mGet%28self%2Coffset%2Csize%29%3A%5Cn%5Ct%5Ctos.lseek%28self.dataMFile%2Coffset%2Cos.SEEK_SET%29%5Cn%5Ct%5Ctreturn%20os.read%28self.dataMFile%2Csize%29%5Cn%5Ct%5Cn%5Ctdef%20mGetInt%28self%2Coffset%29%3A%5Cn%5Ct%5Ct%23print%20%27of%20%7B%7D%27.format%28offset%29%5Cn%5Ct%5Ctt%3Darray%28%27L%27%29%5Cn%5Ct%5Ctos.lseek%28self.dataMFile%2Coffset%2Cos.SEEK_SET%29%5Cn%5Ct%5Ctstr%3Dos.read%28self.dataMFile%2C4%29%5Cn%5Ct%5Ctt.fromstring%28str%29%5Cn%5Ct%5Ctreturn%20t%5B0%5D%5Cn%5Ct%5Cn%5Ctdef%20setSpace%28self%2Cspace%29%3A%5Cn%5Ct%5Ctif%28self.vectorID%3D%3D0xffffffff%29%3A%5Cn%5Ct%5Ct%5Ctif%28self.dataLocation%3D%3DMEMORY_LOCATION%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctprint%201%5Cn%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ctos.ftruncate%28self.dataMFile%2Cspace%29%5Cn%5Ct%5Ct%5Ct%5Ctself.poolSize%3Dspace%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctprint%203%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Cn%5Ct%5Ct%5Ct%5Cn%5Ctdef%20close%28self%29%3A%5Cn%5Ct%5Ctself.saveData%28%29%5Cn%5Ct%5Ctos.close%28self.dataMFile%29%5Ct%5Ct%5Cn%5Ct%5Ct%5Cn%5Ct%5Ct%5Ct%5Cn%5Ct%23%5Cu0434%5Cu043e%5Cu0431%5Cu0430%5Cu0432%5Cu043b%5Cu0435%5Cu043d%5Cu0438%5Cu0435%20%5Cu043d%5Cu043e%5Cu0432%5Cu043e%5Cu0439%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0438%20%5Cu0432%20GVector%5Cn%5Ctdef%20push_back%28self%2Cstr%29%3A%5Cn%5Ct%5Ctsize%3Dlen%28str%29%5Ct%5Ct%5Cn%5Ct%5Ct%23%5Cu043f%5Cu0440%5Cu043e%5Cu0432%5Cu0435%5Cu0440%5Cu044f%5Cu0435%5Cu043c%20%5Cu0434%5Cu043e%5Cu0441%5Cu0442%5Cu0430%5Cu0442%5Cu043e%5Cu0447%5Cu043d%5Cu043e%20%5Cu043b%5Cu0438%20%5Cu043c%5Cu0435%5Cu0441%5Cu0442%5Cu0430%20%5Cu0432%20%5Cu043c%5Cu0430%5Cu0441%5Cu0441%5Cu0438%5Cu0432%5Cu0435%20%5Cu0438%5Cu043d%5Cu0434%5Cu0435%5Cu043a%5Cu0441%5Cu0430%5Cn%5Ct%5Ctif%28self.recordArraySize%3Cself.recordCount%2B1%29%3A%5Cn%5Ct%5Ct%5Ctself.recordArraySize%3Dself.recordCount%2B1%5Cn%5Ct%5Ct%5Ctprint%20%5C%22resize%20GVector%20index%20recordArraySize%3D%7B%3A%2C%7D%20recordCount%3D%7B%7D%20self.poolSize%3D%7B%3A%2C%7D%5C%22.format%28self.recordArraySize%2Cself.recordCount%2Cself.poolSize%29%5Cn%5Ct%5Ct%5Ct%23%5Cu0443%5Cu0432%5Cu0435%5Cu043b%5Cu0438%5Cu0447%5Cu0438%5Cu0432%5Cu0430%5Cu0435%5Cu043c%20%5Cu043c%5Cu0430%5Cu0441%5Cu0441%5Cu0438%5Cu0432%20%5Cu0438%5Cu043d%5Cu0434%5Cu0435%5Cu043a%5Cu0441%5Cu0430%20%5Cu0438%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu044b%5Cu0432%5Cu0430%5Cu0435%5Cu043c%20%5Cu0435%5Cu0433%5Cu043e%20%5Cu043a%5Cu0430%5Cu043a%20%5Cu043d%5Cu043e%5Cu0432%5Cu0443%5Cu044e%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu044c%5Cn%5Ct%5Ct%5Ct%23%5Cu043f%5Cu0440%5Cu043e%5Cu0432%5Cu0435%5Cu0440%5Cu044f%5Cu0435%5Cu043c%20%5Cu0434%5Cu043e%5Cu0441%5Cu0442%5Cu0430%5Cu0442%5Cu043e%5Cu0447%5Cu043d%5Cu043e%20%5Cu043b%5Cu0438%20%5Cu043c%5Cu0435%5Cu0441%5Cu0442%5Cu0430%20%5Cu0432%20%5Cu043f%5Cu0443%5Cu043b%5Cu0435%5Cn%5Ct%5Ct%5Ctif%28self.recordArraySize%2AINDEX_RESIZE%2Bself.dataSize%3Eself.poolSize%29%3A%5Cn%5Ct%5Ct%5Ct%5CtnewSize%3Dself.poolSize%2B%28self.recordArraySize%2B1%29%2AINDEX_RESIZE%5Cn%5Ct%5Ct%5Ct%5Ctprint%20%27start%20resize%20pool%20for%20index.%20New%20size%3D%7B%3A%2C%7D%27.format%28newSize%29%5Cn%5Ct%5Ct%5Ct%5Ct%23print%20%5C%22vectorID_%3D%7B%7D%5C%22.format%28self.vectorID%5Cn%5Ct%5Ct%5Ct%5Ctself.setSpace%28newSize%29%5Ct%5Cn%5Ct%5Ct%5Ct%23%5Cu043a%5Cu043e%5Cu043f%5Cu0438%5Cu0440%5Cu0443%5Cu0435%5Cu043c%20%5Cu0438%5Cu043d%5Cu0434%5Cu0435%5Cu0445%5Cn%5Ct%5Ct%5Cts%3Dself.mGet%28self.indexOffset%2C%28self.recordArraySize-1%29%2A4%29%5Cn%5Ct%5Ct%5Ctself.mPut%28self.dataSize%2Cs%29%5Cn%5Ct%5Ct%5Ctself.recordArraySize%3Dself.recordArraySize%2AINDEX_RESIZE%5Cn%5Ct%5Ct%5Ctself.indexOffset%3Dself.dataSize%5Cn%5Ct%5Ct%5Ctself.dataSize%2B%3Dself.recordArraySize%2A4%5Cn%5Ct%5Ct%23cout%3C%3C%5C%22%20poolSize1%3D%7B%7D%5C%22.format%28self.poolSize%3C%3C%5C%22%20dataSize%3D%7B%7D%5C%22.format%28self.dataSize%5Cn%5Ct%5Ct%23%5Cu043f%5Cu0440%5Cu043e%5Cu0432%5Cu0435%5Cu0440%5Cu044f%5Cu0435%5Cu043c%20%5Cu0434%5Cu043e%5Cu0441%5Cu0442%5Cu0430%5Cu0442%5Cu043e%5Cu0447%5Cu043d%5Cu043e%20%5Cu043b%5Cu0438%20%5Cu043c%5Cu0435%5Cu0441%5Cu0442%5Cu0430%20%5Cu0432%20%5Cu043f%5Cu0443%5Cu043b%5Cu0435%20%5Cu0434%5Cu043b%5Cu044f%20%5Cu043d%5Cu043e%5Cu0432%5Cu043e%5Cu0439%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0438%5Cn%5Ct%5Ctif%28self.dataSize%2Bsize%2B256%3Eself.poolSize%29%3A%5Cn%5Ct%5Ct%5CtnewSize%3D%28self.poolSize%29%2AFILE_RESIZE%2Bsize%2AFILE_RESIZE_DELTA%5Cn%5Ct%5Ct%5Ctif%28newSize%3Cself.dataSize%2Bsize%2B256%29%3A%5Cn%5Ct%5Ct%5Ct%5CtnewSize%3Dint%28%28self.dataSize%2Bsize%2B256%29%2A1.5%29%5Cn%5Ct%5Ct%5Ctprint%20%5C%22%40resize%20GVector%20file%20new%20poolSize%3D%7B%3A%2C%7D%20bytes%20c3%5C%22.format%28newSize%29%5Cn%5Ct%5Ct%5Ctself.setSpace%28newSize%29%5Ct%5Cn%20%5Ct%5Ct%23%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu044b%5Cu0432%5Cu0430%5Cu0435%5Cu043c%20%5Cu0434%5Cu0430%5Cu043d%5Cu043d%5Cu044be%5Cn%5Ct%5Ctself.mPutInt%28self.dataSize%2Csize%29%20%5Ct%20%5Ct%5Ct%5Ct%5Ct%20%20%23%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu044b%5Cu0432%5Cu0430%5Cu0435%5Cu043c%20%5Cu0434%5Cu043b%5Cu0438%5Cu043d%5Cu043d%5Cu0443%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0438%5Cn%5Ct%5Ctself.mPut%28self.dataSize%2B4%2Cstr%29%5Ct%5Ct%5Ct%5Ct%5Ct%20%20%20%23%5Cu043a%5Cu043e%5Cu043f%5Cu0438%5Cu0440%5Cu0443%5Cu0435%5Cu043c%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu044c%5Cn%5Ct%5Ct%23%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu044b%5Cu0432%5Cu0430%5Cu0435%5Cu043c%20%5Cu0430%5Cu0434%5Cu0440%5Cu0435%5Cu0441%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0438%20%5Cu0432%20%5Cu0438%5Cu043d%5Cu0434%5Cu0435%5Cu043a%5Cu0441%5Cn%5Ct%5Ctself.mPutInt%28self.indexOffset%2Bself.recordCount%2A4%2Cself.dataSize%29%5Ct%5Ct%5Cn%5Ct%5Ctself.recordCount%3Dself.recordCount%2B1%5Cn%5Ct%5Ctself.dataSize%3Dself.dataSize%2Bsize%2B4%5Cn%5Ct%5Ct%5Cn%5Ct%5Ctself.saveData%28%29%5Ct%5Ct%5Cn%5Ct%5Ct%23print%20%5C%22new%20data%5C%22%5Cn%5Ct%5Ct%23print%20%5C%22innerData%3D%7B%7D%5C%22.format%28self.innerData%29%5Cn%5Ct%5Ct%23print%20%5C%22poolSize%3D%7B%7D%5C%22.format%28self.poolSize%29%5Cn%5Ct%5Ct%23print%20%5C%22recordCount%3D%7B%7D%5C%22.format%28self.recordCount%29%5Cn%5Ct%5Ct%23print%20%5C%22recordArraySize%3D%7B%7D%5C%22.format%28self.recordArraySize%29%5Cn%5Ct%5Ct%23print%20%5C%22dataSize%3D%7B%7D%5C%22.format%28self.dataSize%29%5Cn%5Ct%5Ct%23print%20%5C%22indexOffset%3D%7B%7D%5C%22.format%28self.indexOffset%29%5Cn%5Ct%5Ct%5Cn%5Ctdef%20resize%28self%2Csize%2CrecordSize%29%3A%5Cn%5Ct%5Ctsize%2B%3D1%20%20%23%5Cu043f%5Cu043b%5Cu044e%5Cu0441%20%5Cu0438%5Cu043c%5Cu0435%5Cu043d%5Cu043d%5Cu0430%5Cu044f%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu044c%5Cn%5Ct%5Ctif%28size%3Eself.recordCount%29%3A%5Cn%5Ct%5Ct%5Ctif%28size%3Eself.recordArraySize%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctself.recordArraySize%3Dsize%5Cn%5Ct%5Ct%5Ct%5Ctif%28self.recordArraySize%2Bself.dataSize%3Eself.poolSize%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5CtnewSize%3Dself.poolSize%2B%28self.recordArraySize%2B1%29%2AINDEX_RESIZE%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctself.setSpace%28newSize%29%5Cn%5Ct%5Ct%5Ct%5Ct%23%5Cu043a%5Cu043e%5Cu043f%5Cu0438%5Cu0440%5Cu0443%5Cu0435%5Cu043c%20%5Cu0438%5Cu043d%5Cu0434%5Cu0435%5Cu0445%5Cn%5Ct%5Ct%5Ct%5Ctstr%3Dself.mGet%28self.indexOffset%2C%28self.recordArraySize-1%29%2A4%29%5Cn%5Ct%5Ct%5Ct%5Ctself.mPut%28self.dataSize%2Cstr%29%5Cn%5Ct%5Ct%5Ct%5Ctself.recordArraySize%3Dself.recordArraySize%2AINDEX_RESIZE%5Cn%5Ct%5Ct%5Ct%5Ctself.indexOffset%3Dself.dataSize%5Cn%5Ct%5Ct%5Ct%5Ctself.dataSize%2B%3Dself.recordArraySize%2A4%5Cn%5Ct%5Ct%5CtnewSize%3Dsize%2A%28recordSize%2B4%29%2Bself.recordArraySize%2A4%2B64%5Ct%5Cn%5Ct%5Ct%5Ctif%28newSize%3Eself.poolSize%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctself.setSpace%28newSize%29%5Cn%5Ct%5Ct%5Ct%23%5Cu0438%5Cu043d%5Cu0438%5Cu0446%5Cu0438%5Cu0430%5Cu043b%5Cu0438%5Cu0437%5Cu0438%5Cu0440%5Cu0443%5Cu0435%5Cu043c%20%5Cu0438%5Cu043d%5Cu0434%5Cu0435%5Cu043a%5Cu0441%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0438%5Cn%5Ct%5Ct%5Ctfor%20i%20in%20range%28self.recordCount%2Csize%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctself.mPutInt%28self.indexOffset%2Bi%2A4%2C0%29%5Cn%5Ct%5Ctself.recordCount%3Dsize%5Cn%5Ct%5Ct%5Cn%5Ctdef%20putStr%28self%2CindexRecord%2Cstr%29%3A%5Cn%5Ct%5CtindexRecord%2B%3D1%20%20%23%5Cu043f%5Cu0440%5Cu043e%5Cu043f%5Cu0443%5Cu0441%5Cu043a%5Cu0430%5Cu0435%5Cu043c%20%5Cu0438%5Cu043d%5Cu0434%5Cu0435%5Cu043a%5Cu0441%20%5Cu0438%5Cu043c%5Cu0435%5Cu043d%5Cu043d%5Cu044b%5Cu0445%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0435%5Cu0439%5Cn%5Ct%5Ctoffset%3Dself.mGetInt%28self.indexOffset%2BindexRecord%2A4%29%5Cn%5Ct%5Ct%23print%20%27offset%20%7B%7D%27.format%28offset%29%5Cn%5Ct%5Ctif%28offset%3D%3D0%29%3A%20%23%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu044c%20%5Cu0435%5Cu0449%5Cu0435%20%5Cu043d%5Cu0435%20%5Cu0438%5Cu043d%5Cu0438%5Cu0446%5Cu0438%5Cu0430%5Cu043b%5Cu0438%5Cu0437%5Cu0438%5Cu0440%5Cu043e%5Cu0432%5Cu0430%5Cu043d%5Cu0430%5Cn%5Ct%5Ct%5Ctsize%3D0%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctsize%3Dself.mGetInt%28offset%29%5Cn%5Ct%5Ctif%28len%28str%29%3Esize%29%3A%5Cn%5Ct%5Ct%5Ctsize%3Dlen%28str%29%5Cn%5Ct%5Ct%5Ct%23%5Cu0443%5Cu043a%5Cu0430%5Cu0437%5Cu0430%5Cu0432%5Cu0430%5Cu0435%5Cu043c%20%5Cu0447%5Cu0442%5Cu043e%20%5Cu043c%5Cu0435%5Cu0441%5Cu0442%5Cu043e%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0438%20%5Cu0441%5Cu0432%5Cu043e%5Cu0431%5Cu043e%5Cu0434%5Cu043d%5Cu043e%2C%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu044b%5Cu0432%5Cu0430%5Cu0435%5Cu043c%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu044c%20%5Cu043d%5Cu0430%20%5Cu043d%5Cu043e%5Cu0432%5Cu043e%5Cu0435%20%5Cu043c%5Cu0435%5Cu0441%5Cu0442%5Cu043e%20%5Cu0438%20%5Cu043e%5Cu0431%5Cu043d%5Cu043e%5Cu0432%5Cu043b%5Cu044f%5Cu0435%5Cu043c%20%5Cu0438%5Cu043d%5Cu0434%5Cu0435%5Cu0445%5Cn%5Ct%5Ct%5Ctif%28offset%3E0%29%3A%20%5Cn%5Ct%5Ct%5Ct%5Ctself.mPutInt%28offset%2C0%29%5Cn%5Ct%5Ct%5Ct%23%5Cu043f%5Cu0440%5Cu043e%5Cu0432%5Cu0435%5Cu0440%5Cu044f%5Cu0435%5Cu043c%20%5Cu0434%5Cu043e%5Cu0441%5Cu0442%5Cu0430%5Cu0442%5Cu043e%5Cu0447%5Cu043d%5Cu043e%20%5Cu043b%5Cu0438%20%5Cu043c%5Cu0435%5Cu0441%5Cu0442%5Cu0430%20%5Cu0432%20%5Cu043f%5Cu0443%5Cu043b%5Cu0435%20%5Cu0434%5Cu043b%5Cu044f%20%5Cu043d%5Cu043e%5Cu0432%5Cu043e%5Cu0439%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0438%5Cn%5Ct%5Ct%5Ctif%28self.dataSize%2Bsize%2B256%3Eself.poolSize%29%3A%5Cn%5Ct%5Ct%5Ct%5CtnewSize%3D%28self.poolSize%29%2AFILE_RESIZE%2Bsize%2AFILE_RESIZE_DELTA%5Cn%5Ct%5Ct%5Ct%5Ctprint%20%5C%22%40resize%20GVector%20file%20new%20poolSize%3D%7B%3A%2C%7D%20bytes%20c1%5C%22.format%28newSize%29%5Cn%5Ct%5Ct%5Ct%5Ctself.setSpace%28newSize%29%5Ct%5Cn%20%20%20%5Ct%5Ct%23%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu044b%5Cu0432%5Cu0430%5Cu0435%5Cu043c%20%5Cu0434%5Cu0430%5Cu043d%5Cu043d%5Cu044be%5Cn%5Ct%5Ct%5Ctself.mPutInt%28self.dataSize%2Csize%29%20%5Ct%20%5Ct%20%23%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu044b%5Cu0432%5Cu0430%5Cu0435%5Cu043c%20%5Cu0434%5Cu043b%5Cu0438%5Cu043d%5Cu043d%5Cu0443%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0438%5Cn%5Ct%5Ct%5Ctself.mPut%28self.dataSize%2B4%2Cstr%29%5Ct%5Ct%5Ct%5Ct%5Ct%20%20%20%23%5Cu043a%5Cu043e%5Cu043f%5Cu0438%5Cu0440%5Cu0443%5Cu0435%5Cu043c%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu044c%5Cn%5Ct%5Ct%5Ct%23%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu044b%5Cu0432%5Cu0430%5Cu0435%5Cu043c%20%5Cu0430%5Cu0434%5Cu0440%5Cu0435%5Cu0441%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0438%20%5Cu0432%20%5Cu0438%5Cu043d%5Cu0434%5Cu0435%5Cu043a%5Cu0441%5Cn%5Ct%5Ct%5Ctself.mPutInt%28self.indexOffset%2BindexRecord%2A4%2Cself.dataSize%29%5Ct%5Ct%5Ct%5Ct%5Cn%5Ct%5Ct%5Ctself.dataSize%3Dself.dataSize%2Bsize%2B4%5Ct%5Ct%5Ct%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%23%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu044b%5Cu0432%5Cu0430%5Cu0435%5Cu043c%20%5Cu0434%5Cu0430%5Cu043d%5Cu043d%5Cu044be%5Cn%5Ct%5Ct%5Ctsize%3Dlen%28str%29%5Cn%5Ct%5Ct%5Ctself.mPutInt%28offset%2Csize%29%20%5Ct%20%5Ct%5Ct%5Ct%5Ct%20%20%23%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu044b%5Cu0432%5Cu0430%5Cu0435%5Cu043c%20%5Cu0434%5Cu043b%5Cu0438%5Cu043d%5Cu043d%5Cu0443%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0438%5Cn%5Ct%5Ct%5Ctself.mPut%28offset%2B4%2Cstr%29%5Ct%5Ct%5Ct%5Ct%5Ct%20%20%20%20%23%5Cu043a%5Cu043e%5Cu043f%5Cu0438%5Cu0440%5Cu0443%5Cu0435%5Cu043c%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu044c%5Cn%5Ct%5Ctself.saveData%28%29%5Ct%5Cn%5Ct%5Ct%5Cn%5Ctdef%20getStr%28self%2CindexRecord%29%3A%5Cn%5Ct%5CtindexRecord%2B%3D1%20%20%23%5Cu043f%5Cu0440%5Cu043e%5Cu043f%5Cu0443%5Cu0441%5Cu043a%5Cu0430%5Cu0435%5Cu043c%20%5Cu0438%5Cu043d%5Cu0434%5Cu0435%5Cu043a%5Cu0441%20%5Cu0438%5Cu043c%5Cu0435%5Cu043d%5Cu043d%5Cu044b%5Cu0445%20%5Cu0437%5Cu0430%5Cu043f%5Cu0438%5Cu0441%5Cu0435%5Cu0439%5Cn%5Ct%5Ctif%28indexRecord%3E%3Dself.recordCount%29%3A%5Cn%5Ct%5Ct%5Ctreturn%20EMPTY%5Cn%5Ct%5Ctoffset%3Dself.mGetInt%28self.indexOffset%2BindexRecord%2A4%29%5Cn%5Ct%5Ct%23print%20%27%20offset%20%7B%7D%27.format%28offset%29%5Cn%5Ct%5Ctsize%3Dself.mGetInt%28offset%29%5Cn%5Ct%5Ct%23print%20%27%20size%20%7B%7D%27.format%28size%29%5Cn%5Ct%5Ctif%28size%2Boffset%2B4%3Eself.dataSize%29%3A%5Cn%5Ct%5Ct%5Ctprint%20%27index%3D%7B%7D%20offset%3D%7B%7D%20size%3D%7B%7D%20recordCount%3D%7B%7D%27.format%28indexRecord%2Coffset%2Csize%2Cself.recordCount%29%5Cn%5Ct%5Ct%5Ctprint%20%5C%22size%20out%20of%20range%5C%22%5Cn%5Ct%5Ct%5Ctreturn%20EMPTY%5Cn%5Ct%5Ctreturn%20self.mGet%28offset%2B4%2Csize%29%5Ct%5Ct%5Cn%5Cn%5Ctdef%20checkIndex%28self%2Climit%29%3A%5Cn%5Ct%5Ctprint%20%27check%20index%27%5Cn%5Ct%5Ctfor%20i%20in%20range%28limit%29%3A%5Cn%5Ct%5Ct%5Ctt%3Dself.mGetInt%28self.indexOffset%2Bi%2A4%29%5Cn%5Ct%5Ct%5Ctprint%20t%5Cn%5Ct%5Ct%5Ctd%3Dself.mGetInt%28t%29%5Cn%5Ct%5Ct%5Ctprint%20%27%20%20%20%20d%3D%7B%7D%27.format%28d%29%5Cn%5Ct%5Ct%5Ct%5Cn%5Ctdef%20printStr%28self%2Cstr%29%3A%5Cn%5Ct%5Ctt%3Dmemoryview%28str%29%5Cn%5Ct%5Ctg%3Dt.tolist%28%29%5Cn%5Ct%5Ctg%3Dg%5B%3A25%5D%5Cn%5Ct%5Ctprint%20g%5Cn%5Cn%27%27%27%5Ct%5CnpData%3DpathSave%2B%5C%22XML_DICT%2F_GVectorTest.txt%5C%22%5Ct%5Cn%23os.unlink%28pData%29%5Ct%5Cn%5Cnv%3DGVector%28%29%5Cnv.openData%28pData%29%5Ct%5Ct%5Cnprint%20%27start%27%5Cnst%3Dv.getStr%28996%29%5Cnprint%20st%5Cn%5Cn%23v.checkIndex%2810%29%5Cnsys.exit%28%29%5Cn%5Ct%5Cnfor%20i%20in%20range%281000%29%3A%5Cn%5Ct%23print%20i%5Cn%5Ct%23s%3D%271234567890%20wwwwwwwwwwwwwwwwwwwwwwwwwwwww%201234567890%20www%20%7B%7D%27.format%28i%29%5Cn%5Ct%23v.push_back%28s%29%5Cn%5Cts%3D%271234567890%20www%20%7B%7D%27.format%28i%29%5Cn%5Ctv.putStr%28i%2Cs%29%5Cn%5Ct%5Cn%5Ctst%3Dv.getStr%28i%29%5Cn%5Ctif%28st%21%3Ds%29%3A%5Cn%5Ct%5Ctprint%20%27no%20data%27%5Cn%5Ct%5Ctprint%20i%5Cn%5Ct%5Ctprint%20%27retutn%20str%3D%27%5Cn%5Ct%5Ctv.printStr%28st%29%5Cn%5Ct%5Ctprint%20st%5Cn%5Ct%5Ctbreak%5Cn%5Cnprint%20%27done%27%5Ct%5Cnsys.exit%28%29%5Cn%27%27%27%5Ct%5Cn%5Cn%5Ct%5Cnclass%20dictBase%20%28%29%3A%5Cn%5CtkeyTib%3D%27%27%5Cn%5CtkeyList%3Dlist%28%29%5Cn%5Ctdata%3Dlist%28%29%5Cn%5Cthistory%3Dlist%28%29%5Cn%5CtvData%3DGVector%28%29%5Cn%5CtpImdex%3D%27%27%20%20%23path%20to%20index%20file%5Cn%5CtdictKey%3D%7B%7D%5Cn%5CtdictSize%3D0%5Cn%5CtfileSize%3D0%5Cn%5Ctstep%3D0%5Cn%5CtflagSave%3D0%5Cn%5CtemptyStr%3D%27%27%5Cn%5CtemptyRec%3DEMPTY%20%23dict%20of%20empty%20record%20index%5Cn%5Ctres%3D%27%27%5Cn%5Ctinsert%3D0%5Cn%5Ctvalue%3D%27%27%5Cn%5CteditMode%3DLINK%5Cn%5CtmainMode%3DTRANSLATE%5Cn%5Ctid%3D1%5Cn%5Ct%5Cn%5Ctdef%20__init__%28self%29%3A%5Cn%5Ct%5Ctpass%5Cn%5Ct%5Ct%5Cn%5Ctdef%20openData%28self%2CvData%2CpIndex%29%3A%5Cn%5Ct%5Ctself.vData%3DvData%5Cn%5Ct%5Ctself.pIndex%3DpIndex%5Cn%5Ct%5Ct%23t1%3Dtime.time%28%29%5Cn%5Ct%5Cttry%3A%5Cn%5Ct%5Ct%5Ctopen%28pIndex%2C%20%27r%27%29%5Cn%5Ct%5Ctexcept%3A%5Ct%5Cn%5Ct%5Ct%5Ctf%3Dopen%28pIndex%2C%20%27w%27%29%5Cn%5Ct%5Ct%5Ctf.close%28%29%5Cn%5Ct%5Ct%5Cn%5Ct%5Ctf%3Dopen%28pIndex%2C%20%27r%27%29%5Cn%5Ct%5Ctself.keyList%3Df.readlines%28%29%5Cn%5Ct%5Ctf.close%28%29%5Cn%5Ct%5Cti%3D0%5Cn%5Ct%5Ctfor%20line%20in%20self.keyList%3A%5Cn%5Ct%5Ct%5Ctself.dictKey%5Bline%5D%3Di%5Cn%5Ct%5Ct%5Cti%2B%3D1%5Cn%5Ct%5Ct%23t2%3Dtime.time%28%29%5Cn%5Ct%5Ct%23print%20%27time%3D%7B%7D%27.format%28t2-t1%29%5Cn%5Cn%5Ct%5Ctself.emptyStr%3D%27%27.zfill%28CHINK_SIZE%29%5Cn%5Ct%5Ctself.data.append%28%27%27%29%5Cn%5Ct%5Ctself.data.append%28%27%27%29%5Cn%5Ct%5Ctself.data.append%28%27%27%29%5Ct%5Ct%5Cn%5Ct%5Ct%5Cn%5Ctdef%20close%28self%29%3A%5Cn%5Ct%5Ctself.vData.close%28%29%5Cn%5Ct%5Ctif%28self.flagSave%3D%3D1%29%3A%5Cn%5Ct%5Ct%5Ctf%3Dopen%28pIndex%2C%20%27w%27%29%5Cn%5Ct%5Ct%5Ctf.writelines%28self.keyList%29%5Cn%5Ct%5Ct%5Ctf.close%28%29%5Ct%5Cn%5Ct%5Cn%5Ctdef%20has_key%28self%2Ckey%29%3A%5Cn%5Ct%5Ctif%28key%20in%20self.dictKey%29%3A%5Cn%5Ct%5Ct%5Ctstr%3Dself.dictKey%5Bkey%5D%5Cn%5Ct%5Ct%5Ctc%3Dint%28str%29%5Cn%5Ct%5Ct%5Ctreturn%20c%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctreturn%20-1%5Cn%5Ct%5Ct%5Ct%5Cn%5Ctdef%20get%28self%2Ckey%29%3A%5Cn%5Ct%5Ctself.res%3D%27%27%5Cn%5Ct%5Ctif%28len%28self.keyList%29%3D%3D0%29%3A%5Cn%5Ct%5Ct%5Ctprint%20%27no%20data%27%5Cn%5Ct%5Ct%5Ctreturn%20self.res%5Cn%5Ct%5Cti%3Dself.has_key%28key%2B%27%5C%5Cn%27%29%5Ct%5Cn%5Ct%5Ct%23print%20i%5Cn%5Ct%5Ctif%28i%3EEMPTY%29%3A%5Cn%5Ct%5Ct%5Ctself.res%3Dself.vData.getStr%28i%29%5Cn%5Ct%5Ct%5Ctreturn%20self.res%20%5Cn%5Ct%5Ctreturn%20self.res%5Cn%5Ct%5Ct%5Ct%5Cn%5Ct%5Cn%5Ctdef%20put%28self%2Ckey%2Cvalue%29%3A%5Cn%5Ct%5Ctif%28self.step%3E1000%29%3A%20%20%23progress%5Cn%5Ct%5Ct%5Ctself.step%3D0%5Cn%5Ct%5Ct%5Ctprint%20%27%7B%7D%20%7B%7D%27.format%28self.insert%2Clen%28self.keyList%29%29%5Cn%5Ct%5Ctself.step%2B%3D1%5Cn%5Ct%5Ctself.insert%2B%3D1%5Cn%5Ct%5Ct%5Cn%5Ct%5Cti%3Dself.has_key%28key%2B%27%5C%5Cn%27%29%5Cn%5Ct%5Ct%23print%20%27has%20key%3D%7B%7D%27.format%28i%29%5Cn%5Ct%5Ctif%28i%3D%3DEMPTY%29%3A%5Cn%5Ct%5Ct%5Ctself.flagSave%3D1%5Cn%5Ct%5Ct%5Ctself.dictKey%5Bkey%2B%27%5C%5Cn%27%5D%3Dlen%28self.keyList%29%5Cn%5Ct%5Ct%5Ctself.keyList.append%28key%2B%27%5C%5Cn%27%29%5Cn%5Ct%5Ct%5Ctself.vData.push_back%28value%29%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctself.vData.putStr%28i%2Cvalue%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Cn%5Ct%5Ct%5Ct%5Cn%5Ctdef%20add%28self%2Ckey%2Cvalue%29%3A%5Cn%5Ct%5Ctself.get%28key%29%5Cn%5Ct%5Ctstr%3Dself.res%5Cn%5Ct%5Ctif%28len%28str%29%29%3A%5Cn%5Ct%5Ct%5Ctstr%3Dstr%2BEND_MARK%2Bvalue%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctstr%3Dkey%2B%27%3A%7C%3A%27%2Bvalue%5Cn%5Ct%5Ctself.put%28key%2Cstr%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Cn%5Ctdef%20push%28self%2Ckey%2Cvalue%29%3A%5Cn%5Ct%5Ctself.get%28key%29%5Cn%5Ct%5Ctstr%3Dself.res%5Cn%5Ct%5Ctif%28len%28str%29%29%3A%5Cn%5Ct%5Ct%5Ctstr%3Dvalue%2BEND_MARK%2Bstr%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctstr%3Dkey%2B%27%3A%7C%3A%27%2Bvalue%5Cn%5Ct%5Ctself.put%28key%2Cstr%29%5Cn%5Ct%5Ct%5Cn%5Ctdef%20rep%28self%2Ckey%2Cvalue%2CdName%29%3A%5Cn%5Ct%5Ct%27%27%27%5Cn%5Ct%5Ctself.get%28key%29%5Cn%5Ct%5Ctstr%3Dself.res%5Cn%5Ct%5Ctif%28len%28str%29%29%3A%5Cn%5Ct%5Ct%5Ctc%3Dstr.split%28END_MARK%29%5Cn%5Ct%5Ct%5Ctstr%3D%27%27%5Cn%5Ct%5Ct%5Ctfor%20line%20in%20c%3A%5Cn%5Ct%5Ct%5Ct%5Ctif%28dName%20in%20line%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctcontinue%5Cn%5Ct%5Ct%5Ct%5Ctstr%2B%3Dline%2BEND_MARK%5Cn%5Ct%5Ct%5Ctstr%2B%3Dvalue%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctstr%3Dkey%2B%27%3A%7C%3A%27%2Bvalue%5Cn%5Ct%5Ctself.put%28key%2Cstr%29%5Cn%5Ct%5Ct%27%27%27%5Cn%5Ct%5Ct%5Cn%5Ctdef%20saveInd%28self%29%3A%5Cn%5Ct%5Ctwith%20open%28pIndex%2C%20%27w%27%29%20as%20f%3A%5Cn%5Ct%5Ct%5Ctf.writelines%28self.keyList%29%5Cn%5Ct%5Ct%5Ct%23print%20%27done%20save%27%5Cn%5Ct%5Ctself.insert%3D0%5Cn%5Ct%5Ctself.step%3D0%5Cn%5Ct%5Cn%5Ctdef%20rem%28self%2Ckey%29%3A%5Cn%5Ct%5Ctkey_n%3Dkey%2B%27%5C%5Cn%27%5Cn%5Ct%5Ctif%28key_n%20in%20self.dictKey%29%3A%5Cn%5Ct%5Ct%5Ctself.put%28key%2CEMPTY_MARK%29%5Cn%5Ct%5Ct%5Ct%5Cn%5Ctdef%20clear%28self%29%3A%5Cn%5Ct%5Ctf%3Dopen%28pIndex%2C%20%27w%27%29%5Cn%5Ct%5Ctf.close%28%29%5Cn%5Ct%5Ctself.vData.resize%280%2C128%29%5Cn%5Ct%5Ctself.vData.saveData%28%29%5Cn%5Ct%5Ctself.keyList%3Dlist%28%29%5Cn%5Ct%5Ctself.dictKey%3D%7B%7D%5Cn%5Ct%5Ct%5Cn%5Ctdef%20normalisation%28self%29%3A%5Cn%5Ct%5Ctstep%3D0%5Cn%5Ct%5Ctfor%20i%20in%20range%281%2Clen%28self.keyList%29%29%3A%5Cn%5Ct%5Ct%5Ctif%28step%3E%3D1000%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctprint%20i%5Cn%5Ct%5Ct%5Ct%5Ctstep%3D0%5Cn%5Ct%5Ct%5Ctstep%2B%3D1%5Cn%5Ct%5Ct%5Ctstr%3Dself.vData.getStr%28i%29%5Cn%5Ct%5Ct%5Ctlines%3Dstr.split%28MARK%29%5Cn%5Ct%5Ct%5Ctif%28len%28lines%29%3C4%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctcontinue%5Cn%5Ct%5Ct%5Ctif%28len%28str%29%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctstr%3Dre.sub%28r%27%5E%5B%5E%3A%5D%2A%3A%5C%5C%7C%3A%27%2C%20%27%27%2Cstr%29%5Cn%5Ct%5Ct%5Ct%5Ctif%28len%28str%29%3C10%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctprint%20%27no%20data%20in%20str%27%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctprint%20i%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%23print%20str%5Cn%5Ct%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctself.vData.putStr%28i%2Cstr%29%5Cn%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ctprint%20%27no%20data%27%5Cn%5Ct%5Ct%5Ct%5Ctprint%20i%5Cn%5Ct%5Ct%5Cn%5Ct%5Cn%5Ctdef%20formatReport%28self%29%3A%5Cn%5Ct%5Ctstr%3Dself.res%5Cn%5Ct%5Ctlines%3Dstr.split%28END_MARK%29%5Cn%5Ct%5Ctstr%3D%27%27%5Cn%5Ct%5Ctfor%20line%20in%20lines%3A%5Cn%5Ct%5Ct%5Ctline%3Dline.replace%28MARK%2C%27%3Cbr%3E%27%29%5Cn%5Ct%5Ct%5Ctline%3Dre.sub%28r%27%5C%5C%5Bc%3A%5B%5E%5C%5C%5D%5D%2A%5C%5C%5D%27%2Cr%27%27%2Cline%29%5Cn%5Ct%5Ct%5Ctline%3Dre.sub%28r%27%5E%28%5B%5E%5C%5C%3C%5D%2A%29%3Cbr%3E%5C%5C1%27%2Cr%27%5C%5C1%27%2Cline%29%5Cn%5Ct%5Ct%5Ct%23print%20line%5Cn%5Ct%5Ct%5Ct%23print%20%27_____________%27%5Cn%5Ct%5Ct%5Ctif%28%27%3Cbr%3ETT%27%20in%20line%20or%20%27%3Cbr%3EDK%27%20in%20line%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%23print%20line%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%5Cu0f21%27%2C%27%401%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%5Cu0f22%27%2C%27%402%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%5Cu0f23%27%2C%27%403%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%5Cu0f24%27%2C%27%404%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%5Cu0f25%27%2C%27%405%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%5Cu0f26%27%2C%27%406%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%5Cu0f27%27%2C%27%407%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%5Cu0f28%27%2C%27%408%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%5Cu0f29%27%2C%27%409%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%5Cu0f20%27%2C%27%400%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dre.sub%28r%27%40%28%5B%5C%5Cd%5D%29%40%28%5B%5C%5Cd%5D%29%27%2Cr%27%40%5C%5C1%5C%5C2%27%2Cline%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dre.sub%28r%27%40%28%5B%5C%5Cd%5D%29%40%28%5B%5C%5Cd%5D%29%27%2Cr%27%40%5C%5C1%5C%5C2%27%2Cline%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%40%27%2C%27%5C%5Cn%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%20%27%2C%27%5Cu0f0b%5Cu0fbe%5Cu0f0b%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%5Cu0f0d%5Cu0f0b%27%2C%27%5Cu0f0d%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%5Cu0f0d%27%2C%27%5Cu0f0d%5C%5Cn%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%5Cu0f3c%27%2C%27%5C%5Cn%5Cu0f3d%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%5Cu0f3d%27%2C%27%5Cu0f3d%5C%5Cn%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%3Cbr%3ETT%27%2C%27%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%3Cbr%3EDK%27%2C%27%27%29%5Cn%5Ct%5Ct%5Ct%5Ctself.data%5B0%5D%3Dline%5Cn%5Ct%5Ct%5Ct%5CtdictReport%28%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dself.data%5B0%5D%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%5Cu0fbe%5Cu0f0b%27%2C%27%20%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%5Cu0fbe%27%2C%27%3Cbr%3E%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%3Cc%3E%3Cbr%3E%27%2C%27%3Cc%3E%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%3Cbr%3E%5Cu0f0d%3C%2Fc%3E%27%2C%27%5Cu0f0d%3C%2Fc%3E%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%2B%3D%27TT%27%5Cn%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ctid%3D%27%7B%7D%27.format%28dt.id%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3D%27%3Ct%20id%3D%5C%22l%27%2Bid%2B%27%5C%22%20onClick%3D%5C%22edit%28%5C%5C%27l%27%2Bid%2B%27%5C%5C%27%29%5C%22%3E%27%2Bline%2B%27%3C%2Ft%3E%27%5Cn%5Ct%5Ct%5Ct%5Ctdt.id%2B%3D1%5Cn%5Ct%5Ct%5Ctstr%2B%3Dline%2B%27%3Chr%3E%27%5Cn%5Ct%5Ctself.res%3Dstr%5Cn%5Ct%5Ct%5Cn%5Ctdef%20loadTXT%28self%2Cname%2Cmode%29%3A%5Cn%5Ct%5Ctprint%20%27load%20%7B%7D%20mode%20%7B%7D%27.format%28name%2Cmode%29%5Cn%5Ct%5Ct%5Cn%5Ct%5Ctwith%20open%28pathSave%2B%27XML_DICT%2F%27%2Bname%2B%27.txt%27%29%20as%20f%3A%5Cn%5Ct%5Ct%5Ctstr%3Df.read%28%29%5Cn%5Ct%5Ct%5Ctf.close%28%29%5Cn%5Ct%5Ct%5Ctstr%3Dstr.replace%28%27%5C%5Cr%27%2C%27%5C%5Cn%27%29%5Cn%5Ct%5Ct%5Ctd%3Dstr.split%28%27%5C%5Cn%27%29%5Cn%5Ct%5Ct%5Ctprint%20len%28d%29%5Cn%5Ct%5Ct%5Ctif%28len%28name%29%3E5%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctname%3D%27YP%27%5Cn%5Ct%5Ct%5Cti%3D0%5Cn%5Ct%5Ct%5Ctm%3D0%5Cn%5Ct%5Ct%5Ctif%28mode%3D%3D%27put%27%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctm%3D1%5Cn%5Ct%5Ct%5Ctif%28mode%3D%3D%27roots%27%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctm%3D3%5Cn%5Ct%5Ct%5Ctfor%20line%20in%20d%3A%5Cn%5Ct%5Ct%5Ct%5Ct%23print%20len%28line%29%5Cn%5Ct%5Ct%5Ct%5Ct%23print%20line%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%3A%7C%3AYP%27%2C%27%27%29%5Cn%5Ct%5Ct%5Ct%5Ctline%3Dline.replace%28%27%20%40%20%27%2C%27%5C%5Ct%27%29%5Cn%5Ct%5Ct%5Ct%5Ctc%3Dline.split%28%27%5C%5Ct%27%29%5Cn%5Ct%5Ct%5Ct%5Ctif%20%28m%20%3D%3D%203%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctcd%3Dc%5B0%5D.split%28%27%5Cu0f0b%27%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%20len%28cd%29%20%3D%3D2%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20self.get%28c%5B0%5D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20if%20self.res%21%3D%27%27%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%5Ct%20continue%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctcontinue%3B%5Cn%5Ct%5Ct%5Ct%5Cti%2B%3D1%5Cn%5Ct%5Ct%5Ct%5Ct%5Cn%5Ct%5Ct%5Ct%5Ctif%28len%28c%29%3E1%20and%20len%28c%5B0%5D%29%3C1048%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctstr%3Dc%5B1%5D%2BMARK%2Bname%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%20m%3D%3D1%20or%20m%3D%3D3%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctself.put%28c%5B0%5D%2Cstr%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctself.add%28c%5B0%5D%2Cstr%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%23self.rep%28c%5B0%5D%2Cstr%2C%27%3A%7C%3A%27%2Bname%29%5Cn%5Ct%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%28len%28line%29%3E0%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctprint%20%27no%20valid%20record%20%27%2Bline%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctprint%20i%5Cn%5Cn%5Ctdef%20export%28self%2Cpath%29%3A%5Cn%5Ct%5CtsearchText.text%3D%27%7B%7D%27.format%28len%28self.keyList%29%29%5Cn%5Ct%5Ctwith%20open%28path%2C%27w%27%29%20as%20f%3A%5Cn%5Ct%5Ct%5Ctres%3Dlist%28%29%5Cn%5Ct%5Ct%5Ctstep%3D0%5Cn%5Ct%5Ct%5Cti%3D0%5Cn%5Ct%5Ct%5Ctfor%20line%20in%20self.keyList%3A%5Cn%5Ct%5Ct%5Ct%5Ctif%28step%3D%3D1000%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctstep%3D0%5Cn%5Ct%5Ct%5Ct%5Ct%5CtsearchText.text%3D%27%7B%7D%27.format%28i%29%5Cn%5Ct%5Ct%5Ct%5Cti%2B%3D1%5Cn%5Ct%5Ct%5Ct%5Ctstep%2B%3D1%5Cn%5Ct%5Ct%5Ct%5Ctkey%3Dline%5B0%3Alen%28line%29-1%5D%5Cn%5Ct%5Ct%5Ct%5Ct%23print%20key%20%5Cn%5Ct%5Ct%5Ct%5Cts%3Dself.get%28key%29%5Cn%5Ct%5Ct%5Ct%5Ct%23print%20str%5Cn%5Ct%5Ct%5Ct%5Ctres.append%28key%2B%27%20%40%20%27%2Bstr%28s%29%2B%27%5C%5Cn%27%29%5Cn%5Ct%5Ct%5Ctf.writelines%28res%29%5Cn%5Ct%5Ctprint%20%27done%20export%27%5Cn%5Ct%5Ct%5Ct%5Cn%5Cn%23%203%20handler%20functions%5Cndef%20start_element%28name%2C%20attrs%29%3A%5Cn%5Ctif%28name%3D%3D%27key%27%29%3A%5Cn%5Ct%5Ctif%28attrs%5B%27ln%27%5D%3D%3D%27tb%27%29%3A%5Cn%5Ct%5Ct%5Ctdt.keyTib%3D%27%7B%7D%27.format%28attrs%5B%27key%27%5D%29%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctn%3DPref%5B4%5D%5Cn%5Ct%5Ct%5Ct%23str%3Dattrs%5B%27key%27%5D%2B%27%3A%7C%3A%27%2Battrs%5B%27ln%27%5D%2B%27%3A%7C%3ATD%27%5Cn%5Ct%5Ct%5Ctdt.value%2B%3Dattrs%5B%27key%27%5D%2BMARK%2Bn%2BEND_MARK%5Ct%5Ct%5Cn%5Ct%5Cn%5Ctif%28name%3D%3D%27rec%27%29%3A%5Ct%5Cn%5Ct%5Ctdt.value%3D%27%27%5Cn%5Ct%5Ct%23print%20%27Start%20element%3A%27%2C%20name%2C%20attrs%5Cn%5Cndef%20end_element%28name%29%3A%5Cn%5Ctif%28name%3D%3D%27rec%27%29%3A%5Cn%5Ct%5Ctn%3DPref%5B4%5D%5Cn%5Ct%5Ctif%28len%28dt.keyTib%29%3E1%20and%20len%28dt.value%29%3E3%29%3A%5Cn%5Ct%5Ct%5Ct%23dt.rep%28dt.keyTib%2Cdt.value%2C%27%3A%7C%3A%27%2Bn%29%5Cn%5Ct%5Ct%5Ct%23print%20dt.keyTib%5Cn%5Ct%5Ct%5Ctdt.add%28dt.keyTib%2Cdt.value%29%5Cn%5Ct%5Cndef%20char_data%28data%29%3A%5Cn%5Ctpass%5Cn%5Ct%5Ct%23print%20%27Character%20data%3A%27%2C%20repr%28data%29%5Cn%5Cndef%20loadXML%28name%29%3A%5Cn%5Ct%5Ct%5Ctif%28len%28Pref%29%3C5%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctfor%20i%20in%20range%285%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5CtPref.append%28%27%27%29%5Cn%5Ct%5Ct%5CtPref%5B4%5D%3Dname%5Cn%5Ct%5Ct%5Ctp%20%3D%20xml.parsers.expat.ParserCreate%28%29%5Cn%5Ct%5Ct%5Ctp.StartElementHandler%20%3D%20start_element%5Cn%5Ct%5Ct%5Ctp.EndElementHandler%20%3D%20end_element%5Cn%5Ct%5Ct%5Ctp.CharacterDataHandler%20%3D%20char_data%5Cn%5Ct%5Ct%5Ctwith%20open%28pathSave%2B%27XML_DICT%2F%27%2Bname%2B%27.xml%27%29%20as%20f%3A%5Cn%5Ct%5Ct%5Ct%5Ctp.ParseFile%28f%29%5Cn%5Cn%5Cndef%20test%28name%2Cd_%29%3A%5Cn%5Ctd_.get%28name%29%5Cn%5Ctprint%20d_.res%5Cn%5Cndef%20loadDB%28%29%3A%5Cn%5Ctprint%20%27load%20DB%27%5Cn%5Ct%23dt.clear%28%29%5Ct%5Cn%5Ct%27%27%27%5Cn%5Ctdt.loadTXT%28%27MG%27%2C%27%27%29%5Cn%5Ctdt.saveInd%28%29%5Cn%5Ctdt.loadTXT%28%27TD%27%2C%27%27%29%5Cn%5Ctdt.saveInd%28%29%5Cn%5Ctdt.loadTXT%28%27HP%27%2C%27%27%29%5Cn%5Ctdt.saveInd%28%29%5Cn%5Ctdt.loadTXT%28%27VD%27%2C%27%27%29%5Cn%5Ctdt.saveInd%28%29%5Cn%5Ctdt.loadTXT%28%27GRM_%27%2C%27%27%29%5Cn%5Ctdt.saveInd%28%29%5Cn%5Ctdt.loadTXT%28%27ER%27%2C%27%27%29%5Cn%5Ctdt.saveInd%28%29%5Cn%5Ctdt.loadTXT%28%27IW%27%2C%27%27%29%5Cn%5Ctdt.saveInd%28%29%5Cn%5Ctdt.loadTXT%28%27JW%27%2C%27%27%29%5Cn%5Ctdt.saveInd%28%29%5Cn%5Ct%23%23dt.loadTXT%28%27RB%27%2C%27%27%29%5Cn%5Ct%23dt.saveInd%28%29%5Cn%5Ct%27%27%27%5Cn%5Ctdt.loadTXT%28%27YO%27%2C%27%27%29%5Cn%5Ctdt.saveInd%28%29%5Cn%5Ctdt.loadTXT%28%27RE%27%2C%27%27%29%5Cn%5Ctdt.saveInd%28%29%5Cn%5Ctdt.loadTXT%28%27MVP%27%2C%27%27%29%5Cn%5Ctdt.saveInd%28%29%5Cn%5Ctdt.loadTXT%28%27MV%27%2C%27%27%29%5Cn%20%5Ctdt.saveInd%28%29%5Cn%5Ctdt.loadTXT%28%27DR%27%2C%27%27%29%5Cn%5Ctdt.saveInd%28%29%5Cn%5Ctdt.loadTXT%28%27SCD%27%2C%27%27%29%5Cn%5Ctdt.saveInd%28%29%5Cn%5Ctdt.loadTXT%28%27TT%27%2C%27%27%29%5Cn%5Ctdt.saveInd%28%29%5Cn%5Ctdt.loadTXT%28%27DK%27%2C%27%27%29%5Cn%5Ctdt.saveInd%28%29%5Cn%5Ct%23%23dt.loadTXT%28%27RYD%27%2C%27%27%29%5Cn%5Ct%23dt.saveInd%28%29%5Cn%5Ct%5Cn%5Cndef%20exportAction%28sender%29%3A%5Cn%5Ctpath%3DfileView%5B%27textfield2%27%5D.text%5Cn%5Ctpath%3DpathMain%2Bpath%5Cn%5CtfileView.x%3D1024%5Cn%5Ctdk.export%28path%29%5Cn%5Cn%5Cndef%20selectAction%28request%29%3A%5Cn%5Ctif%28%27action%27%20in%20request%29%3A%5Cn%5Ct%5Ctaction%3Drequest%5B%27action%27%5D%5Cn%5Ct%5Ctif%20%28len%28action%29%3E0%20and%20action%5B0%5D%3D%3D%27export%27%29%3A%5Cn%5Ct%5Ct%5Ctexport%28%29%5Cn%5Ct%5Ct%5Ctreturn%5Cn%5Cndef%20dictionary%28sender%29%3A%5Cn%5Ctjs%3D%27readStr%28%29%27%5Cn%5Ctif%28mainDictView.x%3D%3D0%29%3A%5Cn%5Ct%5CttextAll%3DdictView.eval_js%28js%29%5Cn%5Ctelse%3A%5Cn%5Ct%5CttextAll%3DtextIn.eval_js%28js%29%5Cn%5Ctstr%3DhtmlToText%28textAll%29%5Cn%5Ctstr%2B%3D%27%5Cu0f0b%27%5Cn%5Ctstr%3Dstr.replace%28%27%5Cu0f0b%5Cu0f0b%27%2C%27%5Cu0f0b%27%29%5Cn%5Ctprint%20str%5Cn%5CtsearchText.text%3Dstr%5Ct%5Cn%5Ctif%28len%28str%29%3E1%29%3A%5Cn%5Ct%5CtdictEntry%28%29%5Cn%5Cndef%20fullRep%28sender%29%3A%5Cn%5Ctstr%3DsearchText.text%5Cn%5Ctif%28len%28str%29%3E0%29%3A%5Cn%5Ct%5Ctstr%2B%3D%27%5Cu0f0b%27%5Cn%5Ct%5Ctstr%3Dstr.replace%28%27%5Cu0f0b%5Cu0f0b%27%2C%27%5Cu0f0b%27%29%5Cn%5Ct%5CtsearchText.text%3Dstr%5Ct%5Cn%5Ct%5CtdictReport%28%29%5Cn%5Ct%5CtprintHtml%28dt.data%5B0%5D%29%5Cn%5Ct%5Ct%5Ct%5Cn%5Ctdt.mainMode%3DFULL_REPORT%5Ct%5Cn%5Ctjs%3D%27readText%28%29%27%5Cn%5CttextAll%3DtextIn.eval_js%28js%29%5Cn%5Ct%23textIn.text%20is%20unicode%2C%20it%20is%20need%20convert%20it%20in%20utf-8%5Cn%5CttextAll%3D%27%7B%7D%27.format%28textAll%29%5Cn%5CttextAll%3DhtmlToText%28textAll%29%5Cn%5Ctdt.data%5B0%5D%3DtextAll%5Cn%5CtdictReport%28%29%5Cn%5CtprintHtml%28dt.data%5B0%5D%29%5Cn%5Ct%23searchBtn.title%3D%27Word%20From%20Text%27%5Cn%5Ctdt.mainMode%3DDICT_REPORT_TEXT%5Cn%5Ct%23t2%3Dtime.time%28%29%5Cn%5Ct%23printHtml%28report%2B%27%5C%5Cn%20done%20in%20%7B%7D%20sec%27.format%28t2-t1%29%29%5Cn%5Cn%5Ct%5Cndef%20translate%28sender%29%3A%5Cn%5Ctstr%3DsearchText.text%5Cn%5Ctif%28len%28str%29%3E0%20and%20str%5B0%5D%3D%3D%27%3F%27%29%3A%20%23parse%20request%20as%20CGI%20query%20request%5Cn%5Ct%5Ct%5Ct%5Ctrequest%3Durlparse.parse_qs%28str%5B1%3A%5D%29%5Cn%5Ct%5Ct%5Ct%5CtselectAction%28request%29%5Cn%5Ct%5Ct%5Ct%5Ctreturn%5Cn%5Ctif%28len%28str%29%3E0%29%3A%5Cn%5Ct%5Ctstr%2B%3D%27%5Cu0f0b%27%5Cn%5Ct%5Ctstr%3Dstr.replace%28%27%5Cu0f0b%5Cu0f0b%27%2C%27%5Cu0f0b%27%29%5Cn%5Ct%5CtsearchText.text%3Dstr%5Cn%5Ct%5CtdictEntry%28%29%5Cn%5Ct%5Ctreturn%5Cn%5Ct%5Ct%5Cn%5Ctdt.mainMode%3DTRANSLATE%5Ct%5Ct%5Ct%5Cn%5Ctjs%3D%27readText%28%29%27%5Cn%5CttextAll%3DtextIn.eval_js%28js%29%5Cn%5Ct%23textIn.text%20is%20unicode%2C%20it%20is%20need%20convert%20it%20in%20utf-8%5Cn%5CttextAll%3D%27%7B%7D%27.format%28textAll%29%5Cn%5CttextAll%3DhtmlToText%28textAll%29%5Cn%5Ctdt.data%5B0%5D%3DtextAll%5Cn%5CtdictReport%28%29%5Cn%5CtprintHtml%28dt.data%5B0%5D%29%5Cn%5Ctdt.mainMode%3DDICT_REPORT_TEXT%5Cn%5Ct%23t2%3Dtime.time%28%29%5Cn%5Ct%23printHtml%28report%2B%27%5C%5Cn%20done%20in%20%7B%7D%20sec%27.format%28t2-t1%29%29%5Cn%5Ct%5Ct%5Cn%5Ct%5Ct%5Ct%5Cndef%20dictEntry%28%29%3A%5Cn%5Ct%5C%22%5C%22%5C%22report%20from%20all%20dictionaries%20in%20database%5C%22%5C%22%5C%22%5Cn%5CtmainDictView.x%3D0%5Cn%5CtmainDictView.height%3D1024%5Cn%5CttextAll%3DsearchText.text%5Cn%5CttextAll%3D%27%7B%7D%27.format%28textAll%29%5Cn%5CttextAll%2B%3D%27%5Cu0f0b%27%5Cn%5CttextAll%3DtextAll.replace%28%27%5Cu0f0b%5Cu0f0b%27%2C%27%5Cu0f0b%27%29%5Cn%5Ctdt.history.append%28textAll%29%5Cn%5Ctdk.get%28textAll%29%5Cn%5Ctres%3D%27%27%5Cn%5Ctres%2B%3D%27%5B%27%2BlinkDict%28textAll%29%2BlinkEdit%28%27%3D%27%2Bdk.res%29%2B%27%5D%5Cu0f0b%3Chr%3E%27%5Cn%5Ctdt.get%28textAll%29%5Cn%5Ctdt.formatReport%28%29%5Cn%5Ctres%2B%3Ddt.res%5Cn%5CtprintHTML_%28res%29%5Cn%5Ct%5Cn%5Ct%5Cndef%20dictReport%28%29%3A%5Cn%5Ctreport%3D%27%27%5Cn%5CttextAll%3Ddt.data%5B0%5D%5Cn%5Ct%23textAll%3D%27%5Cu0f56%5Cu0f0b%5Cu0f51%5Cu0f42%5Cu0f0b%5Cu0f42%5Cu0f72%5Cu0f0b%5Cu0f60%5Cu0f56%5Cu0fb2%5Cu0f66%5Cu0f0b%5Cu0f56%5Cu0f74%5Cu0f60%5Cu0f72%5Cu0f0b%5Cu0f58%5Cu0f46%5Cu0f7c%5Cu0f42%5Cu0f0b%5Cu0f58%5Cu0f50%5Cu0f62%5Cu0f0b%5Cu0f50%5Cu0f74%5Cu0f42%5Cu0f0b%5Cu0f54%5Cu0f0b%5Cu0f53%5Cu0f72%5Cu0f0b%5Cu0f62%5Cu0f44%5Cu0f0b%5Cu0f56%5Cu0f5e%5Cu0f72%5Cu0f53%5Cu0f0b%5Cu0f62%5Cu0fab%5Cu0f7c%5Cu0f42%5Cu0f66%5Cu0f0b%5Cu0f54%5Cu0f0b%5Cu0f46%5Cu0f7a%5Cu0f53%5Cu0f0b%5Cu0f54%5Cu0f7c%5Cu0f60%5Cu0f72%5Cu0f0b%5Cu0f46%5Cu0f7c%5Cu0f66%5Cu0f0b%5Cu0f40%5Cu0fb1%5Cu0f72%5Cu0f0b%5Cu0f62%5Cu0fa3%5Cu0f58%5Cu0f0b%5Cu0f42%5Cu0fb2%5Cu0f44%5Cu0f66%5Cu0f0b%5Cu0f63%5Cu0f66%5Cu0f0b%5Cu0f60%5Cu0f7c%5Cu0f51%5Cu0f0b%5Cu0f42%5Cu0f66%5Cu0f63%5Cu0f0b%5Cu0f62%5Cu0fa1%5Cu0f7c%5Cu0f0b%5Cu0f62%5Cu0f97%5Cu0f7a%5Cu0f0b%5Cu0f66%5Cu0f99%5Cu0f72%5Cu0f44%5Cu0f0b%5Cu0f54%5Cu0f7c%5Cu0f60%5Cu0f72%5Cu0f0b%5Cu0f50%5Cu0f7a%5Cu0f42%5Cu0f0b%5Cu0f54%5Cu0f0b%5Cu0f56%5Cu0fb3%5Cu0f0b%5Cu0f53%5Cu0f0b%5Cu0f58%5Cu0f7a%5Cu0f51%5Cu0f0b%5Cu0f54%5Cu0f0b%5Cu0f60%5Cu0f51%5Cu0f72%5Cu0f0b%5Cu0f61%5Cu0f72%5Cu0f53%5Cu0f0b%5Cu0f4f%5Cu0f7a%5Cu0f0b%5Cu0f0d%5Cu0f0b%5C%5Cn%27%5Cn%5Cttext%3DtextAll.split%28%27%5C%5Cn%27%29%5Cn%5Ctd%3Ddk.dictKey%5Cn%5CtreportT%3D%27%27%5Cn%5Ctn%3D0%5Cn%5Ct%5Cn%5Ctfor%20n%20in%20range%280%2Clen%28text%29-1%29%3A%5Cn%5Ct%5Ctsrc%3Dtext%5Bn%5D%5Cn%5Ct%5Cts%3Dsrc%5Cn%5Ct%5CtreportN%3Dtext%5Bn%2B1%5D%5Cn%5Ct%5Ctrd%3D%7B%7D%20%23dictionary%20of%20words%20result%5Cn%20%5Ct%5Ctlng%3Dlen%28s%29%5Cn%20%5Ct%5Ctif%28lng%3C2%29%3A%5Cn%20%5Ct%5Ct%5Ctcontinue%5Cn%20%5Ct%5Ctif%28re.search%28%27%5Cu0f0b%27%2C%20reportN%29%20%3D%3D%20None%20and%20re.search%28%27%5Cu0f0d%27%2C%20reportN%29%20%3D%3D%20None%29%3A%5Cn%20%5Ct%5Ct%5CtreportT%3DreportN%5Cn%20%5Ct%5Ctif%28re.search%28%27%5Cu0f0b%27%2C%20s%29%20%3D%3D%20None%20and%20re.search%28%27%5Cu0f0d%27%2C%20s%29%20%3D%3D%20None%29%3A%5Cn%20%5Ct%5Ct%5Ctif%28re.search%28%27%5B%5C%5Cd%5C%5C%5B%3C%5D%27%2Csrc%29%21%3DNone%29%3A%5Cn%20%5Ct%5Ct%5Ct%5Ctreport%2B%3D%27%3Cbr%3E%3Cd%3E%27%2Bsrc%2B%27%3C%2Fd%3E%27%5Cn%20%5Ct%5Ct%5Ctcontinue%5Cn%5Ct%5Cts%3Dunicode%28s%29%5Cn%20%5Ct%5Cts%3Dre.sub%28u%27%5B%20_%5C%5Cd%5C%5C%20%5C%22%5Ct%5C%5C%27%5C%5C%2A%5C%5C%28%5C%5C%29%5C%5C%7B%5C%5C%7D%5C%5C%5B%5C%5C%5D%40%5Cu2022%23%5C%5C%25%5C%5C%26%5Cu0f04%5Cu0f05%5Cu0f14%5Cu0f34%5Cu0f21%5Cu0f22%5Cu0f23%5Cu0f24%5Cu0f25%5Cu0f26%5Cu0f27%5Cu0f28%5Cu0f29%5Cu0f20%5Cu0f0e%5Cu0f0d%5Cu0f11%5Cu0f08%5Cu0f0c%5Cu0f10%5Cu0f0f%5Cu0f3c%5Cu0f3d%5Cu0900-%5Cu097f%5D%27%2Cu%5C%22%5Cu0f0b%5C%22%2Cs%29%5Cn%20%5Ct%5Cts%3Dre.sub%28u%27%5Cu0f7f%27%2Cu%27%5Cu0f7f%5Cu0f0b%27%2Cs%29%5Cn%20%5Ct%5Cts%3Ds%2Bu%27%5Cu0f0b%5Cu0f0d%27%5Cn%5Ct%5Cts%3Dre.sub%28u%27%5Cu0f0b%5B%5Cu0f0b%5D%2B%27%2Cu%5C%22%5Cu0f0b%5C%22%2Cs%29%5Cn%5Ct%5Cts%3Dre.sub%28u%27%28%5B%5E%5Cu0f0b%5D%29%5Cu0f60%5Cu0f7c%5Cu0f0b%27%2Cr%5C%22%5C%5C1%5Cu0f0b%28%5Cu0442%5Cu043e%5Cu0447%5Cu043a%5Cu0430%29%5Cu0f0b%5C%22%2Cs%29%5Cn%5Ct%5Ct%23s%3Dre.sub%28u%27%28%5B%5E%5Cu0f0b%5D%29%5Cu0f60%5Cu0f58%5Cu0f0b%27%2Cr%5C%22%5C%5C1%5Cu0f0b%5B%5Cu0f60%5Cu0f58%3D%5Cu0438%5Cu043b%5Cu0438%5D%5Cu0f0b%5C%22%2Cs%29%5Cn%5Ct%5Cts%3Dre.sub%28u%27%5Cu0f42%5Cu0f0b%5Cu0f42%5Cu0f7c%5Cu0f0b%5Cu0f0d%27%2Cu%5C%22%5Cu0f42%5Cu0f0b%28%5Cu0442%5Cu043e%5Cu0447%5Cu043a%5Cu0430%29%5Cu0f0b%5C%22%2Cs%29%5Cn%5Ct%5Cts%3Dre.sub%28u%27%5Cu0f44%5Cu0f0b%5Cu0f44%5Cu0f7c%5Cu0f0b%5Cu0f0d%27%2Cu%5C%22%5Cu0f44%5Cu0f0b%28%5Cu0442%5Cu043e%5Cu0447%5Cu043a%5Cu0430%29%5Cu0f0b%5C%22%2Cs%29%5Cn%5Ct%5Cts%3Dre.sub%28u%27%5Cu0f51%5Cu0f0b%5Cu0f51%5Cu0f7c%5Cu0f0b%5Cu0f0d%27%2Cu%5C%22%5Cu0f51%5Cu0f0b%28%5Cu0442%5Cu043e%5Cu0447%5Cu043a%5Cu0430%29%5Cu0f0b%5C%22%2Cs%29%5Cn%5Ct%5Cts%3Dre.sub%28u%27%5Cu0f53%5Cu0f0b%5Cu0f53%5Cu0f7c%5Cu0f0b%5Cu0f0d%27%2Cu%5C%22%5Cu0f53%5Cu0f0b%28%5Cu0442%5Cu043e%5Cu0447%5Cu043a%5Cu0430%29%5Cu0f0b%5C%22%2Cs%29%5Cn%5Ct%5Cts%3Dre.sub%28u%27%5Cu0f56%5Cu0f0b%5Cu0f56%5Cu0f7c%5Cu0f0b%5Cu0f0d%27%2Cu%5C%22%5Cu0f56%5Cu0f0b%28%5Cu0442%5Cu043e%5Cu0447%5Cu043a%5Cu0430%29%5Cu0f0b%5C%22%2Cs%29%5Cn%5Ct%5Cts%3Dre.sub%28u%27%5Cu0f58%5Cu0f0b%5Cu0f58%5Cu0f7c%5Cu0f0b%5Cu0f0d%27%2Cu%5C%22%5Cu0f58%5Cu0f0b%28%5Cu0442%5Cu043e%5Cu0447%5Cu043a%5Cu0430%29%5Cu0f0b%5C%22%2Cs%29%5Cn%5Ct%5Cts%3Dre.sub%28u%27%5Cu0f62%5Cu0f0b%5Cu0f62%5Cu0f7c%5Cu0f0b%5Cu0f0d%27%2Cu%5C%22%5Cu0f62%5Cu0f0b%28%5Cu0442%5Cu043e%5Cu0447%5Cu043a%5Cu0430%29%5Cu0f0b%5C%22%2Cs%29%5Cn%5Ct%5Cts%3Dre.sub%28u%27%5Cu0f63%5Cu0f0b%5Cu0f63%5Cu0f7c%5Cu0f0b%5Cu0f0d%27%2Cu%5C%22%5Cu0f63%5Cu0f0b%28%5Cu0442%5Cu043e%5Cu0447%5Cu043a%5Cu0430%29%5Cu0f0b%5C%22%2Cs%29%5Cn%5Ct%5Cts%3Dre.sub%28u%27%5Cu0f66%5Cu0f0b%5Cu0f66%5Cu0f7c%5Cu0f0b%5Cu0f0d%27%2Cu%5C%22%5Cu0f66%5Cu0f0b%28%5Cu0442%5Cu043e%5Cu0447%5Cu043a%5Cu0430%29%5Cu0f0b%5C%22%2Cs%29%5Cn%5Ct%5Cts%3Dre.sub%28u%27%5Cu0f0b%5Cu0f4f%5Cu0f7c%5Cu0f0b%5Cu0f0d%27%2Cu%5C%22%5Cu0f0b%28%5Cu0442%5Cu043e%5Cu0447%5Cu043a%5Cu0430%29%5Cu0f0b%5C%22%2Cs%29%5Cn%5Ct%5Cts%3Dre.sub%28u%27%5Cu0f0b%5Cu0f54%5Cu0f60%5Cu0f44%5Cu0f0b%27%2Cu%5C%22%5Cu0f0b%5Cu0f54%5Cu0f0b%5B%5Cu0f60%5Cu0f44%3D%5Cu0443%5Cu0441%5Cu0442%5Cu0443%5Cu043f.%5D%5Cu0f0b%5C%22%2Cs%29%5Cn%5Ct%5Cts%3Dre.sub%28u%27%5Cu0f0b%5Cu0f56%5Cu0f60%5Cu0f44%5Cu0f0b%27%2Cu%5C%22%5Cu0f0b%5Cu0f56%5Cu0f0b%5B%5Cu0f60%5Cu0f44%3D%5Cu043e%5Cu0447%5Cu0435%5Cu043d%5Cu044c%5D%5Cu0f0b%5C%22%2Cs%29%5Cn%5Ct%5Cts%3D%27%7B%7D%27.format%28s%29%5Cn%5Cn%5Ct%5Ctl%3Ds.split%28%27%5Cu0f0b%27%29%5Cn%5Ct%5Ctres%3D%27%27%5Cn%5Ct%5CtresD%3D%27%27%5Cn%5Ct%5Ct%5Cn%5Ct%5Ct%5Ct%5Ct%5Cn%5Ct%5Ctlng%3Dlen%28l%29%5Cn%5Ct%5Ctstart%3D0%5Cn%5Ct%5Ctend%3Dlng-1%5Cn%5Ct%5Ct%5Cn%5Ct%5Cti%3Dlng%5Cn%5Ct%5Ctcount%3D0%5Cn%5Ct%5Ct%23t1%3Dtime.time%28%29%5Cn%5Ct%5Ct%5Cn%5Ct%5Ctwhile%20start%3Clng%20%3A%5Cn%5Ct%5Ct%5Ct%23make%20query%20string%20decrease%20end%5Cn%5Ct%5Ct%5Ctend%3Dlng%5Cn%5Ct%5Ct%5Ctwhile%20end%3E-1%20%3A%5Cn%5Ct%5Ct%5Ct%5Ctj%3Dstart%5Cn%5Ct%5Ct%5Ct%5Ctline%3D%27%27%5Cn%5Ct%5Ct%5Ct%5Ctwhile%20j%20%3C%20end%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctline%2B%3Dl%5Bj%5D%2B%27%5Cu0f0b%27%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctj%2B%3D1%5Cn%5Ct%5Ct%5Ct%5Ctcount%2B%3D1%5Cn%5Ct%5Ct%5Ct%5Ctif%20%28count%20%3E1000%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%23print%20line%2B%27%20%7B%7D%20%7B%7D%27.format%28start%2Cend%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctbreak%5Cn%5Ct%5Ct%5Ct%5Ctld%3Dline%2B%27%5C%5Cn%27%5Cn%5Ct%5Ct%5Ct%5Ctif%28ld%20in%20d%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctdk.get%28line%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%23c%3Dstr%28dk.res%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctc%3Ddk.res%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%28EMPTY_MARK%20in%20c%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctend-%3D1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctcontinue%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%28%27__%27%20in%20c%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctres%2B%3D%27%5B%27%2BlinkDict%28line%29%2BlinkEdit%28%27%3D%27%2Bc%29%2B%27%5D%5Cu0f0b%3Cbr%3E%3C%2Fc%3E%3Cc%3E%27%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctend-%3D1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctcontinue%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctres%2B%3D%27%5B%27%2BlinkDict%28line%29%2BlinkEdit%28%27%3D%27%2Bc%29%2B%27%5D%5Cu0f0b%27%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%28dt.mainMode%3D%3DFULL_REPORT%20and%20start%3D%3D0%20and%20end%3D%3Dlng-1%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctend-%3D1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctcontinue%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctstart%3Dend-1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctbreak%5Cn%5Ct%5Ct%5Ct%5Ct%23next%20check%20big%20dictionary%20report%5Cn%5Ct%5Ct%5Ct%5Ctif%28len%28line%29%3E3%20and%20ld%20in%20dt.dictKey%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5CtresD%2B%3D%27%5B%27%2BlinkDict%28line%29%2BlinkEdit%28%27%3D%27%29%2B%27%5D%20%27%5Cn%5Ct%5Ct%5Ct%5Ctln%3Dline%2B%27%40%27%5Cn%5Ct%5Ct%5Ct%5Ctl1%3Dln.replace%28%27%5Cu0f60%5Cu0f72%5Cu0f0b%40%27%2C%27%5Cu0f0b%27%29%5Cn%5Ct%5Ct%5Ct%5Ctld%3Dl1%2B%27%5C%5Cn%27%5Cn%5Ct%5Ct%5Ct%5Ctif%28ld%20in%20d%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctdk.get%28l1%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctc%3Ddk.res%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%28EMPTY_MARK%20in%20c%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctend-%3D1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctcontinue%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctres%2B%3D%27%5B%27%2BlinkDict%28l1%29%2BlinkEdit%28%27%3D%27%2Bc%29%2B%27%5D%5Cu0f0b%5B%27%2BlinkDict%28%27-%5Cu0f60%5Cu0f72%5Cu0f0b%27%29%2BlinkEdit%28%27%3Dg.p%27%29%2B%27%5D%5Cu0f0b%27%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctrd%5Bl1%5D%3D1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctstart%3Dend-1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctbreak%5Cn%5Ct%5Ct%5Ct%5Ct%23next%20check%20big%20dictionary%20report%5Cn%5Ct%5Ct%5Ct%5Ctif%28len%28l1%29%3E3%20and%20ld%20in%20dt.dictKey%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5CtresD%2B%3D%27%5B%27%2BlinkDict%28l1%29%2BlinkEdit%28%27%3D%27%29%2B%27%5D%20%27%5Cn%5Ct%5Ct%5Ct%5Ctl1%3Dln.replace%28%27%5Cu0f66%5Cu0f0b%40%27%2C%27%5Cu0f0b%27%29%5Cn%5Ct%5Ct%5Ct%5Ctld%3Dl1%2B%27%5C%5Cn%27%5Cn%5Ct%5Ct%5Ct%5Ctif%28ld%20in%20d%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctdk.get%28l1%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctc%3Ddk.res%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%28EMPTY_MARK%20in%20c%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctend-%3D1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctcontinue%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctres%2B%3D%27%5B%27%2BlinkDict%28l1%29%2BlinkEdit%28%27%3D%27%2Bc%29%2B%27%5D%5Cu0f0b%5B%27%2BlinkDict%28%27-%5Cu0f66%5Cu0f0b%27%29%2BlinkEdit%28%27%3Di.p.%27%29%2B%27%5D%5Cu0f0b%27%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctrd%5Bl1%5D%3D1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctstart%3Dend-1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctbreak%5Cn%5Ct%5Ct%5Ct%5Ct%23next%20check%20big%20dictionary%20report%5Cn%5Ct%5Ct%5Ct%5Ctif%28len%28l1%29%3E3%20and%20ld%20in%20dt.dictKey%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5CtresD%2B%3D%27%5B%27%2BlinkDict%28l1%29%2BlinkEdit%28%27%3D%27%29%2B%27%5D%20%27%5Cn%5Ct%5Ct%5Ct%5Ctl1%3Dln.replace%28%27%5Cu0f62%5Cu0f0b%40%27%2C%27%5Cu0f0b%27%29%5Cn%5Ct%5Ct%5Ct%5Ctld%3Dl1%2B%27%5C%5Cn%27%5Cn%5Ct%5Ct%5Ct%5Ctif%28ld%20in%20d%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctdk.get%28l1%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctc%3Ddk.res%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%28EMPTY_MARK%20in%20c%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctend-%3D1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctcontinue%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctres%2B%3D%27%5B%27%2BlinkDict%28l1%29%2BlinkEdit%28%27%3D%27%2Bc%29%2B%27%5D%5Cu0f0b%5B%27%2BlinkDict%28%27-%5Cu0f62%5Cu0f0b%27%29%2BlinkEdit%28%27%3Dd.l.%27%29%2B%27%5D%5Cu0f0b%27%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctrd%5Bl1%5D%3D1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctstart%3Dend-1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctbreak%5Cn%5Ct%5Ct%5Ct%5Ct%23next%20check%20big%20dictionary%20report%5Cn%5Ct%5Ct%5Ct%5Ctif%28len%28l1%29%3E3%20and%20ld%20in%20dt.dictKey%29%3A%5Ct%5Cn%5Ct%5Ct%5Ct%5Ct%5CtresD%2B%3D%27%5B%27%2BlinkDict%28l1%29%2BlinkEdit%28%27%3D%27%29%2B%27%5D%20%27%5Cn%5Ct%5Ct%5Ct%5Ctl1%3Dln.replace%28%27%5Cu0f60%5Cu0f7c%5Cu0f0b%40%27%2C%27%5Cu0f60%5Cu0f0b%27%29%5Cn%5Ct%5Ct%5Ct%5Ctld%3Dl1%2B%27%5C%5Cn%27%5Cn%5Ct%5Ct%5Ct%5Ctif%28ld%20in%20d%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctdk.get%28l1%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctc%3Ddk.res%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%28EMPTY_MARK%20in%20c%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctend-%3D1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctcontinue%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctres%2B%3D%27%5B%27%2BlinkDict%28l1%29%2BlinkEdit%28%27%3D%27%2Bc%29%2B%27%5D%28%5Cu0442%5Cu043e%5Cu0447%5Cu043a%5Cu0430%29%5Cu0f0b%27%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctrd%5Bl1%5D%3D1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctstart%3Dend-1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctbreak%5Cn%5Ct%5Ct%5Ct%5Ct%23next%20check%20big%20dictionary%20report%5Cn%5Ct%5Ct%5Ct%5Ctif%28len%28l1%29%3E3%20and%20ld%20in%20dt.dictKey%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5CtresD%2B%3D%27%5B%27%2BlinkDict%28l1%29%2BlinkEdit%28%27%3D%27%29%2B%27%5D%20%27%5Cn%5Ct%5Ct%5Ct%5Ctl1%3Dln.replace%28%27%5Cu0f60%5Cu0f58%5Cu0f0b%40%27%2C%27%5Cu0f0b%27%29%5Cn%5Ct%5Ct%5Ct%5Ctld%3Dl1%2B%27%5C%5Cn%27%5Cn%5Ct%5Ct%5Ct%5Ctif%28ld%20in%20d%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctdk.get%28l1%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctc%3Ddk.res%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%28EMPTY_MARK%20in%20c%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctend-%3D1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctcontinue%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctres%2B%3D%27%5B%27%2BlinkDict%28l1%29%2BlinkEdit%28%27%3D%27%2Bc%29%2B%27%5D%5Cu0f0b%5B%27%2BlinkDict%28%27-%5Cu0f60%5Cu0f58%5Cu0f0b%27%29%2BlinkEdit%28%27%3D%5Cu0438%5Cu043b%5Cu0438%27%29%2B%27%5D%5Cu0f0b%27%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctrd%5Bl1%5D%3D1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctstart%3Dend-1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctbreak%5Cn%5Ct%5Ct%5Ct%5Ct%23next%20check%20big%20dictionary%20report%5Cn%5Ct%5Ct%5Ct%5Ctif%28len%28l1%29%3E3%20and%20ld%20in%20dt.dictKey%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5CtresD%2B%3D%27%5B%27%2BlinkDict%28l1%29%2BlinkEdit%28%27%3D%27%29%2B%27%5D%20%27%5Cn%5Ct%5Ct%5Ct%5Ctend-%3D1%5Cn%5Ct%5Ct%5Ct%5Ctif%28end%3D%3Dstart%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctres%2B%3Dline%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctbreak%5Cn%5Ct%5Ct%5Ctstart%2B%3D1%5Cn%5Ct%5Ct%5Ctres%3Dres.replace%28%27%3A%7C%3AYP%27%2C%27%27%29%5Ct%5Cn%5Ct%5Ct%5Cn%5Ct%5Ctif%28re.search%28%27lt%27%2Csrc%29%21%3DNone%29%3A%5Cn%5Ct%5Ct%5Ctsrc%3D%27%3Cd%3E%27%2Bsrc%2B%27%3C%2Fd%3E%27%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctsrc%3D%27%3Ctib%20contentEditable%3E%27%2Bsrc%2B%27%3C%2Ftib%3E%27%5Cn%5Ct%5Ctreport%2B%3Dsrc%2B%27%5C%5Cn%3Cd%3E%27%2BreportT%2B%27%3C%2Fd%3E%3Cbr%3E%5C%5Cn%3Cw%3E%27%2Bres%2B%27%5C%5Cn%27%5Cn%5Ct%5Ctif%28len%28resD%29%3E10%29%3A%5Cn%5Ct%5Ct%5Ctreport%2B%3D%27%3Cr%3E%27%2BresD%2B%27%3C%2Fr%3E%27%5Ct%5Cn%5Ct%5Ctreport%2B%3D%27%3C%2Fw%3E%3Cbr%3E%3Cbr%3E%5C%5Cn%27%5Cn%5Ct%5CtreportT%3D%27%27%5Cn%5Ct%5Ctif%28dt.mainMode%3D%3DFULL_REPORT%29%3A%5Cn%5Ct%5Ct%5Ctres%3D%27%27%5Cn%5Ct%5Ct%5Ctfor%20line%20in%20l%3A%5Cn%5Ct%5Ct%5Ct%5Ctld%3Dline%2B%27%5Cu0f0b%5C%5Cn%27%5Cn%5Ct%5Ct%5Ct%5Ctkey%3Dline%2B%27%5Cu0f0b%27%5Cn%5Ct%5Ct%5Ct%5Ctif%28ld%20in%20d%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctdk.get%28key%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctc%3Ddk.res%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctres%2B%3D%27%5B%27%2BlinkDict%28key%29%2BlinkEdit%28%27%3D%27%2Bc%29%2B%27%5D%5Cu0f0b%27%5Ct%5Cn%5Ct%5Ct%5Ctres%3Dres.replace%28%27%3A%7C%3AYP%27%2C%27%27%29%5Ct%5Ct%5Cn%5Ct%5Ct%5Ctreport%2B%3D%27%3Cbr%3E%3Cc%3E%27%2Bres%2B%27%3C%2Fc%3E%5C%5Cn%3Cbr%3E%27%5Ct%5Cn%5Ct%5Ct%5Ct%5Cn%5Ct%5Ct%23print%20report%5Cn%5Ct%5Ct%23sys.exit%28%29%5Cn%5Ct%5Ct%23return%5Cn%5Ctdt.data%5B0%5D%3Dreport%5Cn%5Ct%5Cndef%20linkDict%28line%29%3A%5Cn%5Cts%3D%27%27%5Cn%5Ctid%3D%27s%7B%7D%27.format%28dt.id%29%5Cn%5Cts%3D%27%3Cr%20id%3D%5C%22%27%2Bid%2B%27%5C%22%20onClick%3D%5C%22set%28%5C%5C%27%27%2Bid%2B%27%5C%5C%27%29%5C%22%3E%27%2Bline%2B%27%3C%2Fr%3E%27%5Cn%5Ctdt.id%2B%3D1%5Cn%5Ctreturn%20s%5Cn%5Ct%5Cndef%20linkText%28line%29%3A%5Cn%5Cts%3D%27%27%5Cn%5Ctid%3D%27s%7B%7D%27.format%28dt.id%29%5Cn%5Cts%3D%27%3Ct%20id%3D%5C%22%27%2Bid%2B%27%5C%22%20onClick%3D%5C%22edit%28%5C%5C%27%27%2Bid%2B%27%5C%5C%27%29%5C%22%3E%27%2Bline%2B%27%3C%2Ft%3E%27%5Cn%5Ctdt.id%2B%3D1%5Cn%5Ctreturn%20s%5Cn%5Cn%27%27%27%5Cndef%20linkEdit%28line%29%3A%5Cn%5Ct%23line%3Dre.sub%28%27%5E%5B%5E%3A%5D%2A%3A%5C%5C%7C%3A%27%2C%27%3D%27%2Cline%29%5Cn%5Cts%3D%27%27%5Cn%5Ctid%3D%27s%7B%7D%27.format%28dt.id%29%5Cn%5Ctl%3Dline%5Cn%5Ctline%3Dline.replace%28%27%40%27%2C%27%27%29%5Cn%5Ctline%3Dline.replace%28%27%2A%27%2C%27%27%29%5Cn%5Ctline%3Dline.replace%28%27%25%27%2C%27%27%29%5Cn%5Ctif%28l%21%3Dline%29%3A%5Cn%5Ct%5Cts%3D%27%3Ct%20id%3D%5C%22%27%2Bid%2B%27%5C%22%20onClick%3D%5C%22edit%28%5C%5C%27%27%2Bid%2B%27%5C%5C%27%29%5C%22%20onBlur%3D%5C%22v%28%5C%5C%27%27%2Bid%2B%27%5C%5C%27%29%5C%22%3E%27%2Bline%2B%27%3C%2Ft%3E%27%5Cn%5Ctelse%3A%5Cn%5Ct%5Cts%3D%27%3Ct%20id%3D%5C%22%27%2Bid%2B%27%5C%22%20onClick%3D%5C%22edit%28%5C%5C%27%27%2Bid%2B%27%5C%5C%27%29%5C%22%20onBlur%3D%5C%22v%28%5C%5C%27%27%2Bid%2B%27%5C%5C%27%29%5C%22%3E%3Cr%3E%27%2Bline%2B%27%3C%2Fr%3E%3C%2Ft%3E%27%5Cn%5Ctdt.id%2B%3D1%5Cn%5Ctreturn%20s%5Cn%27%27%27%5Cn%5Cndef%20linkEdit%28line%29%3A%5Cn%5Ct%23line%3Dre.sub%28%27%5E%5B%5E%3A%5D%2A%3A%5C%5C%7C%3A%27%2C%27%3D%27%2Cline%29%5Cn%5Cts%3D%27%27%5Cn%5Ctid%3D%27s%7B%7D%27.format%28dt.id%29%5Cn%5Ctl%3Dline%5Cn%5Ctline%3Dline.replace%28%27%40%27%2C%27%27%29%5Cn%5Ctline%3Dline.replace%28%27%2A%27%2C%27%27%29%5Cn%5Ctline%3Dline.replace%28%27%25%27%2C%27%27%29%5Cn%5Ct%5Cn%5Cts%3D%27%3Ct%20id%3D%5C%22%27%2Bid%2B%27%5C%22%20style%3D%5C%22color%3A%23373737%5C%22%20onClick%3D%5C%22edit%28%5C%5C%27%27%2Bid%2B%27%5C%5C%27%29%5C%22%20onBlur%3D%5C%22v%28%5C%5C%27%27%2Bid%2B%27%5C%5C%27%29%5C%22%3E%27%2Bline%2B%27%3C%2Ft%3E%27%5Cn%5Ct%5Cn%5Ctdt.id%2B%3D1%5Cn%5Ctreturn%20s%5Ct%5Cn%5Cndef%20convertDict%28%29%3A%5Cn%5Ctwith%20open%28pathSave%2B%5C%22allDict_uni.txt%5C%22%2C%27w%27%29%20as%20f%3A%5Cn%5Ct%5Ctwith%20open%28pathSave%2B%5C%22allDict_rus16.js%5C%22%2C%27r%27%29%20as%20file%3A%5Cn%5Ct%5Ct%5Ctfor%20line%20in%20file%3A%5Cn%5Ct%5Ct%5Ct%5Ctif%28%28%27%5C%22%2C%5C%22%5C%22%2C%5C%22%27%20in%20line%29%3D%3DFalse%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctcontinue%5Cn%5Ct%5Ct%5Ct%5Ctstr%3Dline.replace%28%27%5B%5C%22%27%2C%27%27%29%5Cn%5Ct%5Ct%5Ct%5Ctstr%3Dstr.replace%28%27%5C%22%2C%5C%22%5C%22%2C%5C%22%27%2C%27%20%40%20%27%29%5Cn%5Ct%5Ct%5Ct%5Ctstr%3Dstr.replace%28%27%5C%22%5D%2C%27%2C%27%27%29%5Cn%5Ct%5Ct%5Ct%5Ctf.write%28str%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%20%5Cndef%20previousPage%28sender%29%3A%5Cn%5Ctglobal%20Pref%5Cn%5Ctpath%3DfileView%5B%27textfield1%27%5D.text%5Cn%5Ctpath%3DpathMain%2B%27%7B%7D%27.format%28path%29%5Cn%5Ctwith%20open%28path%2C%5C%22r%5C%22%29%20as%20f%3A%5Cn%5Ct%5CttextFile%3Df.readlines%28%29%5Cn%5Ctc%3DpageIndex.text%5Cn%5Cti%3D0%5Cn%5Ctif%28%27%23%27%20in%20c%29%3A%5Cn%5Ct%5Ctfor%20line%20in%20textFile%3A%5Cn%5Ct%5Ct%5Ctif%28c%20in%20line%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctbreak%5Cn%5Ct%5Ct%5Cti%2B%3D1%5Cn%5Ct%5Cti%3Di%2FpageSize%5Cn%5Ctelse%3A%5Cn%5Ct%5Cti%3Deval%28c%29-1%5Cn%5Ctif%28i%3C0%29%3A%5Cn%5Ct%5Cti%3Dlen%28textFile%29%2FpageSize%5Cn%5Ctpage%3DtextFile%5Bi%2ApageSize%3Ai%2ApageSize%2BpageSize%5D%5Cn%5CtpageIndex.text%3D%27%7B%7D%27.format%28i%29%5Cn%5CtPref%5B2%5D%3DpageIndex.text%5Cn%5Cttext%3D%27%3Ct%20id%3D%5C%22t1%5C%22%20onClick%3D%5C%22edit%28%5C%5C%27t1%5C%5C%27%29%5C%22%3E%27%2B%27%3Cbr%3E%27.join%28page%29%2B%27%3C%2Ft%3E%27%5Cn%5CtsearchBtn.title%3D%27Translate%27%5Cn%5Ctdt.mainMode%3DTRANSLATE%5Cn%5CtsearchText.text%3D%27%27%5Cn%5CtsavePref%28%29%5Cn%5CtprintHtml%28text%29%5Cn%5Cn%5Cndef%20nextPage%28sender%29%3A%5Cn%5Ctglobal%20Pref%5Cn%5Ctpath%3DfileView%5B%27textfield1%27%5D.text%5Cn%5Ctpath%3DpathMain%2B%27%7B%7D%27.format%28path%29%5Cn%5Ctwith%20open%28path%2C%5C%22r%5C%22%29%20as%20f%3A%5Cn%5Ct%5CttextFile%3Df.readlines%28%29%5Cn%5Ctc%3DpageIndex.text%5Cn%5Cti%3D0%5Cn%5Ctif%28%27%23%27%20in%20c%29%3A%5Cn%5Ct%5Ctfor%20line%20in%20textFile%3A%5Cn%5Ct%5Ct%5Ctif%28c%20in%20line%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctbreak%5Cn%5Ct%5Ct%5Cti%2B%3D1%5Cn%5Ct%5Cti%3Di%2FpageSize%5Cn%5Ctelse%3A%5Cn%5Ct%5Cti%3Deval%28c%29%2B1%5Cn%5Ctif%28i%3Elen%28textFile%29%2FpageSize%29%3A%5Cn%5Ct%5Cti%3D0%5Cn%5Ctpage%3DtextFile%5Bi%2ApageSize%3Ai%2ApageSize%2BpageSize%5D%5Cn%5CtpageIndex.text%3D%27%7B%7D%27.format%28i%29%5Cn%5CtPref%5B2%5D%3DpageIndex.text%5Cn%5Cttext%3D%27%3Ct%20id%3D%5C%22t1%5C%22%20onClick%3D%5C%22edit%28%5C%5C%27t1%5C%5C%27%29%5C%22%3E%27%2B%27%3Cbr%3E%27.join%28page%29%2B%27%3C%2Ft%3E%27%5Cn%5CtsearchBtn.title%3D%27Translate%27%5Cn%5Ctdt.mainMode%3DTRANSLATE%5Cn%5CtsearchText.text%3D%27%27%5Cn%5CtsavePref%28%29%5Cn%5CtprintHtml%28text%29%5Cn%5Ct%5Cn%5Ct%5Cndef%20printHtml%28text%29%3A%5Cn%5Ct%23with%20open%28pathSave%2BpageStyle%2C%5C%22r%5C%22%29%20as%20f%3A%5Cn%5CthtmlPage%3DPref%5B0%5D%5Cn%5Ctstr%3DhtmlPage.replace%28%27%40%40%40TEXT%40%40%40%27%2Ctext%29%5Cn%5Ctstr%3Dstr.replace%28%20chr%280%29%2C%27%20%27%29%5Cn%5CttextIn.load_html%28str%29%5Ct%5Cn%5Cndef%20printHTML_%28text%29%3A%5Cn%5Ct%23with%20open%28pathSave%2BpageStyle%2C%5C%22r%5C%22%29%20as%20f%3A%5Cn%5CthtmlPage%3DPref%5B0%5D%5Cn%5Ctstr%3DhtmlPage.replace%28%27%40%40%40TEXT%40%40%40%27%2Ctext%29%5Cn%5CtdictView.load_html%28str%29%5Ct%5Cn%5Cndef%20openText%28%29%3A%5Cn%5CtpathField%3DfileView%5B%27textfield1%27%5D%5Cn%5Ctpath%3DpathField.text%5Ct%5Cn%5Ctpath%3DpathMain%2B%27%7B%7D%27.format%28path%29%5Cn%5Ctif%28os.path.isfile%28path%29%29%3A%5Cn%5Ct%5Ct%5Cn%5Ct%5Ctwith%20open%28pathSave%2BpageStyle%2C%5C%22r%5C%22%29%20as%20f%3A%5Cn%5Ct%5Ct%5CthtmlPage%3Df.read%28%29%5Cn%5Ct%5Ct%5CtPref%5B0%5D%3DhtmlPage%5Cn%5Ct%5Ctwith%20open%28path%2C%5C%22r%5C%22%29%20as%20f%3A%5Cn%5Ct%5Ct%5CttextFile%3Df.readlines%28%29%5Cn%5Ct%5Ct%5Ctif%28len%28textFile%29%3C1%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctstr%3D%27no%20text%27%5Cn%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ctif%28len%28textFile%5B0%5D%29%3E1024%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctstr%3D%27too%20long%20line%27%5Cn%5Ct%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctc%3DpageIndex.text%5Cn%5Ct%5Ct%5Ct%5Ct%5Cti%3Deval%28c%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctpage%3DtextFile%5Bi%2ApageSize%3Ai%2ApageSize%2BpageSize%5D%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%23pageIndex.text%3D%27%7B%7D%27.format%28i%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctstr%3D%27%3Cbr%3E%27.join%28page%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%28len%28str%29%3E90000%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctstr%3D%27too%20long%20line%27%5Cn%5Ct%5Ct%5Ct%5Ct%5Cn%5Ct%5Ct%5Cttext%3D%27%3Ct%20id%3D%5C%22t1%5C%22%20onClick%3D%5C%22edit%28%5C%5C%27t1%5C%5C%27%29%5C%22%3E%27%2Bstr%2B%27%3C%2Ft%3E%27%5Cn%5Ct%5Ct%5Ctstr%3DhtmlPage.replace%28%27%40%40%40TEXT%40%40%40%27%2Ctext%29%5Cn%5Ct%5Ct%5Ctstr%3Dstr.replace%28%20chr%280%29%2C%27%20%27%29%5Cn%5Ct%5Ct%5CttextIn.load_html%28str%29%5Ct%5Cn%5Ct%5Ct%5Ct%23print%20str%5Cn%5Ctelse%3A%5Cn%5Ct%5Ctprint%20%27not%20open%20%27%2B%20path%5Cn%5Ct%5Ctmenu%281%29%5Cn%5Ct%5Ct%5Cndef%20copyText%28sender%29%3A%5Cn%5CtpathField%3DfileView%5B%27textfield1%27%5D%5Cn%5Ctpath%3DpathField.text%5Ct%5Cn%5Ctpath%3DpathMain%2B%27%7B%7D%27.format%28path%29%5Cn%5Ctif%28os.path.isfile%28path%29%29%3A%5Cn%5Ct%5Ctwith%20open%28path%2C%5C%22r%5C%22%29%20as%20f%3A%5Cn%5Ct%5Ct%5CttextFile%3Df.read%28%29%5Cn%5Ct%5Ctdialogs.share_text%28textFile%29%5Cn%5Ct%5Cndef%20menu%28sender%29%3A%5Cn%5Ctpath%3DfileView%5B%27textfield1%27%5D.text%5Cn%5Ctpath%3Dre.sub%28%27%2F%5B%2F%5D%2B%27%2C%27%2F%27%2Cpath%29%5Cn%5CtfileView%5B%27textfield1%27%5D.text%3Dpath%5Cn%5Cttbl%3DfileView%5B%27tableview1%27%5D%5Cn%5CttblD%3DfileView%5B%27tableview2%27%5D%5Cn%5Ctpath%3Dos.path.dirname%28path%29%5Cn%5Ctif%28os.path.isdir%28pathMain%2Bpath%29%29%3A%5Cn%5Ct%5CtlistD%3Dos.listdir%28pathMain%2Bpath%29%5Cn%5Ctelse%3A%5Cn%5Ct%5Ctpath%3D%27%2F%27%5Cn%5Ct%5CtlistD%3Dos.listdir%28pathMain%29%5Cn%5Ct%5CtfileView%5B%27textfield1%27%5D.text%3D%27%2F%27%5Cn%5Ctl%3D%5B%5D%5Cn%5Ctld%3D%5B%27...%27%5D%5Cn%5Ctfor%20line%20in%20listD%3A%5Cn%5Ct%5Ctif%28os.path.isdir%28pathMain%2Bpath%2B%27%2F%27%2Bline%29%29%3A%5Cn%5Ct%5Ct%5Ctld.append%28line%29%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctl.append%28line%29%5Cn%5Cttbl.data_source.items%3Dl%5Cn%5CttblD.data_source.items%3Dld%5Cn%5CtfileView.x%3D0%5Cn%5Ct%5Cndef%20openDir%28sender%29%3A%5Cn%5Ctpath%3DfileView%5B%27textfield1%27%5D.text%5Cn%5Ctpath%3Dpath.replace%28%27%23%27%2C%27%2F%27%29%5Cn%5Ctpath%3Dos.path.dirname%28path%29%5Cn%5Cttbl%3DfileView%5B%27tableview1%27%5D%5Cn%5CttblD%3DfileView%5B%27tableview2%27%5D%5Cn%5Ctdir%3DtblD.data_source.items%5BtblD.selected_row%5B1%5D%5D%5Cn%5Ctif%28dir%3D%3D%27...%27%29%3A%5Cn%5Ct%5Ctpath%3Dos.path.dirname%28path%29%5Cn%5Ct%5Ctdir%3D%27%27%5Cn%5CtlistD%3Dos.listdir%28pathMain%2Bpath%2B%27%2F%27%2Bdir%29%5Cn%5Ctc%3Dpath%2B%27%2F%27%2Bdir%2B%27%2F%27%5Cn%5Ctc%3Dc.replace%28%27%23%27%2C%27%2F%27%29%5Cn%5Ctc%3Dre.sub%28%27%2F%2F%2B%27%2C%27%2F%27%2Cc%29%5Cn%5CtfileView%5B%27textfield1%27%5D.text%3Dc%5Cn%5Ctl%3D%5B%5D%5Cn%5Ctld%3D%5B%27...%27%5D%5Cn%5Ctfor%20line%20in%20listD%3A%5Cn%5Ct%5Ctif%28os.path.isdir%28pathMain%2Bpath%2B%27%2F%27%2Bdir%2B%27%2F%27%2Bline%29%29%3A%5Cn%5Ct%5Ct%5Ctld.append%28line%29%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctl.append%28line%29%5Cn%5Cttbl.data_source.items%3Dl%5Cn%5CttblD.data_source.items%3Dld%5Cn%5Cndef%20openFile%28sender%29%3A%5Cn%5Ctglobal%20Pref%5Cn%5Cttbl%3DfileView%5B%27tableview1%27%5D%5Cn%5Ctline%3Dtbl.data_source.items%5Btbl.selected_row%5B1%5D%5D%5Cn%5CtfileView.x%3D1024%5Cn%5Ctpath%3DfileView%5B%27textfield1%27%5D.text%5Cn%5Ctpath%3Dos.path.dirname%28path%29%5Cn%5CtfileView%5B%27textfield1%27%5D.text%3Dpath%2B%27%2F%27%2Bline%5Cn%5CtPref%5B1%5D%3Dpath%2B%27%2F%27%2Bline%5Cn%5CtPref%5B2%5D%3D%270%27%5Cn%5CtpageIndex.text%3D%270%27%5Cn%5CtsavePref%28%29%5Cn%5CtopenText%28%29%5Cn%5Ct%5Ct%5Cndef%20closeMenu%28sender%29%3A%5Cn%5CtfileView.x%3D1024%5Cn%5Cndef%20replaceRegExpFile%28sender%29%3A%5Cn%5Ctpath%3DfileView%5B%27textfield1%27%5D.text%5Cn%5Ctpath%3DpathMain%2B%27%7B%7D%27.format%28path%29%5Cn%5CtpathRep%3DfileView%5B%27textfield3%27%5D.text%5Cn%5CtpathRep%3DpathMain%2B%27%7B%7D%27.format%28pathRep%29%5Cn%5Ctwith%20open%28pathRep%2C%5C%22r%5C%22%29%20as%20f%3A%5Cn%5Ct%5Ctstr%3Df.read%28%29%5Cn%5Ct%5CtdataRegExp%3Dstr.split%28%27%5C%5Cn%3A%7C%3A%5C%5Cn%27%29%5Cn%5Ct%5Ct%5Cn%5Ctpath%3Dos.path.dirname%28path%29%5Cn%5CtlistD%3Dos.listdir%28path%29%5Cn%5Ctfor%20line%20in%20listD%3A%5Cn%5Ct%5Ctprint%20line%5Cn%5Ct%5Ctif%28os.path.isdir%28path%2B%27%2F%27%2Bline%29%29%3A%5Cn%5Ct%5Ct%5Ctpass%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctprint%20%27start%20%27%2Bline%5Cn%5Ct%5Ct%5Ctwith%20open%28path%2B%27%2F%27%2Bline%2C%5C%22r%5C%22%29%20as%20f%3A%5Cn%5Ct%5Ct%5Ct%5Cttext%3Df.read%28%29%5Cn%5Ct%5Ct%5Ct%5Ctfor%20l%20in%20dataRegExp%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctc%3Dl.split%28%27%20--%3E%20%27%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%28len%28c%29%3C2%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctprint%20%27not%20valid%20re%20%27%2Bl%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Cttext%3Dre.sub%28c%5B0%5D%2Cc%5B1%5D%2Ctext%29%5Cn%5Ct%5Ct%5Ctwith%20open%28path%2B%27%2F%27%2Bline%2C%5C%22w%5C%22%29%20as%20f%3A%5Ct%5Cn%5Ct%5Ct%5Ct%5Ctf.write%28text%29%5Ct%5Cn%5Ct%5Ct%5Ctprint%20%27done%20%27%2Bline%5Ct%5Cn%5Cn%5Ct%5Cndef%20replaceRegExp%28sender%29%3A%5Cn%5Ctpass%5Ct%5Cn%5Cndef%20replaceRegExpText%28sender%29%3A%5Cn%5Ctpath%3DfileView%5B%27textfield1%27%5D.text%5Cn%5Ctpath%3DpathMain%2B%27%7B%7D%27.format%28path%29%5Cn%5CttextSrc%3DfileView%5B%27textfield4%27%5D.text%5Cn%5CttextSrc%3D%27%7B%7D%27.format%28textSrc%29%5Cn%5CttextRep%3DfileView%5B%27textfield5%27%5D.text%5Cn%5CttextRep%3D%27%7B%7D%27.format%28textRep%29%5Cn%5Cta%3Dre.compile%28textSrc%2Cre.M%29%5Cn%5Ctwith%20open%28path%2C%5C%22r%5C%22%29%20as%20f%3A%5Cn%5Ct%5CttextFile%3Df.read%28%29%5Cn%5Ct%5CttextFile%3Dunicode%28textFile%29%5Cn%5Ct%5Ctc%3Dchr%280xA0%29%5Cn%5Ct%5CttextFile%3Dre.sub%28c%2C%27%20%27%2CtextFile%29%5Cn%5Ct%5CttextFile%3D%27%7B%7D%27.format%28textFile%29%5Cn%5Ct%5Ct%23s%3DtextFile%5B0%3A32%5D%5Cn%5Ct%5Ct%23s%3Dunicode%28s%29%5Cn%5Ct%5Ct%23i%3D0%5Cn%5Ct%5Ct%23while%20i%3Clen%28s%29%3A%5Cn%5Ct%5Ct%23%5Ctprint%20%27%7B0%3Ax%7D%27.format%28ord%28s%5Bi%5D%29%29%5Cn%5Ct%5Ct%23%5Cti%2B%3D1%5Cn%5Ct%5Ct%5Cn%5Ct%5CttextFile%3Dre.sub%28a%2CtextRep%2CtextFile%29%5Cn%5Ct%5Ct%23textFile%3DtextFile.replace%28textSrc%2CtextRep%29%5Cn%5Ct%5Ct%23textFile%3DtextFile.replace%28%27%20%27%2C%27%5C%5Cn%27%29%5Cn%5Ct%5Ct%23textFile%3Dre.sub%28%27%5Cu0f0d%27%2C%27%5Cu0f0d%5C%5Cn%27%2CtextFile%29%5Cn%5Ct%5Ct%23textFile%3Dre.sub%28r%27%5C%5Cn%5B%5C%5Cn%5D%2B%27%2C%27%5C%5Cn%27%2CtextFile%29%5Cn%5Ct%5Ct%23textFile%3Dre.sub%28r%27%5Cu0f0d%5C%5Cn%5B%20%5D%2A%5Cu0f0d%5C%5Cn%27%2C%27%5Cu0f0d%5C%5Cn%5Cu0f0d%27%2CtextFile%29%5Cn%5Ct%5Ct%23textFile%3Dre.sub%28r%27%20%27%2C%27%5C%5Cn%27%2CtextFile%29%5Cn%5Ct%5Ct%5Cn%5Ctwith%20open%28path%2C%5C%22w%5C%22%29%20as%20f%3A%5Ct%5Cn%5Ct%5Ctf.write%28textFile%29%5Ct%5Ct%5Cn%5CtopenText%28%29%5Cn%5CtfileView.x%3D1024%5Cn%5Ct%5Cn%5Ct%5Cndef%20searchInDharmabook%28sender%29%3A%5Cn%5Ctpath%3DpathSave%2B%5C%22XML_DICT%2FDHARMABOOK.tab%5C%22%5Ct%5Cn%5Cttext%3DfileView%5B%27textfield6%27%5D.text%5Cn%5Cttext%3D%27%7B%7D%27.format%28text%29%5Cn%5Ctres%3D%27%27%5Cn%5Cti%3D0%5Cn%5Cn%5Ctwith%20open%28path%2C%5C%22r%5C%22%29%20as%20f%3A%5Cn%5Ct%5Ctfor%20line%20in%20f%3A%5Cn%5Ct%5Ct%5Ctstr%3Dline%5B0%3A1024%5D%5Cn%5Ct%5Ct%5Ctif%28text%20in%20str%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctl%3Dlen%28str%29%5Cn%5Ct%5Ct%5Ct%5Ctstr%3Dstr%5B0%3Astr.rfind%28%27%20%27%29%5D%5Cn%5Ct%5Ct%5Ct%5Ctif%28len%28str%29%3D%3Dl%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctstr%3Dstr%5B0%3Astr.rfind%28%27%5Cu00b6%27%29%5D%5Cn%5Ct%5Ct%5Ct%5Ctres%2B%3Dstr%2B%27%5C%5Cn%27%5Cn%5Ct%5Ct%5Ct%5Cti%2B%3D1%5Cn%5Ct%5Ct%5Ctif%28i%3E300%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctbreak%20%5Ct%5Cn%5Ctwith%20open%28pathSave%2B%27res_dharmabook.txt%27%2C%5C%22w%5C%22%29%20as%20f%3A%5Cn%5Ct%5Ctf.write%28res%29%20%20%5Ct%5Cn%20%5CtfileView.x%3D1024%5Cn%20%5Ct%5Cndef%20searchInDharmabookFullText%28sender%29%3A%5Cn%5Ctpath%3DpathSave%2B%5C%22XML_DICT%2FDHARMABOOK.tab%5C%22%5Ct%5Cn%5Cttext%3DfileView%5B%27textfield6%27%5D.text%5Cn%5Cttext%3D%27%7B%7D%27.format%28text%29%5Cn%5Ctres%3D%27%27%5Cn%5CtsearchCount%3D0%5Cn%5Cn%5Ctwith%20open%28path%2C%5C%22r%5C%22%29%20as%20f%3A%5Cn%5Ct%5Ctfor%20line%20in%20f%3A%5Cn%5Ct%5Ct%5Ctindex%3Dline.find%28text%29%5Cn%5Ct%5Ct%5Ctif%28index%21%3D-1%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctstr%3Dline%5B0%3A256%5D%5Cn%5Ct%5Ct%5Ct%5Ctif%28str.rfind%28%27%20%27%29%21%3D-1%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctstr%3Dstr%5B0%3Astr.rfind%28%27%20%27%29%5D%5Cn%5Ct%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%28str.rfind%28%27%5Cu00b6%27%29%21%3D-1%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctstr%3Dstr%5B0%3Astr.rfind%28%27%5Cu00b6%27%29%5D%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctif%28str.rfind%28%27%5Cu0f0b%27%29%21%3D-1%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctstr%3Dstr%5B0%3Astr.rfind%28%27%5Cu0f0b%27%29%5D%5Cn%5Ct%5Ct%5Ct%5Ct%23print%20%27%7B0%3Ad%7D%27.format%28len%28resList%29%29%2B%27%20found%20%27%2Bstr%5Cn%5Ct%5Ct%5Ct%5Ctres%2B%3D%27%5C%5Cn%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%5C%5Cn%27%2Bstr%2B%27%5C%5Cn____________________________________%5C%5Cn%27%5Cn%5Ct%5Cn%5Ct%5Ct%5Ctwhile%28index%21%3D-1%29%3A%5Ct%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctstr%3Dline%5Bindex-512%3Aindex%5D%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctl%3Dlen%28str%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%28str.find%28%27%20%27%29%21%3D-1%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctstr%3Dstr%5Bstr.find%28%27%20%27%29%3Al%5D%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctif%28str.find%28%27%5Cu00b6%27%29%21%3D-1%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctstr%3Dstr%5Bstr.find%28%27%5Cu00b6%27%29%3Al%5D%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctif%28str.find%28%27%5Cu0f0b%27%29%21%3D-1%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctstr%3Dstr%5Bstr.find%28%27%5Cu0f0b%27%29%3Al%5D%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctres%2B%3Dstr%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctstr%3Dline%5Bindex%3Aindex%2B512%5D%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%28str.rfind%28%27%20%27%29%21%3D-1%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctstr%3Dstr%5B0%3Astr.rfind%28%27%20%27%29%5D%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctif%28str.rfind%28%27%5Cu00b6%27%29%21%3D-1%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctstr%3Dstr%5B0%3Astr.rfind%28%27%5Cu00b6%27%29%5D%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctif%28str.rfind%28%27%5Cu0f0b%27%29%21%3D-1%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctstr%3Dstr%5B0%3Astr.rfind%28%27%5Cu0f0b%27%29%5D%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctres%2B%3Dstr%2B%27%5C%5Cn%5C%5Cn%27%5Cn%5Ct%5Ct%5Ct%5Ct%5CtsearchCount%2B%3D1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%28searchCount%3E300%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctbreak%20%5Ct%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctindex%3Dline.find%28text%2Cindex%2Blen%28text%29%29%5Cn%5Ct%5Ct%5Ctif%28searchCount%3E300%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctbreak%20%5Cn%5Ctres%3Dunicode%28res%29%5Cn%5Ctc%3Dchr%280xA0%29%5Cn%5Ctres%3Dre.sub%28c%2C%27%20%27%2Cres%29%5Cn%5Ctres%3D%27%7B%7D%27.format%28res%29%5Ct%5Ct%5Cn%5Ctres%3Dres.replace%28%27%5Cu00b6%27%2C%27%5C%5Cn%27%29%5Cn%5Ctres%3Dres.replace%28%27%5Cu0f0d%20%27%2C%27%5Cu0f0d%5C%5Cn%27%29%5Cn%5Ctres%3Dres.replace%28%27%5Cu0f14%20%27%2C%27%5Cu0f14%20%5C%5Cn%27%29%5Cn%5Ctwith%20open%28pathSave%2B%27res_dharmabookFullText.txt%27%2C%5C%22w%5C%22%29%20as%20f%3A%5Cn%5Ct%5Ctf.write%28res%29%20%20%5Ct%5Cn%20%5CtfileView.x%3D1024%5Cn%20%5Ct%5Cn%20%5Ct%5Cndef%20exportTextByID%28sender%29%3A%5Cn%5Ctpath%3DpathSave%2B%5C%22XML_DICT%2FDHARMABOOK.tab%5C%22%5Ct%5Cn%5Cttext%3DfileView%5B%27textfield6%27%5D.text%5Cn%5Cttext%3D%27%7B%7D%27.format%28text%29%5Cn%5Ctwith%20open%28path%2C%5C%22r%5C%22%29%20as%20f%3A%5Cn%5Ct%5Ctfor%20line%20in%20f%3A%5Cn%5Ct%5Ct%5Ctstr%3Dline%5B0%3A128%5D%5Cn%5Ct%5Ct%5Ctif%28text%20in%20str%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctwith%20open%28pathSave%2B%27res_dharmabookText.txt%27%2C%5C%22w%5C%22%29%20as%20f%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctf.write%28line%29%20%20%5Cn%5Ct%5Ct%5Ct%5Ctbreak%5Ct%5Cn%20%5CtfileView.x%3D1024%5Cn%20%20%5Ct%5Cn%20%5Ct%5Cn%5Cndef%20searchInFolder%28sender%29%3A%5Cn%5Ctprint%20%27search%27%5Cn%5Ctpath%3DfileView%5B%27textfield1%27%5D.text%5Cn%5Ctpath%3DpathMain%2B%27%7B%7D%27.format%28path%29%5Cn%5Ctprint%20path%5Cn%5Ctstr%3DfileView%5B%27textfield6%27%5D.text%5Cn%5Ctstr%3D%27%7B%7D%27.format%28str%29%5Cn%5Ctres%3D%27%27%5Ct%5Cn%5Ctpath%3Dos.path.dirname%28path%29%5Cn%5CtlistD%3Dos.listdir%28path%29%5Cn%5Cti%3D0%5Cn%5Ctfor%20line%20in%20listD%3A%5Cn%5Ct%5Ctif%28os.path.isdir%28path%2B%27%2F%27%2Bline%29%29%3A%5Cn%5Ct%5Ct%5Ctpass%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctwith%20open%28path%2B%27%2F%27%2Bline%2C%5C%22r%5C%22%29%20as%20f%3A%5Cn%5Ct%5Ct%5Ct%5Ctfor%20l%20in%20f%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctif%20%28str%20in%20l%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctres%2B%3Dline%2B%27%5C%5Cn%27%2Bl%2B%27%5C%5Cn%27%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Cti%2B%3D1%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctif%28i%3E100%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctres%3Dres.replace%28%27%5C%5Cn%5C%5Cn%27%2C%27%5C%5Cn%27%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctwith%20open%28pathSave%2B%27res.txt%27%2C%5C%22w%5C%22%29%20as%20f%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctf.write%28res%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctreturn%5Cn%5Ctres%3Dres.replace%28%27%5C%5Cn%5C%5Cn%27%2C%27%5C%5Cn%27%29%5Cn%5Ctwith%20open%28pathSave%2B%27res_1.txt%27%2C%5C%22w%5C%22%29%20as%20f%3A%5Cn%5Ct%5Ctf.write%28res%29%5Cn%5Cndef%20searchInFileText%28sender%29%3A%5Cn%5Ctpath%3DfileView%5B%27textfield1%27%5D.text%5Cn%5Cttext%3DfileView%5B%27textfield6%27%5D.text%5Cn%5Cttext%3D%27%7B%7D%27.format%28text%29%5Cn%5Ctpath%3DpathMain%2B%27%7B%7D%27.format%28path%29%5Cn%5Ctwith%20open%28path%2C%5C%22r%5C%22%29%20as%20f%3A%5Cn%5Ct%5CttextFile%3Df.readlines%28%29%5Cn%5Cti%3D0%5Cn%5Ctfor%20line%20in%20textFile%3A%5Cn%5Ct%5Ctif%28text%20in%20line%29%3A%5Cn%5Ct%5Ct%5Ctbreak%5Cn%5Ct%5Cti%2B%3D1%5Cn%5Cti%3Di%2FpageSize%5Cn%5Ctpage%3DtextFile%5Bi%2ApageSize%3Ai%2ApageSize%2BpageSize%5D%5Cn%5CtpageIndex.text%3D%27%7B%7D%27.format%28i%29%5Cn%5Cttext%3D%27%3Ct%20id%3D%5C%22t1%5C%22%20onClick%3D%5C%22edit%28%5C%5C%27t1%5C%5C%27%29%5C%22%3E%27%2B%27%3Cbr%3E%27.join%28page%29%2B%27%3C%2Ft%3E%27%5Cn%5CtprintHtml%28text%29%5Cn%5CtfileView.x%3D1024%5Cn%5Ct%5Cndef%20searchInFile%28sender%29%3A%5Ct%5Cn%5Ctpath%3DfileView%5B%27textfield1%27%5D.text%5Cn%5Cttext%3DfileView%5B%27textfield6%27%5D.text%5Cn%5Cttext%3D%27%7B%7D%27.format%28text%29%5Cn%5Ctpath%3DpathMain%2B%27%7B%7D%27.format%28path%29%5Cn%5Ctres%3D%27test%27%5Cn%5CtsearchCount%3D0%5Cn%5Cn%5Ctwith%20open%28path%2C%5C%22r%5C%22%29%20as%20f%3A%5Cn%5Ct%5CttextLines%3Df.readlines%28%29%5Cn%5Ct%5Cti%3D1%5Cn%5Ct%5Ctl%3Dlen%28textLines%29-1%5Cn%5Ct%5Ctwhile%28i%3Cl%29%3A%5Cn%5Ct%5Ct%5Ctindex%3DtextLines%5Bi%5D.find%28text%29%5Cn%5Ct%5Ct%5Ctif%28index%21%3D-1%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctres%2B%3DtextLines%5Bi-1%5D%2BtextLines%5Bi%5D%2BtextLines%5Bi%2B1%5D%2B%27%5C%5Cn%5Cu0f04%5Cu0f0d%5Cu0f0d%5C%5Cn%27%5Cn%5Ct%5Ct%5Ct%5CtsearchCount%2B%3D1%5Cn%5Ct%5Ct%5Cti%2B%3D1%5Cn%5Ctprint%20searchCount%5Cn%5Ctwith%20open%28pathSave%2B%27res_dharmabookTextSearch.txt%27%2C%5C%22w%5C%22%29%20as%20f%3A%5Cn%5Ct%5Ctf.write%28res%29%20%20%5Ct%5Cn%20%5CtfileView.x%3D1024%5Cn%20%5Ct%5Cn%5Cn%5Cndef%20close%28sender%29%3A%5Cn%5Ctdt.close%28%29%5Ct%5Cn%5Ctview.close%28%29%5Cn%5CtsavePref%28%29%5Cn%5Cndef%20cmpLines%28a%2Cb%29%3A%5Cn%5Cta_%3Dlen%28a.split%28%27%20%40%20%27%29%5B0%5D%29%5Cn%5Ctb_%3Dlen%28b.split%28%27%20%40%20%27%29%5B0%5D%29%5Cn%5Ctif%28a_%3Eb_%29%3A%5Cn%5Ct%5Ctreturn%20-1%5Cn%5Ctelif%28a_%3Cb_%29%3A%5Cn%5Ct%5Ctreturn%201%5Cn%5Ctelse%3A%5Cn%5Ct%5Ctreturn%200%5Cn%5Ct%5Cn%5Cndef%20saveDict%28text%29%3A%5Cn%5CtdictNew%3Dlist%28%29%5Cn%5Cttext%3Dre.sub%28r%27%3C%5B%5E%3E%5D%2A%3E%27%2C%27%27%2Ctext%29%5Cn%5Cttext%3Dtext.replace%28%27%5Cu00ab%27%2C%27%5Cu0f3c%27%29%5Cn%5Cttext%3Dtext.replace%28%27%7B%27%2C%27%5Cu0f3c%27%29%5Cn%5Cttext%3Dtext.replace%28%27%5Cu00bb%27%2C%27%5Cu0f3d%27%29%5Cn%5Cttext%3Dtext.replace%28%27%7D%27%2C%27%5Cu0f3d%27%29%5Cn%5Ctlines%3Dtext.split%28%27%5B%27%29%5Cn%5Ctfor%20l%20in%20lines%3A%5Cn%5Ct%5Ctif%20%28%27%3D%27%20in%20l%29%3A%5Cn%5Ct%5Ct%5Ctcontinue%5Cn%5Ct%5Ctif%20%28%27%2F%27%20in%20l%29%3A%5Cn%5Ct%5Ct%5Ct%23print%20l%5Cn%5Ct%5Ct%5Ctc%3Dl.split%28%27%5D%27%29%5Cn%5Ct%5Ct%5Ctd%3Dc%5B0%5D.split%28%27%2F%27%29%5Cn%5Ct%5Ct%5Ctif%28len%28d%29%3E1%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctkey%3Dd%5B0%5D%2B%27%5Cu0f0b%27%5Cn%5Ct%5Ct%5Ct%5Ctkey%3Dkey.replace%28%27%5Cu0f0b%5Cu0f0b%27%2C%27%5Cu0f0b%27%29%5Cn%5Ct%5Ct%5Ct%5Ctif%20%28d%5B1%5D%3D%3D%27-%27%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctdk.rem%28key%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctcontinue%5Cn%5Ct%5Ct%5Ct%5Ctif%28len%28d%5B0%5D%29%3C3%20or%20len%28d%5B1%5D%29%3C3%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctcontinue%5Cn%5Ct%5Ct%5Ct%5Ctvalue%3Dd%5B1%5D%2B%27%25%27%5Cn%5Ct%5Ct%5Ct%5Ctvalue%3Dvalue.replace%28%27%40%25%27%2C%27%25%27%29%5Cn%5Ct%5Ct%5Ct%5Ctvalue%3Dvalue.replace%28%27%2A%25%27%2C%27%25%27%29%5Cn%5Ct%5Ct%5Ct%5Ctvalue%3Dvalue.replace%28%27%25%25%27%2C%27%25%27%29%5Cn%5Ct%5Ct%5Ct%5Ctdk.put%28key%2Cvalue%29%5Cn%5Ctdk.saveInd%28%29%5Cn%5Ct%5Ct%5Cndef%20htmlToText%28textAll%29%3A%5Cn%5CttextAll%3DtextAll.replace%28%27%5C%5Cn%27%2C%27%27%29%5Cn%5CttextAll%3DtextAll.replace%28%27%3Cbr%3E%27%2C%27%5C%5Cn%27%29%5Cn%5CttextAll%3DtextAll.replace%28%27%3Cdiv%3E%27%2C%27%5C%5Cn%27%29%5Cn%5CttextAll%3DtextAll.replace%28%27%26nbsp%27%2C%27%27%29%5Cn%5CttextAll%3DtextAll.replace%28%27%3Cc%3E%27%2C%27%40%27%29%5Cn%5CttextAll%3DtextAll.replace%28%27%3Cr%3E%27%2C%27%40%27%29%5Cn%5Ct%23textAll%3DtextAll.replace%28%27%5B%27%2C%27%40%27%29%5Cn%5CttextAll%3Dre.sub%28r%27%40.%2A%27%2C%27%40%27%2CtextAll%29%5Cn%5CttextAll%3DtextAll.replace%28%27%40%5C%5Cn%27%2C%27%27%29%5Cn%5CttextAll%3Dre.sub%28r%27%3C%5B%5E%3E%5D%2A%3E%27%2C%27%27%2CtextAll%29%5Cn%5Ctreturn%20textAll%5Cn%5Cndef%20save%28sender%29%3A%5Cn%5Ctf%20%3D%20open%28pathSave%2B%27_pref.txt%27%2C%5C%22w%5C%22%29%5Cn%5Ctpickle.dump%28Pref%2C%20f%29%5Cn%5Ctf.close%28%29%5Ct%5Cn%5Ct%5Ct%5Cn%5Ct%23textIn.text%20is%20unicode%2C%20it%20is%20need%20convert%20it%20in%20utf-8%5Cn%5Ct%23need%20rewrite%20with%20codecs%20%5Cn%5Ctjs%3D%27readText%28%29%27%5Cn%5Ctif%28mainDictView.x%3D%3D0%29%3A%5Cn%5Ct%5CttextAll%3DdictView.eval_js%28js%29%5Cn%5Ct%5CttextAll%3D%27%7B%7D%27.format%28textAll%29%5Cn%5Ct%5CtsaveDict%28textAll%29%5Cn%5Ct%5Ctreturn%5Cn%5Ct%5Cn%5CttextAll%3DtextIn.eval_js%28js%29%5Cn%5Ct%23textIn.text%20is%20unicode%2C%20it%20is%20need%20convert%20it%20in%20utf-8%5Cn%5CttextAll%3D%27%7B%7D%27.format%28textAll%29%5Cn%5CtsaveDict%28textAll%29%5Cn%5Cndef%20clearSearch%28sender%29%3A%5Cn%5CtsearchText.text%3D%27%27%5Cn%5Ct%5Ct%5Cndef%20closeDictView%28sender%29%3A%5Cn%5Ctif%28len%28dt.history%29%3E0%29%3A%5Cn%5Ct%5Ctdt.history.pop%28%29%5Cn%5Ct%5Ctif%28len%28dt.history%29%3E0%29%3A%5Cn%5Ct%5Ct%5CtsearchText.text%3Ddt.history%5Blen%28dt.history%29-1%5D%5Cn%5Ct%5Ct%5Ctdt.history.pop%28%29%5Cn%5Ct%5Ct%5CtdictEntry%28%29%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5CtmainDictView.x%3D1024%5Cn%5Ctelse%3A%5Cn%5Ct%5CtmainDictView.x%3D1024%5Cn%5Ct%5Cndef%20setCommentaryTag%28sender%29%3A%5Cn%5Ctpath%3DfileView%5B%27textfield1%27%5D.text%5Cn%5Ctpath%3DpathMain%2B%27%7B%7D%27.format%28path%29%5Cn%5Ctwith%20open%28path%2C%5C%22r%5C%22%29%20as%20f%3A%5Cn%5Ct%5CttextFile%3Df.readlines%28%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%20%20%5Cn%5Ctfor%20key%20in%20dk.keyList%3A%5Cn%5Ct%5Ctkey%3Dkey.rstrip%28%27%5C%5Cn%27%29%5Cn%5Ct%5Ctdk.get%28key%29%5Cn%5Ct%5Ctc%3Ddk.res%5Cn%5Ct%5Ctif%28%27__%27%20in%20c%29%3A%5Cn%5Ct%5Ct%5Cti%3D0%5Cn%5Ct%5Ct%5Ctkey%3Dkey.rstrip%28%27%5Cu0f0b%27%29%5Cn%5Ct%5Ct%5Ctfor%20line%20in%20textFile%3A%5Cn%5Ct%5Ct%5Ct%5Cts%3Dunicode%28line%29%5Cn%5Ct%5Ct%5Ct%5Cts%3Dre.sub%28u%27%5B%20_%5C%5Cd%5C%5C%20%5C%22%5Ct%5C%5C%27%5C%5C%2A%5C%5C%28%5C%5C%29%5C%5C%7B%5C%5C%7D%5C%5C%5B%5C%5C%5D%40%5Cu2022%23%5C%5C%25%5C%5C%26%5Cu0f04%5Cu0f05%5Cu0f14%5Cu0f34%5Cu0f21%5Cu0f22%5Cu0f23%5Cu0f24%5Cu0f25%5Cu0f26%5Cu0f27%5Cu0f28%5Cu0f29%5Cu0f20%5Cu0f0e%5Cu0f0d%5Cu0f11%5Cu0f08%5Cu0f0c%5Cu0f10%5Cu0f0f%5Cu0f3c%5Cu0f3d%5Cu0900-%5Cu097f%5D%27%2Cu%5C%22%5Cu0f0b%5C%22%2Cs%29%5Cn%5Ct%5Ct%5Ct%5Cts%3Dre.sub%28u%27%5Cu0f0b%5B%5Cu0f0b%5D%2B%27%2Cu%5C%22%5Cu0f0b%5C%22%2Cs%29%5Cn%5Ct%5Ct%5Ct%5Cts%3D%27%7B%7D%27.format%28s%29%5Cn%5Ct%5Ct%5Ct%5Ctif%28key%20in%20s%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5CttextFile%5Bi%5D%3D%27%23_%27%2BtextFile%5Bi%5D%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctbreak%5Cn%5Ct%5Ct%5Ct%5Cti%2B%3D1%5Cn%5Ctwith%20open%28path%2C%5C%22w%5C%22%29%20as%20f%3A%5Cn%5Ct%5Ctf.writelines%28textFile%29%5Cn%5Ct%5Ct%5Ct%5Cndef%20buildSummary%28sender%29%3A%5Cn%5Ctpath%3DfileView%5B%27textfield1%27%5D.text%5Cn%5Ctpath%3DpathMain%2B%27%7B%7D%27.format%28path%29%5Cn%5Ctres%3D%27%27%5Cn%5Ctwith%20open%28path%2C%5C%22r%5C%22%29%20as%20f%3A%5Cn%5Ct%5Ctfor%20line%20in%20f%3A%5Cn%5Ct%5Ct%5Ctif%28%27%23%27%20in%20line%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctres%2B%3Dline%5Ct%5Cn%5CtfileView%5B%27textfield1%27%5D.text%3D%27Dictionary%2F_res.txt%27%5Cn%5Ctpath%3DpathMain%2B%27Dictionary%2F_res.txt%27%5Cn%5Ctwith%20open%28path%2C%5C%22w%5C%22%29%20as%20f%3A%5Cn%5Ct%5Ctf.write%28res%29%5Cn%5CtopenText%28%29%5Cn%5Ct%5Cn%5Cndef%20fileCopy%28path1%2Cpath2%29%3A%5Cn%5Ctprint%20copy%5Cn%5Ctf%3Dopen%28path1%2C%20%27r%27%29%5Cn%5Ctt%3Df.readlines%28%29%5Cn%5Ct%23print%20len%28t%29%5Cn%5Ctf.close%28%29%5Cn%5Ctf%3Dopen%28path2%2C%20%27w%27%29%5Cn%5Ctf.writelines%28t%29%5Cn%5Ctf.close%28%29%5Cn%5Ct%5Cndef%20sortDict%28name%29%3A%5Cn%5Ctprint%20%27load%20%7B%7D%27.format%28name%29%5Cn%5Ctwith%20open%28pathSave%2B%27XML_DICT%2F%27%2Bname%2B%27.txt%27%29%20as%20f%3A%5Cn%5Ct%5Ctstr%3Df.read%28%29%5Cn%5Ct%5Ctf.close%28%29%5Cn%5Ct%5Ctstr%3Dstr.replace%28%27%5C%5Cr%27%2C%27%5C%5Cn%27%29%5Cn%5Ct%5Ctd%3Dstr.split%28%27%5C%5Cn%27%29%5Cn%5Ct%5Ctprint%20len%28d%29%5Cn%5Ct%5Ctd.sort%28%29%5Cn%5Ct%5Cti%3D0%5Cn%5Ct%5Cts%3Dlist%28%29%5Cn%5Ct%5Ctl%3D%27%27%5Cn%5Ct%5Ctfor%20line%20in%20d%3A%5Cn%5Ct%5Ct%5Cti%2B%3D1%5Cn%5Ct%5Ct%5Ctline%3Dline.replace%28%27%2A%27%2C%27%40%27%29%5Cn%5Ct%5Ct%5Ctline%3Dre.sub%28%27%5B%5C%5Cn%5C%5Cr%5C%5Ct%20%5D%2A%24%27%2C%27%27%2Cline%29%5Cn%5Ct%5Ct%5Ctif%28l%3D%3Dline%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctcontinue%5Cn%5Ct%5Ct%5Ct%5Cn%5Ct%5Ct%5Ct%23print%20line%2B%27%2F%27%5Cn%5Ct%5Ct%5Ct%23print%20len%28line%29%5Cn%5Ct%5Ct%5Ct%23if%28i%3D%3D10%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%23break%5Ct%5Cn%5Ct%5Ct%5Ct%5Ct%5Cn%5Ct%5Ct%5Ctl%3Dline%5Cn%5Ct%5Ct%5Cts.append%28line%2B%27%5C%5Cn%27%29%5Cn%5Ct%5Ctf%3Dopen%28pathSave%2B%27XML_DICT%2F%27%2Bname%2B%27_new.txt%27%2C%20%27w%27%29%5Cn%5Ct%5Ctf.writelines%28s%29%5Ct%5Cn%5Ct%5Ctf.close%28%29%5Cn%5Ct%5Ctprint%20len%28s%29%5Cn%5Ct%5Ctprint%20%27done%27%5Cn%5Ct%5Ct%5Cndef%20loadPref%28%29%3A%5Cn%5Ctglobal%20Pref%5Cn%5Ctp%3DpathSave%2B%27_pref_dict.txt%27%5Cn%5Cttry%3A%5Cn%5Ct%5Ctio.open%28p%2C%27r%27%29%5Cn%5Ctexcept%20IOError%3A%5Cn%5Ct%5CtsavePref%28%29%5Cn%5Ctwith%20open%28p%2C%27r%27%29%20as%20f%3A%5Cn%5Ct%5CtPref%3Dpickle.load%28f%29%5Cn%5Ctwhile%20len%28Pref%29%20%3C%205%3A%5Cn%5Ct%5CtPref.append%28%27%27%29%5Cn%5CtfileView%5B%27textfield1%27%5D.text%3DPref%5B1%5D%5Cn%5Ctif%28Pref%5B2%5D%3D%3D%27%27%29%3A%5Cn%5Ct%5CtPref%5B2%5D%3D%270%27%5Cn%5CtpageIndex.text%3DPref%5B2%5D%5Cn%5Ct%5Ct%5Cndef%20savePref%28%29%3A%5Cn%5Ctglobal%20Pref%5Cn%5Ctp%3DpathSave%2B%27_pref_dict.txt%27%5Cn%5Ctwith%20open%28p%2C%27w%27%29%20as%20f%3A%5Cn%5Ct%5Ctpickle.dump%28Pref%2Cf%29%5Cn%5Ct%5Ct%5Cn%5Cn%23sortDict%28%27exportDictionary_sort%27%29%5Cn%23sys.exit%28%29%5Cn%5Cn%5Cn%5Cn%23pData%3DpathSave%2B%5C%22XML_DICT%2FDHARMABOOK.bin%5C%22%5Ct%5Cn%23v%3DGVector%28%29%5Cn%23v.openData%28pData%29%5Ct%5Cn%23print%20v.getStr%280%29%5Cn%5Cn%23s%3D%27%20%27%5Cn%23print%20ord%28s%29%5Cn%23dialogs.share_text%28%27123%27%29%5Cn%23sys.exit%28%29%5Cn%5Cn%5Cn%5CnpData%3DpathSave%2B%5C%22XML_DICT%2F_GVector.txt%5C%22%5Ct%5CnpIndex%3DpathSave%2B%5C%22XML_DICT%2F_GVectorIndex.txt%5C%22%5Ct%5Cn%5CnpData_%3DpathSave%2B%5C%22XML_DICT%2F_GVector1.txt%5C%22%5Ct%5CnpIndex_%3DpathSave%2B%5C%22XML_DICT%2F_GVectorIndex1.txt%5C%22%5Ct%5Cn%5Cn%5Cn%23fileCopy%28pData%2CpData_%29%5Cn%23fileCopy%28pIndex%2CpIndex_%29%5Cn%23sys.exit%28%29%5Cn%5Cnv%3DGVector%28%29%5Cnv.openData%28pData%29%5Ct%5Cndt%3DdictBase%28%29%5Cndk%3Dcopy.deepcopy%28dt%29%5Cndt.openData%28v%2CpIndex%29%5Cn%5Cn%23os.unlink%28pData%29%5Cn%23os.unlink%28pIndex%29%5Cn%23loadDB%28%29%5Cn%23print%20%27done%27%5Cn%23s%3Ddt.vData.getStr%2888683%29%20%20%2388684%5Cn%23print%20s%5Cn%23v.checkIndex%2820%29%5Cn%23test%28%27%5Cu0f40%5Cu0f0b%5Cu0f40%5Cu0f0b%27%2Cdt%29%5Cn%5Cn%23dt.close%28%29%5Cn%23sys.exit%28%29%5Cn%5Cndk.dictKey%3D%7B%7D%5Cndk.keyList%3Dlist%28%29%5Cndk.data%3Dlist%28%29%5Cn%5Cn%23open%20translation%20dictionary%5CnpData%3DpathSave%2B%5C%22XML_DICT%2F_GVectorDict.txt%5C%22%5Ct%5CnpIndex%3DpathSave%2B%5C%22XML_DICT%2F_GVectorDictIndex.txt%5C%22%5Ct%5Cn%5Cnt%3DGVector%28%29%5Cnt.openData%28pData%29%5Ct%5Cn%5Ct%5Cndk.openData%28t%2CpIndex%29%5Cn%5Cn%23test%28%27%5Cu0f62%5Cu0fa3%5Cu0f0b%27%2Cdk%29%5Cn%5Cn%23print%20%27l%3D%7B%7D%20t%3D%7B%7D%27.format%28len%28dt.keyList%29%2C%20t2-t1%29%5Cn%23print%20len%28dt.keyList%29%5Cn%5Cn%5Ct%5Cn%23dt.close%28%29%5Cn%23dk.close%28%29%5Cn%23sys.exit%28%29%5Cn%23print%20%27load%20DK%27%5Cn%23dk.clear%28%29%5Cn%23dk.loadTXT%28%27word_dict%27%2C%27put%27%29%5Cn%23dk.loadTXT%28%27exportDictionaryRus%27%2C%27roots%27%29%5Cn%23dt.close%28%29%5Cn%23dk.normalisation%28%29%5Cn%23print%20%27done%27%5Cn%23s%3Ddk.vData.getStr%2821%29%5Cn%23print%20s%5Cn%23dk.close%28%29%5Cn%23sys.exit%28%29%5Cn%5Cnview%20%3D%20ui.load_view%28%29%5Ct%23super%20view%5CntextIn%3Dview%5B%27webview1%27%5D%5CnfileView%3Dview%5B%27view1%27%5D%5CnpageIndex%3Dview%5B%27textview1%27%5D%5CnsearchText%3Dview%5B%27textview2%27%5D%5CnsearchBtn%3Dview%5B%27searchBtn%27%5D%5CnmainDictView%3Dview%5B%27mainDictView%27%5D%5CnmainDictView.x%3D1024%5CnmainDictView.y%3D0%5CndictView%3DmainDictView%5B%27webview1%27%5D%5CnfileView.x%3D1024%5CnfileView.y%3D0%5Cnview.present%28%27fullscreen%27%2Chide_title_bar%3DTrue%29%5Cn%23view.present%28%27popover%27%29%5Cn%5Cn%5CnloadPref%28%29%5CnopenText%28%29%5Cn%23action_out%20%3D%20action_in%5Cn%23workflow.set_output%28action_out%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%5D%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad2%2C1%22%2C%20%22systemVersion%22%3A%20%229.3.5%22%7D%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22name%22%3A%20%22DictionaryGVector_words%22%7D", "description": "Dictionary access and translation GUI. Dictionary based  on low level nosql database GVector. For key-value search used Phyton map. Dictionary can mange few Gb up to 1mln records.", "title": "DictionaryGVector_words"}, {"url": "http://editorial-app.appspot.com/workflow/5866517698707456/Rx4mu39L-ak", "workflow_data": {"username": "", "description": "", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"pattern": {"text": "^#", "tokenRanges": {}, "type": "advancedText"}, "invert": true}, "class": "WorkflowActionFoldLinesMatchingPattern"}], "name": "Fold nonheaders", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone11,2", "systemVersion": "12.3.1"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22pattern%22%3A%20%7B%22text%22%3A%20%22%5E%23%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22invert%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionFoldLinesMatchingPattern%22%7D%5D%2C%20%22name%22%3A%20%22Fold%20nonheaders%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone11%2C2%22%2C%20%22systemVersion%22%3A%20%2212.3.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "", "title": "Fold nonheaders"}, {"url": "http://editorial-app.appspot.com/workflow/5829297243684864/PnkngbdPzZI", "workflow_data": {"username": "", "description": "Converts the selected lines to an unordered (bulleted) list.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"numberOfSteps": {"text": "1", "tokenRanges": {}, "type": "advancedText"}, "direction": 2, "unit": 1}, "class": "WorkflowActionExtendSelection"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionRepeatWithLines"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 2, "find": {"text": "^(\\d+\\.|\\*)\\s+", "tokenRanges": {}, "type": "advancedText"}, "replace": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "* ?", "tokenRanges": {"{2, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionRepeatWithLinesEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"countOption": 3}, "class": "WorkflowActionCountWords"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"range": {"text": "?-?:?", "tokenRanges": {"{0, 1}": "%editor:selected-range-start", "{4, 1}": "%editor:selected-range-end", "{2, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionSelectRange"}], "name": "Convert to Unordered List", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone11,2", "systemVersion": "12.3.1"}, "type": "wkflw", "public": true, "icon": "minicons-icons-datas-list-2.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Converts%20the%20selected%20lines%20to%20an%20unordered%20%28bulleted%29%20list.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22numberOfSteps%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22direction%22%3A%202%2C%20%22unit%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionExtendSelection%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionRepeatWithLines%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%202%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%5E%28%5C%5Cd%2B%5C%5C.%7C%5C%5C%2A%29%5C%5Cs%2B%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%2A%20%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B2%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionRepeatWithLinesEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22countOption%22%3A%203%7D%2C%20%22class%22%3A%20%22WorkflowActionCountWords%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22range%22%3A%20%7B%22text%22%3A%20%22%3F-%3F%3A%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Aselected-range-start%22%2C%20%22%7B4%2C%201%7D%22%3A%20%22%25editor%3Aselected-range-end%22%2C%20%22%7B2%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionSelectRange%22%7D%5D%2C%20%22name%22%3A%20%22Convert%20to%20Unordered%20List%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone11%2C2%22%2C%20%22systemVersion%22%3A%20%2212.3.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-datas-list-2.png%22%7D", "description": "Converts the selected lines to an unordered (bulleted) list.", "title": "Convert to Unordered List"}, {"url": "http://editorial-app.appspot.com/workflow/5778366246420480/rKJTWerYizc", "workflow_data": {"username": "", "description": "I modified @jollipixel\u2019s \u201cget contacts\u201d workflow to copy outputted name & contact info to clipboard, to paste where needed. \n\nOriginal description by jollipixel:\n\nGet Contact by @jollipixel\n\nIt's meant to be used as a Subworkflow.\n\nPrompts for a name (could be partial name) and returns '<full name><tab><email address or phone number>' from your Contacts as a string.\nWill present a list if multiple matches are found.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "Name", "value": {"text": "(Will be set later)", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "isList", "value": {"text": "(Will be set later)", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"customTitle": "Find Contact Name", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport contacts\nimport console\n\npeople =''\nnames = ''\n\nwhile not people:\n\tname = console.input_alert('Name','Enter Name to search for')\n\tpeople = contacts.find(name)\n\tif not people:\n\t\tconsole.hud_alert('No ' + name + ' in Contacts', 'error', 1)\n\nfor p in people:\n\tnames += p.full_name + '\\n'\n\nnames_lst = list(set(names.splitlines()))\nif len(names_lst)>1:\n\tworkflow.set_variable('isList', '1')\nelse:\n\tworkflow.set_variable('Name', names_lst[0])\n\nworkflow.set_output(names)\n"}, "pauseWithoutShowingParameters": false, "colorLabel": 1, "class": "WorkflowActionRunScript", "pauseBeforeRunning": false}, {"customTitle": "If List...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "isList"}, "type": "advancedText"}, "expression2": {"text": "1", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "pauseWithoutShowingParameters": false, "subActions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Select Name", "parameters": {"list": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "", "showInPopover": false, "allowMultipleSelection": false}, "class": "WorkflowActionSelectFromList"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Set Name", "parameters": {"name": "Name", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "...End If List", "parameters": {}, "class": "WorkflowActionConditionEnd"}], "class": "WorkflowActionCondition", "pauseBeforeRunning": false}, {"customTitle": "Find Contact Details", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport contacts\nimport console\n\nname = workflow.get_variable('Name')\ndetails = ''\n\npeople = contacts.find(name)\n\nif people[0].phone:\n\tfor phone in people[0].phone:\n\t\tdetails += phone[0].strip('_$!<>') + ' ' + phone[1] + '\\t' + phone[1] + '\\n'\n\nif people[0].email:\n\tfor email in people[0].email:\n\t\tdetails += email[0].strip('_$!<>') + ' ' + email[1] + '\\t' + email[1] + '\\n'\n\nif details:\n\tdetails_lst = details.splitlines()\n\tif len(details_lst) > 1:\n\t\tworkflow.set_variable('isList', '1')\n\t\tworkflow.set_output(details)\n\telse:\n\t\tworkflow.set_variable('isList', '0')\t\n\t\tdetails = details_lst[0].split('\\t')\n\t\tworkflow.set_output(details[1])\nelse: \n\tconsole.hud_alert('No details for ' + name, 'error', 1)\t\t\n\tworkflow.stop()\n\n"}, "pauseWithoutShowingParameters": false, "colorLabel": 1, "class": "WorkflowActionRunScript", "pauseBeforeRunning": false}, {"customTitle": "If List...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "isList"}, "type": "advancedText"}, "expression2": {"text": "1", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "pauseWithoutShowingParameters": false, "subActions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Select Contact Details", "parameters": {"list": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "", "showInPopover": false, "allowMultipleSelection": false}, "class": "WorkflowActionSelectFromList"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "...End If List", "parameters": {}, "class": "WorkflowActionConditionEnd"}], "class": "WorkflowActionCondition", "pauseBeforeRunning": false}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "? \t?", "tokenRanges": {"{0, 1}": "Name", "{3, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionSetClipboard"}], "name": "Get Contact", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad8,1", "systemVersion": "12.1.1"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_USER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22I%20modified%20%40jollipixel%5Cu2019s%20%5Cu201cget%20contacts%5Cu201d%20workflow%20to%20copy%20outputted%20name%20%26%20contact%20info%20to%20clipboard%2C%20to%20paste%20where%20needed.%20%5Cn%5CnOriginal%20description%20by%20jollipixel%3A%5Cn%5CnGet%20Contact%20by%20%40jollipixel%5Cn%5CnIt%27s%20meant%20to%20be%20used%20as%20a%20Subworkflow.%5Cn%5CnPrompts%20for%20a%20name%20%28could%20be%20partial%20name%29%20and%20returns%20%27%3Cfull%20name%3E%3Ctab%3E%3Cemail%20address%20or%20phone%20number%3E%27%20from%20your%20Contacts%20as%20a%20string.%5CnWill%20present%20a%20list%20if%20multiple%20matches%20are%20found.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22Name%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%28Will%20be%20set%20later%29%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22isList%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%28Will%20be%20set%20later%29%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22customTitle%22%3A%20%22Find%20Contact%20Name%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20contacts%5Cnimport%20console%5Cn%5Cnpeople%20%3D%27%27%5Cnnames%20%3D%20%27%27%5Cn%5Cnwhile%20not%20people%3A%5Cn%5Ctname%20%3D%20console.input_alert%28%27Name%27%2C%27Enter%20Name%20to%20search%20for%27%29%5Cn%5Ctpeople%20%3D%20contacts.find%28name%29%5Cn%5Ctif%20not%20people%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27No%20%27%20%2B%20name%20%2B%20%27%20in%20Contacts%27%2C%20%27error%27%2C%201%29%5Cn%5Cnfor%20p%20in%20people%3A%5Cn%5Ctnames%20%2B%3D%20p.full_name%20%2B%20%27%5C%5Cn%27%5Cn%5Cnnames_lst%20%3D%20list%28set%28names.splitlines%28%29%29%29%5Cnif%20len%28names_lst%29%3E1%3A%5Cn%5Ctworkflow.set_variable%28%27isList%27%2C%20%271%27%29%5Cnelse%3A%5Cn%5Ctworkflow.set_variable%28%27Name%27%2C%20names_lst%5B0%5D%29%5Cn%5Cnworkflow.set_output%28names%29%5Cn%22%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%201%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%2C%20%7B%22customTitle%22%3A%20%22If%20List...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22isList%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22subActions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Select%20Name%22%2C%20%22parameters%22%3A%20%7B%22list%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22%22%2C%20%22showInPopover%22%3A%20false%2C%20%22allowMultipleSelection%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionSelectFromList%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Set%20Name%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22Name%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22...End%20If%20List%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%5D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%2C%20%7B%22customTitle%22%3A%20%22Find%20Contact%20Details%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20contacts%5Cnimport%20console%5Cn%5Cnname%20%3D%20workflow.get_variable%28%27Name%27%29%5Cndetails%20%3D%20%27%27%5Cn%5Cnpeople%20%3D%20contacts.find%28name%29%5Cn%5Cnif%20people%5B0%5D.phone%3A%5Cn%5Ctfor%20phone%20in%20people%5B0%5D.phone%3A%5Cn%5Ct%5Ctdetails%20%2B%3D%20phone%5B0%5D.strip%28%27_%24%21%3C%3E%27%29%20%2B%20%27%20%27%20%2B%20phone%5B1%5D%20%2B%20%27%5C%5Ct%27%20%2B%20phone%5B1%5D%20%2B%20%27%5C%5Cn%27%5Cn%5Cnif%20people%5B0%5D.email%3A%5Cn%5Ctfor%20email%20in%20people%5B0%5D.email%3A%5Cn%5Ct%5Ctdetails%20%2B%3D%20email%5B0%5D.strip%28%27_%24%21%3C%3E%27%29%20%2B%20%27%20%27%20%2B%20email%5B1%5D%20%2B%20%27%5C%5Ct%27%20%2B%20email%5B1%5D%20%2B%20%27%5C%5Cn%27%5Cn%5Cnif%20details%3A%5Cn%5Ctdetails_lst%20%3D%20details.splitlines%28%29%5Cn%5Ctif%20len%28details_lst%29%20%3E%201%3A%5Cn%5Ct%5Ctworkflow.set_variable%28%27isList%27%2C%20%271%27%29%5Cn%5Ct%5Ctworkflow.set_output%28details%29%5Cn%5Ctelse%3A%5Cn%5Ct%5Ctworkflow.set_variable%28%27isList%27%2C%20%270%27%29%5Ct%5Cn%5Ct%5Ctdetails%20%3D%20details_lst%5B0%5D.split%28%27%5C%5Ct%27%29%5Cn%5Ct%5Ctworkflow.set_output%28details%5B1%5D%29%5Cnelse%3A%20%5Cn%5Ctconsole.hud_alert%28%27No%20details%20for%20%27%20%2B%20name%2C%20%27error%27%2C%201%29%5Ct%5Ct%5Cn%5Ctworkflow.stop%28%29%5Cn%5Cn%22%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%201%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%2C%20%7B%22customTitle%22%3A%20%22If%20List...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22isList%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22subActions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Select%20Contact%20Details%22%2C%20%22parameters%22%3A%20%7B%22list%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22%22%2C%20%22showInPopover%22%3A%20false%2C%20%22allowMultipleSelection%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionSelectFromList%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22...End%20If%20List%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%5D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%20%5Ct%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Name%22%2C%20%22%7B3%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionSetClipboard%22%7D%5D%2C%20%22name%22%3A%20%22Get%20Contact%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad8%2C1%22%2C%20%22systemVersion%22%3A%20%2212.1.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_USER.png%22%7D", "description": "I modified @jollipixel\u2019s \u201cget contacts\u201d workflow to copy outputted name & contact info to clipboard, to paste where needed. \n\nOriginal description by jollipixel:\n\nGet Contact by @jollipixel\n\nIt's meant to be used as a Subworkflow.\n\nPrompts for a name (could be partial name) and returns '<full name><tab><email address or phone number>' from your Contacts as a string.\nWill present a list if multiple matches are found.", "title": "Get Contact"}, {"url": "http://editorial-app.appspot.com/workflow/5859108745904128/EudEphJJ6kc", "workflow_data": {"username": "", "description": "Finds all web URLs in the current document and generates a list of Markdown links, using the titles of the web pages (as it would be shown in a browser).", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionExtractURLs"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport editor\nfrom mechanize import Browser\nimport console\n\ndef main():\n\tweb_urls = filter(lambda s: s.startswith('http'), workflow.get_input().splitlines())\n\tif not web_urls:\n\t\tconsole.hud_alert('No URLs found', 'error')\n\t\tworkflow.stop()\n\t\treturn\n\tlinks = []\n\tfor i, url in enumerate(web_urls):\n\t\tconsole.show_activity('Getting titles (%i/%i)' % (i+1, len(web_urls)))\n\t\ttry:\n\t\t\tbr = Browser()\n\t\t\tbr.open(url)\n\t\t\ttitle = br.title()\n\t\texcept:\n\t\t\ttitle = ''\n\t\tlinks.append('[%s](%s)' % (title, url))\n\tconsole.hide_activity()\n\tworkflow.set_output('\\n'.join(links))\n\nmain()\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"button1Value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "button3Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button2Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "title": "Generated Links", "button3Title": "", "button2Title": "", "button1Title": "Copy", "message": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "showCancelButton": true}, "class": "WorkflowActionShowAlert"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionSetClipboard"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"duration": 0, "HUDText": {"text": "Copied", "tokenRanges": {}, "type": "advancedText"}, "icon": 0}, "class": "WorkflowActionShowHUD"}], "name": "Links from URLs", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone9,3", "systemVersion": "12.3.1"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_ANCHOR.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Finds%20all%20web%20URLs%20in%20the%20current%20document%20and%20generates%20a%20list%20of%20Markdown%20links%2C%20using%20the%20titles%20of%20the%20web%20pages%20%28as%20it%20would%20be%20shown%20in%20a%20browser%29.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionExtractURLs%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20editor%5Cnfrom%20mechanize%20import%20Browser%5Cnimport%20console%5Cn%5Cndef%20main%28%29%3A%5Cn%5Ctweb_urls%20%3D%20filter%28lambda%20s%3A%20s.startswith%28%27http%27%29%2C%20workflow.get_input%28%29.splitlines%28%29%29%5Cn%5Ctif%20not%20web_urls%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27No%20URLs%20found%27%2C%20%27error%27%29%5Cn%5Ct%5Ctworkflow.stop%28%29%5Cn%5Ct%5Ctreturn%5Cn%5Ctlinks%20%3D%20%5B%5D%5Cn%5Ctfor%20i%2C%20url%20in%20enumerate%28web_urls%29%3A%5Cn%5Ct%5Ctconsole.show_activity%28%27Getting%20titles%20%28%25i%2F%25i%29%27%20%25%20%28i%2B1%2C%20len%28web_urls%29%29%29%5Cn%5Ct%5Cttry%3A%5Cn%5Ct%5Ct%5Ctbr%20%3D%20Browser%28%29%5Cn%5Ct%5Ct%5Ctbr.open%28url%29%5Cn%5Ct%5Ct%5Cttitle%20%3D%20br.title%28%29%5Cn%5Ct%5Ctexcept%3A%5Cn%5Ct%5Ct%5Cttitle%20%3D%20%27%27%5Cn%5Ct%5Ctlinks.append%28%27%5B%25s%5D%28%25s%29%27%20%25%20%28title%2C%20url%29%29%5Cn%5Ctconsole.hide_activity%28%29%5Cn%5Ctworkflow.set_output%28%27%5C%5Cn%27.join%28links%29%29%5Cn%5Cnmain%28%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22button1Value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button3Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button2Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Generated%20Links%22%2C%20%22button3Title%22%3A%20%22%22%2C%20%22button2Title%22%3A%20%22%22%2C%20%22button1Title%22%3A%20%22Copy%22%2C%20%22message%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22showCancelButton%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionShowAlert%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionSetClipboard%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22duration%22%3A%200%2C%20%22HUDText%22%3A%20%7B%22text%22%3A%20%22Copied%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22icon%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionShowHUD%22%7D%5D%2C%20%22name%22%3A%20%22Links%20from%20URLs%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone9%2C3%22%2C%20%22systemVersion%22%3A%20%2212.3.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_ANCHOR.png%22%7D", "description": "Finds all web URLs in the current document and generates a list of Markdown links, using the titles of the web pages (as it would be shown in a browser).", "title": "Links from URLs"}, {"url": "http://editorial-app.appspot.com/workflow/5861595397750784/lNlwSpb-rT8", "workflow_data": {"username": "", "description": "Searches current folder looking for @due, @start, @started tags with date attributes less than or equal to today. Found results are displayed with clickable links.\n\nDates are of the format YYYY-MM-DD and do not include times.\n\nNote, I adapted a good deal of original global search code from Ole Zorn.\n\n::: Macdrifter ::: v.0.9", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "todayDate", "value": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "A document must be open...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:filename"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"button1Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button3Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button2Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "title": "No Document Open", "button3Title": "", "button2Title": "", "button1Title": "", "message": {"text": "You need to open a document to use this workflow. It uses the current document's path to determine where to search.", "tokenRanges": {}, "type": "advancedText"}, "showCancelButton": false}, "class": "WorkflowActionShowAlert"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"showHUD": false, "HUDTitle": ""}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "set CSS Light Variable", "parameters": {"name": "CSS Light", "value": {"text": "body {\n\tfont-family: 'Source Sans Pro';\n\tcolor: #333;\n\tbackground-color: #fafafa;\n\tmargin: 40px 60px 40px 60px;\n}\na {\n\ttext-decoration: none;\n\tcolor: #016396;\n}\na.result-box {\n\tdisplay: block;\n\tmargin-bottom: 15px;\n\t-webkit-tap-highlight-color: rgba(0,0,0,0);\n\tcolor: #333;\n\tbackground-color: white;\n\tborder: 1px solid #ccc;\n\tborder-radius: 4px;\n\tpadding: 10px;\n}\na.result-box:active {\n\tcolor: #016396;\n\tbackground-color: #f0f0f0;\n}\n.highlight {\n\tbackground-color: yellow;\n}\n#help-text {\n\tcolor: gray;\n}", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "set CSS Dark Variable", "parameters": {"name": "CSS Dark", "value": {"text": "body {\n\tfont-family: 'Source Sans Pro';\n\tcolor: #d6d6d6;\n\tbackground-color: #33393f;\n\tmargin: 40px 60px 40px 60px;\n}\na {\n\ttext-decoration: none;\n\tcolor: #b2cae5;\n}\na.result-box {\n\tdisplay: block;\n\tmargin-bottom: 15px;\n\t-webkit-tap-highlight-color: rgba(0,0,0,0);\n\tcolor: #d6d6d6;\n\tbackground-color: #33393f;\n\tborder: 1px solid #111;\n\tborder-radius: 4px;\n\tpadding: 10px;\n}\na.result-box:active {\n\tcolor: #b2cae5;\n\tbackground-color: #5a6470;\n}\n.highlight {\n\tbackground-color: #187b00;\n}\n#help-text {\n\tcolor: gray;\n}", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "set CSS Variable", "parameters": {"name": "CSS", "value": {"text": "This will be set from the script, depending on the currently selected theme.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Do the search (Python)", "parameters": {"clearVariables": true, "script": "import editor\nimport console\nimport os\nimport re\nimport sys\nimport codecs\nimport workflow\nfrom StringIO import StringIO\nimport time\n\ntheme = editor.get_theme()\nworkflow.set_variable('CSS', workflow.get_variable('CSS Dark' if theme == 'Dark' else 'CSS Light'))\n\ntoday_date = time.strftime('%Y-%m-%d')\n\nworkflow.set_variable(\"todayDate\", today_date)\n\np = editor.get_path()\n\nstart_pattern = r'(@start|@due|@started)\\((20[1-9][0-9]\\-[0-1][0-9]\\-[0-3][0-9])\\)'\n\nterm = start_pattern\npattern = re.compile(term, flags=re.IGNORECASE)\n\nfrom urllib import quote\ndir = os.path.split(p)[0]\nvalid_extensions = set(['.txt', '.md', '.markd', '.text', '.mdown', '.taskpaper'])\nhtml = StringIO()\nmatch_count = 0\nfor w in os.walk(dir):\n\tdir_path = w[0]\n\tfilenames = w[2]\n\tfor name in filenames:\n\t\tfull_path = os.path.join(dir_path, name)\n\t\text = os.path.splitext(full_path)[1]\n\t\tif ext.lower() not in valid_extensions:\n\t\t\tcontinue\n\t\tfound_snippets = []\n\t\ti = 0\n\t\ttry:\n\t\t\twith codecs.open(full_path, 'r', 'utf-8') as f:\n\t\t\t\tfor line in f:\n\t\t\t\t\tfor match in re.finditer(pattern, line):\n\t\t\t\t\t\tstart = max(0, match.start(0) - 100)\n\t\t\t\t\t\tend = min(len(line)-1, match.end(0) + 100)\n\t\t\t\t\t\tsnippet = (line[start:match.start(0)],\n\t\t\t\t\t\t           match.group(0),\n\t\t\t\t\t\t           line[match.end(0):end],\n\t\t\t\t\t\t           match.start(0) + i,\n\t\t\t\t\t\t           match.end(0) + i)\n\t\t\t\t\t\tif time.strptime(match.group(2), '%Y-%m-%d') <= time.strptime(today_date, '%Y-%m-%d'):\n\t\t\t\t\t\t\tfound_snippets.append(snippet)\n\t\t\t\t\ti += len(line)\n\t\texcept UnicodeDecodeError, e:\n\t\t\tpass\n\t\tif len(found_snippets) > 0:\n\t\t\tmatch_count += 1\n\t\t\troot, rel_path = editor.to_relative_path(full_path)\n\t\t\ted_url = 'editorial://open/' + quote(rel_path) + '?root=' + root\n\t\t\thtml.write('<h2><a href=\"' + ed_url + '\">' + name + '</a></h2>')\n\t\t\tfor snippet in found_snippets:\n\t\t\t\tstart = snippet[3]\n\t\t\t\tend = snippet[4]\n\t\t\t\tselect_url = 'editorial://open/' + quote(rel_path) + '?root=' + root\n\t\t\t\tselect_url += '&selection=' + str(start) + '-' + str(end)\n\t\t\t\thtml.write('<a class=\"result-box\" href=\"' + select_url + '\">' + snippet[0] + '<span class=\"highlight\">' + snippet[1] + '</span>' + snippet[2] + '</a>')\nif match_count == 0:\n\thtml.write('<p>No matches found.</p>')\n\nworkflow.set_output(html.getvalue())\n\t\t\t\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Show Results", "parameters": {"html": {"text": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\"/>\n<style>?</style>\n</head>\n<body ontouchstart=\"\">\n<h1>Tasks Available for \u201c?\u201d</h1>\n<p id=\"help-text\">Tap on a result to select it in the editor. Tap the <em>Done</em> button to get back to the Markdown preview.</p>\n?\n</body>\n</html>", "tokenRanges": {"{266, 1}": "Input", "{126, 1}": "todayDate", "{60, 1}": "CSS"}, "type": "advancedText"}, "baseURL": "", "title": "Results"}, "class": "WorkflowActionShowHTMLPreview"}], "name": "Filter by @due", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad4,4", "systemVersion": "12.3"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_GRID.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Searches%20current%20folder%20looking%20for%20%40due%2C%20%40start%2C%20%40started%20tags%20with%20date%20attributes%20less%20than%20or%20equal%20to%20today.%20Found%20results%20are%20displayed%20with%20clickable%20links.%5Cn%5CnDates%20are%20of%20the%20format%20YYYY-MM-DD%20and%20do%20not%20include%20times.%5Cn%5CnNote%2C%20I%20adapted%20a%20good%20deal%20of%20original%20global%20search%20code%20from%20Ole%20Zorn.%5Cn%5Cn%3A%3A%3A%20Macdrifter%20%3A%3A%3A%20v.0.9%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22todayDate%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22A%20document%20must%20be%20open...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Afilename%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22button1Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button3Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button2Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22No%20Document%20Open%22%2C%20%22button3Title%22%3A%20%22%22%2C%20%22button2Title%22%3A%20%22%22%2C%20%22button1Title%22%3A%20%22%22%2C%20%22message%22%3A%20%7B%22text%22%3A%20%22You%20need%20to%20open%20a%20document%20to%20use%20this%20workflow.%20It%20uses%20the%20current%20document%27s%20path%20to%20determine%20where%20to%20search.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22showCancelButton%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionShowAlert%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20false%2C%20%22HUDTitle%22%3A%20%22%22%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22set%20CSS%20Light%20Variable%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22CSS%20Light%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22body%20%7B%5Cn%5Ctfont-family%3A%20%27Source%20Sans%20Pro%27%3B%5Cn%5Ctcolor%3A%20%23333%3B%5Cn%5Ctbackground-color%3A%20%23fafafa%3B%5Cn%5Ctmargin%3A%2040px%2060px%2040px%2060px%3B%5Cn%7D%5Cna%20%7B%5Cn%5Cttext-decoration%3A%20none%3B%5Cn%5Ctcolor%3A%20%23016396%3B%5Cn%7D%5Cna.result-box%20%7B%5Cn%5Ctdisplay%3A%20block%3B%5Cn%5Ctmargin-bottom%3A%2015px%3B%5Cn%5Ct-webkit-tap-highlight-color%3A%20rgba%280%2C0%2C0%2C0%29%3B%5Cn%5Ctcolor%3A%20%23333%3B%5Cn%5Ctbackground-color%3A%20white%3B%5Cn%5Ctborder%3A%201px%20solid%20%23ccc%3B%5Cn%5Ctborder-radius%3A%204px%3B%5Cn%5Ctpadding%3A%2010px%3B%5Cn%7D%5Cna.result-box%3Aactive%20%7B%5Cn%5Ctcolor%3A%20%23016396%3B%5Cn%5Ctbackground-color%3A%20%23f0f0f0%3B%5Cn%7D%5Cn.highlight%20%7B%5Cn%5Ctbackground-color%3A%20yellow%3B%5Cn%7D%5Cn%23help-text%20%7B%5Cn%5Ctcolor%3A%20gray%3B%5Cn%7D%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22set%20CSS%20Dark%20Variable%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22CSS%20Dark%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22body%20%7B%5Cn%5Ctfont-family%3A%20%27Source%20Sans%20Pro%27%3B%5Cn%5Ctcolor%3A%20%23d6d6d6%3B%5Cn%5Ctbackground-color%3A%20%2333393f%3B%5Cn%5Ctmargin%3A%2040px%2060px%2040px%2060px%3B%5Cn%7D%5Cna%20%7B%5Cn%5Cttext-decoration%3A%20none%3B%5Cn%5Ctcolor%3A%20%23b2cae5%3B%5Cn%7D%5Cna.result-box%20%7B%5Cn%5Ctdisplay%3A%20block%3B%5Cn%5Ctmargin-bottom%3A%2015px%3B%5Cn%5Ct-webkit-tap-highlight-color%3A%20rgba%280%2C0%2C0%2C0%29%3B%5Cn%5Ctcolor%3A%20%23d6d6d6%3B%5Cn%5Ctbackground-color%3A%20%2333393f%3B%5Cn%5Ctborder%3A%201px%20solid%20%23111%3B%5Cn%5Ctborder-radius%3A%204px%3B%5Cn%5Ctpadding%3A%2010px%3B%5Cn%7D%5Cna.result-box%3Aactive%20%7B%5Cn%5Ctcolor%3A%20%23b2cae5%3B%5Cn%5Ctbackground-color%3A%20%235a6470%3B%5Cn%7D%5Cn.highlight%20%7B%5Cn%5Ctbackground-color%3A%20%23187b00%3B%5Cn%7D%5Cn%23help-text%20%7B%5Cn%5Ctcolor%3A%20gray%3B%5Cn%7D%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22set%20CSS%20Variable%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22CSS%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22This%20will%20be%20set%20from%20the%20script%2C%20depending%20on%20the%20currently%20selected%20theme.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Do%20the%20search%20%28Python%29%22%2C%20%22parameters%22%3A%20%7B%22clearVariables%22%3A%20true%2C%20%22script%22%3A%20%22import%20editor%5Cnimport%20console%5Cnimport%20os%5Cnimport%20re%5Cnimport%20sys%5Cnimport%20codecs%5Cnimport%20workflow%5Cnfrom%20StringIO%20import%20StringIO%5Cnimport%20time%5Cn%5Cntheme%20%3D%20editor.get_theme%28%29%5Cnworkflow.set_variable%28%27CSS%27%2C%20workflow.get_variable%28%27CSS%20Dark%27%20if%20theme%20%3D%3D%20%27Dark%27%20else%20%27CSS%20Light%27%29%29%5Cn%5Cntoday_date%20%3D%20time.strftime%28%27%25Y-%25m-%25d%27%29%5Cn%5Cnworkflow.set_variable%28%5C%22todayDate%5C%22%2C%20today_date%29%5Cn%5Cnp%20%3D%20editor.get_path%28%29%5Cn%5Cnstart_pattern%20%3D%20r%27%28%40start%7C%40due%7C%40started%29%5C%5C%28%2820%5B1-9%5D%5B0-9%5D%5C%5C-%5B0-1%5D%5B0-9%5D%5C%5C-%5B0-3%5D%5B0-9%5D%29%5C%5C%29%27%5Cn%5Cnterm%20%3D%20start_pattern%5Cnpattern%20%3D%20re.compile%28term%2C%20flags%3Dre.IGNORECASE%29%5Cn%5Cnfrom%20urllib%20import%20quote%5Cndir%20%3D%20os.path.split%28p%29%5B0%5D%5Cnvalid_extensions%20%3D%20set%28%5B%27.txt%27%2C%20%27.md%27%2C%20%27.markd%27%2C%20%27.text%27%2C%20%27.mdown%27%2C%20%27.taskpaper%27%5D%29%5Cnhtml%20%3D%20StringIO%28%29%5Cnmatch_count%20%3D%200%5Cnfor%20w%20in%20os.walk%28dir%29%3A%5Cn%5Ctdir_path%20%3D%20w%5B0%5D%5Cn%5Ctfilenames%20%3D%20w%5B2%5D%5Cn%5Ctfor%20name%20in%20filenames%3A%5Cn%5Ct%5Ctfull_path%20%3D%20os.path.join%28dir_path%2C%20name%29%5Cn%5Ct%5Ctext%20%3D%20os.path.splitext%28full_path%29%5B1%5D%5Cn%5Ct%5Ctif%20ext.lower%28%29%20not%20in%20valid_extensions%3A%5Cn%5Ct%5Ct%5Ctcontinue%5Cn%5Ct%5Ctfound_snippets%20%3D%20%5B%5D%5Cn%5Ct%5Cti%20%3D%200%5Cn%5Ct%5Cttry%3A%5Cn%5Ct%5Ct%5Ctwith%20codecs.open%28full_path%2C%20%27r%27%2C%20%27utf-8%27%29%20as%20f%3A%5Cn%5Ct%5Ct%5Ct%5Ctfor%20line%20in%20f%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctfor%20match%20in%20re.finditer%28pattern%2C%20line%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctstart%20%3D%20max%280%2C%20match.start%280%29%20-%20100%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctend%20%3D%20min%28len%28line%29-1%2C%20match.end%280%29%20%2B%20100%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctsnippet%20%3D%20%28line%5Bstart%3Amatch.start%280%29%5D%2C%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%20%20%20%20%20%20%20%20%20%20%20match.group%280%29%2C%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%20%20%20%20%20%20%20%20%20%20%20line%5Bmatch.end%280%29%3Aend%5D%2C%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%20%20%20%20%20%20%20%20%20%20%20match.start%280%29%20%2B%20i%2C%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%20%20%20%20%20%20%20%20%20%20%20match.end%280%29%20%2B%20i%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctif%20time.strptime%28match.group%282%29%2C%20%27%25Y-%25m-%25d%27%29%20%3C%3D%20time.strptime%28today_date%2C%20%27%25Y-%25m-%25d%27%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%5Ctfound_snippets.append%28snippet%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Cti%20%2B%3D%20len%28line%29%5Cn%5Ct%5Ctexcept%20UnicodeDecodeError%2C%20e%3A%5Cn%5Ct%5Ct%5Ctpass%5Cn%5Ct%5Ctif%20len%28found_snippets%29%20%3E%200%3A%5Cn%5Ct%5Ct%5Ctmatch_count%20%2B%3D%201%5Cn%5Ct%5Ct%5Ctroot%2C%20rel_path%20%3D%20editor.to_relative_path%28full_path%29%5Cn%5Ct%5Ct%5Cted_url%20%3D%20%27editorial%3A%2F%2Fopen%2F%27%20%2B%20quote%28rel_path%29%20%2B%20%27%3Froot%3D%27%20%2B%20root%5Cn%5Ct%5Ct%5Cthtml.write%28%27%3Ch2%3E%3Ca%20href%3D%5C%22%27%20%2B%20ed_url%20%2B%20%27%5C%22%3E%27%20%2B%20name%20%2B%20%27%3C%2Fa%3E%3C%2Fh2%3E%27%29%5Cn%5Ct%5Ct%5Ctfor%20snippet%20in%20found_snippets%3A%5Cn%5Ct%5Ct%5Ct%5Ctstart%20%3D%20snippet%5B3%5D%5Cn%5Ct%5Ct%5Ct%5Ctend%20%3D%20snippet%5B4%5D%5Cn%5Ct%5Ct%5Ct%5Ctselect_url%20%3D%20%27editorial%3A%2F%2Fopen%2F%27%20%2B%20quote%28rel_path%29%20%2B%20%27%3Froot%3D%27%20%2B%20root%5Cn%5Ct%5Ct%5Ct%5Ctselect_url%20%2B%3D%20%27%26selection%3D%27%20%2B%20str%28start%29%20%2B%20%27-%27%20%2B%20str%28end%29%5Cn%5Ct%5Ct%5Ct%5Cthtml.write%28%27%3Ca%20class%3D%5C%22result-box%5C%22%20href%3D%5C%22%27%20%2B%20select_url%20%2B%20%27%5C%22%3E%27%20%2B%20snippet%5B0%5D%20%2B%20%27%3Cspan%20class%3D%5C%22highlight%5C%22%3E%27%20%2B%20snippet%5B1%5D%20%2B%20%27%3C%2Fspan%3E%27%20%2B%20snippet%5B2%5D%20%2B%20%27%3C%2Fa%3E%27%29%5Cnif%20match_count%20%3D%3D%200%3A%5Cn%5Cthtml.write%28%27%3Cp%3ENo%20matches%20found.%3C%2Fp%3E%27%29%5Cn%5Cnworkflow.set_output%28html.getvalue%28%29%29%5Cn%5Ct%5Ct%5Ct%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Show%20Results%22%2C%20%22parameters%22%3A%20%7B%22html%22%3A%20%7B%22text%22%3A%20%22%3C%21DOCTYPE%20html%3E%5Cn%3Chtml%3E%5Cn%3Chead%3E%3Cmeta%20charset%3D%5C%22utf-8%5C%22%2F%3E%5Cn%3Cstyle%3E%3F%3C%2Fstyle%3E%5Cn%3C%2Fhead%3E%5Cn%3Cbody%20ontouchstart%3D%5C%22%5C%22%3E%5Cn%3Ch1%3ETasks%20Available%20for%20%5Cu201c%3F%5Cu201d%3C%2Fh1%3E%5Cn%3Cp%20id%3D%5C%22help-text%5C%22%3ETap%20on%20a%20result%20to%20select%20it%20in%20the%20editor.%20Tap%20the%20%3Cem%3EDone%3C%2Fem%3E%20button%20to%20get%20back%20to%20the%20Markdown%20preview.%3C%2Fp%3E%5Cn%3F%5Cn%3C%2Fbody%3E%5Cn%3C%2Fhtml%3E%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B266%2C%201%7D%22%3A%20%22Input%22%2C%20%22%7B126%2C%201%7D%22%3A%20%22todayDate%22%2C%20%22%7B60%2C%201%7D%22%3A%20%22CSS%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22baseURL%22%3A%20%22%22%2C%20%22title%22%3A%20%22Results%22%7D%2C%20%22class%22%3A%20%22WorkflowActionShowHTMLPreview%22%7D%5D%2C%20%22name%22%3A%20%22Filter%20by%20%40due%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad4%2C4%22%2C%20%22systemVersion%22%3A%20%2212.3%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_GRID.png%22%7D", "description": "Searches current folder looking for @due, @start, @started tags with date attributes less than or equal to today. Found results are displayed with clickable links.\n\nDates are of the format YYYY-MM-DD and do not include times.\n\nNote, I adapted a good deal of original global search code from Ole Zorn.\n\n::: Macdrifter ::: v.0.9", "title": "Filter by @due"}, {"url": "http://editorial-app.appspot.com/workflow/5903812174807040/6LDnVG6aH3Y", "workflow_data": {"username": "", "description": "Workflow for transferring files from Working Copy to Editorial and back again.\n\nWhen called with input, it will pick the filename from the first line and write the other lines into this file, which lets Working Copy create a new file with predefined content. The filename contains a unique identifier for remembering where it belongs. To avoid overwriting files in Editorial by mistake, the previous contents of files are put in WorkingCopy.bak\n\nWhen this workflow is called without any input the contents of the current file is written back to Working Copy.\n\nChange askcommit variable to 0 if you just want to save and not be asked to commit.\n\nTo install a new version of this workflow delete or rename this one and perform Edit in Editorial from Working Copy.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "all", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "all"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "key", "value": {"text": "C4JRTMHF9", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "askcommit", "value": {"text": "1", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "path", "value": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:filename"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:file-extension"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "path", "value": {"text": "?.?", "tokenRanges": {"{0, 1}": "%editor:filename", "{2, 1}": "%editor:file-extension"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"revealBrowserAutomatically": true, "URL:__URL_ESCAPE__": 1, "URL": {"text": "working-copy://x-callback-url/write/?key=?&askcommit=?&path=?&text=?", "tokenRanges": {"{53, 1}": "askcommit", "{67, 1}": "Input", "{60, 1}": "path", "{41, 1}": "key"}, "type": "advancedText"}, "openIn": 1, "tabOption": 0, "waitUntilLoaded": false}, "class": "WorkflowActionOpenURL"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"showHUD": false, "HUDTitle": ""}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"regex": {"text": "(.*)\\n", "tokenRanges": {}, "type": "advancedText"}, "matchGroup": "1", "searchTypeOption": 0}, "class": "WorkflowActionMatchRegularExpression"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "filename", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "all"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 1, "find": {"text": "?\n", "tokenRanges": {"{0, 1}": "filename"}, "type": "advancedText"}, "replace": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "text", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": false, "ifNotExists": 0, "filename": "%var:filename"}, "class": "WorkflowActionGetFileContents"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": false, "text": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "ifNotExists": 0, "filename": "WorkingCopy.bak"}, "class": "WorkflowActionSetFileContents"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"duration": 2, "HUDText": {"text": "Previous content of ? put in WorkingCopy.bak", "tokenRanges": {"{20, 1}": "filename"}, "type": "advancedText"}, "icon": 0}, "class": "WorkflowActionShowHUD"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": false, "text": {"text": "?", "tokenRanges": {"{0, 1}": "text"}, "type": "advancedText"}, "ifNotExists": 0, "filename": "%var:filename"}, "class": "WorkflowActionSetFileContents"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": false, "filename": "%var:filename"}, "class": "WorkflowActionOpenDocument"}], "name": "Working Copy", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad4,4", "systemVersion": "12.3"}, "type": "wkflw", "public": true, "icon": "minicons-social-github_alt.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Workflow%20for%20transferring%20files%20from%20Working%20Copy%20to%20Editorial%20and%20back%20again.%5Cn%5CnWhen%20called%20with%20input%2C%20it%20will%20pick%20the%20filename%20from%20the%20first%20line%20and%20write%20the%20other%20lines%20into%20this%20file%2C%20which%20lets%20Working%20Copy%20create%20a%20new%20file%20with%20predefined%20content.%20The%20filename%20contains%20a%20unique%20identifier%20for%20remembering%20where%20it%20belongs.%20To%20avoid%20overwriting%20files%20in%20Editorial%20by%20mistake%2C%20the%20previous%20contents%20of%20files%20are%20put%20in%20WorkingCopy.bak%5Cn%5CnWhen%20this%20workflow%20is%20called%20without%20any%20input%20the%20contents%20of%20the%20current%20file%20is%20written%20back%20to%20Working%20Copy.%5Cn%5CnChange%20askcommit%20variable%20to%200%20if%20you%20just%20want%20to%20save%20and%20not%20be%20asked%20to%20commit.%5Cn%5CnTo%20install%20a%20new%20version%20of%20this%20workflow%20delete%20or%20rename%20this%20one%20and%20perform%20Edit%20in%20Editorial%20from%20Working%20Copy.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22all%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22all%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22key%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22C4JRTMHF9%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22askcommit%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22path%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Afilename%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Afile-extension%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22path%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F.%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Afilename%22%2C%20%22%7B2%2C%201%7D%22%3A%20%22%25editor%3Afile-extension%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22revealBrowserAutomatically%22%3A%20true%2C%20%22URL%3A__URL_ESCAPE__%22%3A%201%2C%20%22URL%22%3A%20%7B%22text%22%3A%20%22working-copy%3A%2F%2Fx-callback-url%2Fwrite%2F%3Fkey%3D%3F%26askcommit%3D%3F%26path%3D%3F%26text%3D%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B53%2C%201%7D%22%3A%20%22askcommit%22%2C%20%22%7B67%2C%201%7D%22%3A%20%22Input%22%2C%20%22%7B60%2C%201%7D%22%3A%20%22path%22%2C%20%22%7B41%2C%201%7D%22%3A%20%22key%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22openIn%22%3A%201%2C%20%22tabOption%22%3A%200%2C%20%22waitUntilLoaded%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20false%2C%20%22HUDTitle%22%3A%20%22%22%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22regex%22%3A%20%7B%22text%22%3A%20%22%28.%2A%29%5C%5Cn%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22matchGroup%22%3A%20%221%22%2C%20%22searchTypeOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionMatchRegularExpression%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22filename%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22all%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%201%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%3F%5Cn%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22filename%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22text%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20false%2C%20%22ifNotExists%22%3A%200%2C%20%22filename%22%3A%20%22%25var%3Afilename%22%7D%2C%20%22class%22%3A%20%22WorkflowActionGetFileContents%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20false%2C%20%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ifNotExists%22%3A%200%2C%20%22filename%22%3A%20%22WorkingCopy.bak%22%7D%2C%20%22class%22%3A%20%22WorkflowActionSetFileContents%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22duration%22%3A%202%2C%20%22HUDText%22%3A%20%7B%22text%22%3A%20%22Previous%20content%20of%20%3F%20put%20in%20WorkingCopy.bak%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B20%2C%201%7D%22%3A%20%22filename%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22icon%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionShowHUD%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20false%2C%20%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22text%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ifNotExists%22%3A%200%2C%20%22filename%22%3A%20%22%25var%3Afilename%22%7D%2C%20%22class%22%3A%20%22WorkflowActionSetFileContents%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20false%2C%20%22filename%22%3A%20%22%25var%3Afilename%22%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenDocument%22%7D%5D%2C%20%22name%22%3A%20%22Working%20Copy%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad4%2C4%22%2C%20%22systemVersion%22%3A%20%2212.3%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-social-github_alt.png%22%7D", "description": "Workflow for transferring files from Working Copy to Editorial and back again.\n\nWhen called with input, it will pick the filename from the first line and write the other lines into this file, which lets Working Copy create a new file with predefined content. The filename contains a unique identifier for remembering where it belongs. To avoid overwriting files in Editorial by mistake, the previous contents of files are put in WorkingCopy.bak\n\nWhen this workflow is called without any input the contents of the current file is written back to Working Copy.\n\nChange askcommit variable to 0 if you just want to save and not be asked to commit.\n\nTo install a new version of this workflow delete or rename this one and perform Edit in Editorial from Working Copy.", "title": "Working Copy"}, {"url": "http://editorial-app.appspot.com/workflow/5804445367533568/6JUyHKdHm9U", "workflow_data": {"username": "Jim Leff", "description": "Takes a URL you\u2019ve previously copied to Clipboard and creates an HTML link around the selected text. ", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "selected_text", "value": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:selection"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionGetClipboard"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "URL", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Clipboard"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "<a href=\u201c?\u201d>?</a>", "tokenRanges": {"{12, 1}": "selected_text", "{9, 1}": "URL"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}], "name": "Make HTML Link", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad7,5", "systemVersion": "12.2"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22Jim%20Leff%22%2C%20%22description%22%3A%20%22Takes%20a%20URL%20you%5Cu2019ve%20previously%20copied%20to%20Clipboard%20and%20creates%20an%20HTML%20link%20around%20the%20selected%20text.%20%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22selected_text%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Aselection%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionGetClipboard%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22URL%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Clipboard%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3Ca%20href%3D%5Cu201c%3F%5Cu201d%3E%3F%3C%2Fa%3E%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B12%2C%201%7D%22%3A%20%22selected_text%22%2C%20%22%7B9%2C%201%7D%22%3A%20%22URL%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%5D%2C%20%22name%22%3A%20%22Make%20HTML%20Link%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad7%2C5%22%2C%20%22systemVersion%22%3A%20%2212.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "Takes a URL you\u2019ve previously copied to Clipboard and creates an HTML link around the selected text. ", "title": "Make HTML Link"}, {"url": "http://editorial-app.appspot.com/workflow/5892600095571968/LriB2ZUJ_dA", "workflow_data": {"username": "yt", "description": "Preserve Line Breaks was inspired by Brett Terpstra's Mac Service of the same name. To preserve a line break in iOS, markdown syntax requires that you type three spaces. But in iOS, typing two spaces generates a period, which drives me nuts. This workflow takes the text of a document, adds three spaces to the end of each line  as required by Markdown, and the replaces the original text with the proper Markdown syntax. ", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "   ", "tokenRanges": {}, "type": "advancedText"}, "prefixOrSuffix": 1}, "class": "WorkflowActionPrefixSuffixLines"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"numberOfSteps": {"text": "1", "tokenRanges": {}, "type": "advancedText"}, "direction": 2, "unit": 0}, "class": "WorkflowActionExtendSelection"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}], "name": "Preserve Line Breaks", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone9,1", "systemVersion": "12.2"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22yt%22%2C%20%22description%22%3A%20%22Preserve%20Line%20Breaks%20was%20inspired%20by%20Brett%20Terpstra%27s%20Mac%20Service%20of%20the%20same%20name.%20To%20preserve%20a%20line%20break%20in%20iOS%2C%20markdown%20syntax%20requires%20that%20you%20type%20three%20spaces.%20But%20in%20iOS%2C%20typing%20two%20spaces%20generates%20a%20period%2C%20which%20drives%20me%20nuts.%20This%20workflow%20takes%20the%20text%20of%20a%20document%2C%20adds%20three%20spaces%20to%20the%20end%20of%20each%20line%20%20as%20required%20by%20Markdown%2C%20and%20the%20replaces%20the%20original%20text%20with%20the%20proper%20Markdown%20syntax.%20%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%20%20%20%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22prefixOrSuffix%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionPrefixSuffixLines%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22numberOfSteps%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22direction%22%3A%202%2C%20%22unit%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionExtendSelection%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%5D%2C%20%22name%22%3A%20%22Preserve%20Line%20Breaks%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone9%2C1%22%2C%20%22systemVersion%22%3A%20%2212.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "Preserve Line Breaks was inspired by Brett Terpstra's Mac Service of the same name. To preserve a line break in iOS, markdown syntax requires that you type three spaces. But in iOS, typing two spaces generates a period, which drives me nuts. This workflow takes the text of a document, adds three spaces to the end of each line  as required by Markdown, and the replaces the original text with the proper Markdown syntax. ", "title": "Preserve Line Breaks"}, {"url": "http://editorial-app.appspot.com/workflow/5882678989553664/3m-W1aVfnbo", "workflow_data": {"username": "yt", "description": "Shows a diff that compares the selected document with text in the clipboard. The diff is shown in the Preview panel.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport difflib\nimport clipboard\nimport re\nimport editor\nimport console\n\ndef main():\n\ttext1 = clipboard.get()\n\tif not text1:\n\t\tconsole.hud_alert('Clipboard Empty', 'error')\n\t\tworkflow.stop()\n\t\treturn\n\ttext2 = editor.get_text()\n\tif not text2:\n\t\tconsole.hud_alert('No Text in Editor', 'error')\n\t\tworkflow.stop()\n\t\treturn\n\td = difflib.Differ()\n\tlines1 = text1.splitlines()\n\tlines2 = text2.splitlines()\n\tout_lines = []\n\tdiff_lines = list(d.compare(lines1, lines2))\n\tfor i, line in enumerate(diff_lines):\n\t\tif line.startswith('+'):\n\t\t\tout_lines.append('<pre class=\"diffline added\">%s</pre>' % line[2:])\n\t\telif line.startswith('-'):\n\t\t\tout_lines.append('<pre class=\"diffline deleted\">%s</pre>' % line[2:])\n\t\telif line.startswith('?') and i > 0:\n\t\t\tprev_line = diff_lines[i-1]\n\t\t\tranges = [(m.start(), m.end()) for m in re.finditer(r'\\++|-+', line)]\n\t\t\tfor start, end in reversed(ranges):\n\t\t\t\tspan_tag = '<span class=\"%s-highlight\">' % ('deleted' if line[start] == '-' else 'added')\n\t\t\t\tprev_line = prev_line[:start] + span_tag + prev_line[start:end] + '</span>' + prev_line[end:]\n\t\t\tpre_tag = '<pre class=\"diffline %s\">' % ('added' if prev_line.startswith('+') else 'deleted')\n\t\t\tout_lines[i-1] = '%s%s</pre>' % (pre_tag, prev_line[2:],)\n\t\t\tout_lines.append('')\n\t\telse:\n\t\t\tout_lines.append('<pre class=\"common\">%s</pre>' % line[2:])\n\t\n\tworkflow.set_output('\\n'.join(out_lines))\n\nmain()\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"html": {"text": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\"/>\n<style type=\"text/css\">\nbody {\n\tbackground-color: #f6f6f6;\n\tcolor: #333;\n\tmargin: 16px;\n}\npre {\n\tfont-family: Menlo, monospace;\n\twhite-space: pre-wrap;\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n\toverflow: hidden;\n}\npre.diffline {\n\tborder-width: 0 0 0 8px;\n\tmargin-left: -16px;\n\tmargin-right: -16px;\n\tpadding-right: 16px;\n\tpadding-left: 8px;\n\tborder-style: solid;\n}\n.added {\n\tcolor: green;\n\tbackground-color: #f4fbef;\n\tborder-color: #c9ffb3;\n}\n.deleted {\n\tcolor: #820e03;\n\tbackground-color: #fbefef;\n\tborder-color: #ffb3b4;\n}\n.deleted-highlight {\n\tbackground-color: #ffb3b4;\n\tborder-radius: 3px;\n}\n.added-highlight {\n\tbackground-color: #c9ffb3;\n\tborder-radius: 3px;\n}\n.common {\n\tcolor: #999;\n}\n</style>\n</head>\n<body>\n?\n</body>\n</html>", "tokenRanges": {"{763, 1}": "Input"}, "type": "advancedText"}, "baseURL": "", "title": "Diff"}, "class": "WorkflowActionShowHTMLPreview"}], "name": "Diff with Clipboard", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone9,1", "systemVersion": "12.2"}, "type": "wkflw", "public": true, "icon": "minicons-icons-file-layout.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22yt%22%2C%20%22description%22%3A%20%22Shows%20a%20diff%20that%20compares%20the%20selected%20document%20with%20text%20in%20the%20clipboard.%20The%20diff%20is%20shown%20in%20the%20Preview%20panel.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20difflib%5Cnimport%20clipboard%5Cnimport%20re%5Cnimport%20editor%5Cnimport%20console%5Cn%5Cndef%20main%28%29%3A%5Cn%5Cttext1%20%3D%20clipboard.get%28%29%5Cn%5Ctif%20not%20text1%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27Clipboard%20Empty%27%2C%20%27error%27%29%5Cn%5Ct%5Ctworkflow.stop%28%29%5Cn%5Ct%5Ctreturn%5Cn%5Cttext2%20%3D%20editor.get_text%28%29%5Cn%5Ctif%20not%20text2%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27No%20Text%20in%20Editor%27%2C%20%27error%27%29%5Cn%5Ct%5Ctworkflow.stop%28%29%5Cn%5Ct%5Ctreturn%5Cn%5Ctd%20%3D%20difflib.Differ%28%29%5Cn%5Ctlines1%20%3D%20text1.splitlines%28%29%5Cn%5Ctlines2%20%3D%20text2.splitlines%28%29%5Cn%5Ctout_lines%20%3D%20%5B%5D%5Cn%5Ctdiff_lines%20%3D%20list%28d.compare%28lines1%2C%20lines2%29%29%5Cn%5Ctfor%20i%2C%20line%20in%20enumerate%28diff_lines%29%3A%5Cn%5Ct%5Ctif%20line.startswith%28%27%2B%27%29%3A%5Cn%5Ct%5Ct%5Ctout_lines.append%28%27%3Cpre%20class%3D%5C%22diffline%20added%5C%22%3E%25s%3C%2Fpre%3E%27%20%25%20line%5B2%3A%5D%29%5Cn%5Ct%5Ctelif%20line.startswith%28%27-%27%29%3A%5Cn%5Ct%5Ct%5Ctout_lines.append%28%27%3Cpre%20class%3D%5C%22diffline%20deleted%5C%22%3E%25s%3C%2Fpre%3E%27%20%25%20line%5B2%3A%5D%29%5Cn%5Ct%5Ctelif%20line.startswith%28%27%3F%27%29%20and%20i%20%3E%200%3A%5Cn%5Ct%5Ct%5Ctprev_line%20%3D%20diff_lines%5Bi-1%5D%5Cn%5Ct%5Ct%5Ctranges%20%3D%20%5B%28m.start%28%29%2C%20m.end%28%29%29%20for%20m%20in%20re.finditer%28r%27%5C%5C%2B%2B%7C-%2B%27%2C%20line%29%5D%5Cn%5Ct%5Ct%5Ctfor%20start%2C%20end%20in%20reversed%28ranges%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctspan_tag%20%3D%20%27%3Cspan%20class%3D%5C%22%25s-highlight%5C%22%3E%27%20%25%20%28%27deleted%27%20if%20line%5Bstart%5D%20%3D%3D%20%27-%27%20else%20%27added%27%29%5Cn%5Ct%5Ct%5Ct%5Ctprev_line%20%3D%20prev_line%5B%3Astart%5D%20%2B%20span_tag%20%2B%20prev_line%5Bstart%3Aend%5D%20%2B%20%27%3C%2Fspan%3E%27%20%2B%20prev_line%5Bend%3A%5D%5Cn%5Ct%5Ct%5Ctpre_tag%20%3D%20%27%3Cpre%20class%3D%5C%22diffline%20%25s%5C%22%3E%27%20%25%20%28%27added%27%20if%20prev_line.startswith%28%27%2B%27%29%20else%20%27deleted%27%29%5Cn%5Ct%5Ct%5Ctout_lines%5Bi-1%5D%20%3D%20%27%25s%25s%3C%2Fpre%3E%27%20%25%20%28pre_tag%2C%20prev_line%5B2%3A%5D%2C%29%5Cn%5Ct%5Ct%5Ctout_lines.append%28%27%27%29%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctout_lines.append%28%27%3Cpre%20class%3D%5C%22common%5C%22%3E%25s%3C%2Fpre%3E%27%20%25%20line%5B2%3A%5D%29%5Cn%5Ct%5Cn%5Ctworkflow.set_output%28%27%5C%5Cn%27.join%28out_lines%29%29%5Cn%5Cnmain%28%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22html%22%3A%20%7B%22text%22%3A%20%22%3C%21DOCTYPE%20html%3E%5Cn%3Chtml%3E%5Cn%3Chead%3E%3Cmeta%20charset%3D%5C%22utf-8%5C%22%2F%3E%5Cn%3Cstyle%20type%3D%5C%22text%2Fcss%5C%22%3E%5Cnbody%20%7B%5Cn%5Ctbackground-color%3A%20%23f6f6f6%3B%5Cn%5Ctcolor%3A%20%23333%3B%5Cn%5Ctmargin%3A%2016px%3B%5Cn%7D%5Cnpre%20%7B%5Cn%5Ctfont-family%3A%20Menlo%2C%20monospace%3B%5Cn%5Ctwhite-space%3A%20pre-wrap%3B%5Cn%5Ctmargin-top%3A%200%3B%5Cn%5Ctmargin-bottom%3A%200%3B%5Cn%5Ctoverflow%3A%20hidden%3B%5Cn%7D%5Cnpre.diffline%20%7B%5Cn%5Ctborder-width%3A%200%200%200%208px%3B%5Cn%5Ctmargin-left%3A%20-16px%3B%5Cn%5Ctmargin-right%3A%20-16px%3B%5Cn%5Ctpadding-right%3A%2016px%3B%5Cn%5Ctpadding-left%3A%208px%3B%5Cn%5Ctborder-style%3A%20solid%3B%5Cn%7D%5Cn.added%20%7B%5Cn%5Ctcolor%3A%20green%3B%5Cn%5Ctbackground-color%3A%20%23f4fbef%3B%5Cn%5Ctborder-color%3A%20%23c9ffb3%3B%5Cn%7D%5Cn.deleted%20%7B%5Cn%5Ctcolor%3A%20%23820e03%3B%5Cn%5Ctbackground-color%3A%20%23fbefef%3B%5Cn%5Ctborder-color%3A%20%23ffb3b4%3B%5Cn%7D%5Cn.deleted-highlight%20%7B%5Cn%5Ctbackground-color%3A%20%23ffb3b4%3B%5Cn%5Ctborder-radius%3A%203px%3B%5Cn%7D%5Cn.added-highlight%20%7B%5Cn%5Ctbackground-color%3A%20%23c9ffb3%3B%5Cn%5Ctborder-radius%3A%203px%3B%5Cn%7D%5Cn.common%20%7B%5Cn%5Ctcolor%3A%20%23999%3B%5Cn%7D%5Cn%3C%2Fstyle%3E%5Cn%3C%2Fhead%3E%5Cn%3Cbody%3E%5Cn%3F%5Cn%3C%2Fbody%3E%5Cn%3C%2Fhtml%3E%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B763%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22baseURL%22%3A%20%22%22%2C%20%22title%22%3A%20%22Diff%22%7D%2C%20%22class%22%3A%20%22WorkflowActionShowHTMLPreview%22%7D%5D%2C%20%22name%22%3A%20%22Diff%20with%20Clipboard%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone9%2C1%22%2C%20%22systemVersion%22%3A%20%2212.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-file-layout.png%22%7D", "description": "Shows a diff that compares the selected document with text in the clipboard. The diff is shown in the Preview panel.", "title": "Diff with Clipboard"}, {"url": "http://editorial-app.appspot.com/workflow/5793900337823744/4r5gTirQsDc", "workflow_data": {"username": "", "description": "Workflow for transferring files from Working Copy to Editorial and back again.\n\nWhen called with input, it will pick the filename from the first line and write the other lines into this file, which lets Working Copy create a new file with predefined content. The filename contains a unique identifier for remembering where it belongs. To avoid overwriting files in Editorial by mistake, the previous contents of files are put in WorkingCopy.bak\n\nWhen this workflow is called without any input the contents of the current file is written back to Working Copy.\n\nChange askcommit variable to 0 if you just want to save and not be asked to commit.\n\nTo install a new version of this workflow delete or rename this one and perform Edit in Editorial from Working Copy.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "all", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "all"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "key", "value": {"text": "7UXXJE9HLY", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "askcommit", "value": {"text": "1", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "path", "value": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:filename"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:file-extension"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "path", "value": {"text": "?.?", "tokenRanges": {"{0, 1}": "%editor:filename", "{2, 1}": "%editor:file-extension"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"revealBrowserAutomatically": true, "URL:__URL_ESCAPE__": 1, "URL": {"text": "working-copy://x-callback-url/write/?key=?&askcommit=?&path=?&text=?", "tokenRanges": {"{53, 1}": "askcommit", "{67, 1}": "Input", "{60, 1}": "path", "{41, 1}": "key"}, "type": "advancedText"}, "openIn": 1, "tabOption": 0, "waitUntilLoaded": false}, "class": "WorkflowActionOpenURL"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"showHUD": false, "HUDTitle": ""}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"regex": {"text": "(.*)\\n", "tokenRanges": {}, "type": "advancedText"}, "matchGroup": "1", "searchTypeOption": 0}, "class": "WorkflowActionMatchRegularExpression"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "filename", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "all"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 1, "find": {"text": "?\n", "tokenRanges": {"{0, 1}": "filename"}, "type": "advancedText"}, "replace": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "text", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": false, "ifNotExists": 0, "filename": "%var:filename"}, "class": "WorkflowActionGetFileContents"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": false, "text": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "ifNotExists": 0, "filename": "WorkingCopy.bak"}, "class": "WorkflowActionSetFileContents"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"duration": 2, "HUDText": {"text": "Previous content of ? put in WorkingCopy.bak", "tokenRanges": {"{20, 1}": "filename"}, "type": "advancedText"}, "icon": 0}, "class": "WorkflowActionShowHUD"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": false, "text": {"text": "?", "tokenRanges": {"{0, 1}": "text"}, "type": "advancedText"}, "ifNotExists": 0, "filename": "%var:filename"}, "class": "WorkflowActionSetFileContents"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": false, "filename": "%var:filename"}, "class": "WorkflowActionOpenDocument"}], "name": "Working Copy", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone10,3", "systemVersion": "12.2"}, "type": "wkflw", "public": true, "icon": "minicons-social-github_alt.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Workflow%20for%20transferring%20files%20from%20Working%20Copy%20to%20Editorial%20and%20back%20again.%5Cn%5CnWhen%20called%20with%20input%2C%20it%20will%20pick%20the%20filename%20from%20the%20first%20line%20and%20write%20the%20other%20lines%20into%20this%20file%2C%20which%20lets%20Working%20Copy%20create%20a%20new%20file%20with%20predefined%20content.%20The%20filename%20contains%20a%20unique%20identifier%20for%20remembering%20where%20it%20belongs.%20To%20avoid%20overwriting%20files%20in%20Editorial%20by%20mistake%2C%20the%20previous%20contents%20of%20files%20are%20put%20in%20WorkingCopy.bak%5Cn%5CnWhen%20this%20workflow%20is%20called%20without%20any%20input%20the%20contents%20of%20the%20current%20file%20is%20written%20back%20to%20Working%20Copy.%5Cn%5CnChange%20askcommit%20variable%20to%200%20if%20you%20just%20want%20to%20save%20and%20not%20be%20asked%20to%20commit.%5Cn%5CnTo%20install%20a%20new%20version%20of%20this%20workflow%20delete%20or%20rename%20this%20one%20and%20perform%20Edit%20in%20Editorial%20from%20Working%20Copy.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22all%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22all%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22key%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%227UXXJE9HLY%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22askcommit%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22path%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Afilename%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Afile-extension%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22path%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F.%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Afilename%22%2C%20%22%7B2%2C%201%7D%22%3A%20%22%25editor%3Afile-extension%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22revealBrowserAutomatically%22%3A%20true%2C%20%22URL%3A__URL_ESCAPE__%22%3A%201%2C%20%22URL%22%3A%20%7B%22text%22%3A%20%22working-copy%3A%2F%2Fx-callback-url%2Fwrite%2F%3Fkey%3D%3F%26askcommit%3D%3F%26path%3D%3F%26text%3D%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B53%2C%201%7D%22%3A%20%22askcommit%22%2C%20%22%7B67%2C%201%7D%22%3A%20%22Input%22%2C%20%22%7B60%2C%201%7D%22%3A%20%22path%22%2C%20%22%7B41%2C%201%7D%22%3A%20%22key%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22openIn%22%3A%201%2C%20%22tabOption%22%3A%200%2C%20%22waitUntilLoaded%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20false%2C%20%22HUDTitle%22%3A%20%22%22%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22regex%22%3A%20%7B%22text%22%3A%20%22%28.%2A%29%5C%5Cn%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22matchGroup%22%3A%20%221%22%2C%20%22searchTypeOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionMatchRegularExpression%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22filename%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22all%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%201%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%3F%5Cn%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22filename%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22text%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20false%2C%20%22ifNotExists%22%3A%200%2C%20%22filename%22%3A%20%22%25var%3Afilename%22%7D%2C%20%22class%22%3A%20%22WorkflowActionGetFileContents%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20false%2C%20%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ifNotExists%22%3A%200%2C%20%22filename%22%3A%20%22WorkingCopy.bak%22%7D%2C%20%22class%22%3A%20%22WorkflowActionSetFileContents%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22duration%22%3A%202%2C%20%22HUDText%22%3A%20%7B%22text%22%3A%20%22Previous%20content%20of%20%3F%20put%20in%20WorkingCopy.bak%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B20%2C%201%7D%22%3A%20%22filename%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22icon%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionShowHUD%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20false%2C%20%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22text%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ifNotExists%22%3A%200%2C%20%22filename%22%3A%20%22%25var%3Afilename%22%7D%2C%20%22class%22%3A%20%22WorkflowActionSetFileContents%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20false%2C%20%22filename%22%3A%20%22%25var%3Afilename%22%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenDocument%22%7D%5D%2C%20%22name%22%3A%20%22Working%20Copy%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone10%2C3%22%2C%20%22systemVersion%22%3A%20%2212.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-social-github_alt.png%22%7D", "description": "Workflow for transferring files from Working Copy to Editorial and back again.\n\nWhen called with input, it will pick the filename from the first line and write the other lines into this file, which lets Working Copy create a new file with predefined content. The filename contains a unique identifier for remembering where it belongs. To avoid overwriting files in Editorial by mistake, the previous contents of files are put in WorkingCopy.bak\n\nWhen this workflow is called without any input the contents of the current file is written back to Working Copy.\n\nChange askcommit variable to 0 if you just want to save and not be asked to commit.\n\nTo install a new version of this workflow delete or rename this one and perform Edit in Editorial from Working Copy.", "title": "Working Copy"}, {"url": "http://editorial-app.appspot.com/workflow/5240466354208768/VUEDMIjvRVo", "workflow_data": {"username": "", "description": "Moves @done tasks in a TaskPaper document to the \"Archive\" project (created if necessary).\n\nIf a task is in a project, a @project(name) tag is appended automatically. Note that this ignores indentation and doesn't handle sub-projects though.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Check if TaskPaper File...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:file-extension"}, "type": "advancedText"}, "expression2": {"text": "taskpaper", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"button1Value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "button3Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button2Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "title": "Not TaskPaper?", "button3Title": "", "button2Title": "", "button1Title": "Continue", "message": {"text": "TaskPaper documents typically use a \".taskpaper\" file extension, this document uses \".?\". Do you want to continue?", "tokenRanges": {"{86, 1}": "%editor:file-extension"}, "type": "advancedText"}, "showCancelButton": true}, "class": "WorkflowActionShowAlert"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionUnfoldText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "Message", "value": {"text": "(the Python script will set this to show the number of tasks being archived)", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"customTitle": "", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport editor\nimport re\nimport sys\n\ntext = editor.get_text()\nlines = text.splitlines()\n\nnew_lines = []\narchive_found = False\ndone_tasks = []\ncurrent_project = None\nfor i, line in enumerate(lines):\n\tif line.strip().endswith(':'):\n\t\tcurrent_project = line.strip(': ')\n\tif line.strip().startswith('Archive:'):\n\t\tarchive_found = True\n\t\tnew_lines.append(line)\n\t\tnew_lines += done_tasks\n\telif not archive_found and line.find('@done') >= 0:\n\t\tif current_project:\n\t\t\tline = '%s @project(%s)' % (line, current_project)\n\t\tdone_tasks.append(line)\n\telse:\n\t\tnew_lines.append(line)\n\nif not done_tasks:\n\tworkflow.set_output('')\n\tworkflow.set_variable('Message', 'No @done Tasks')\nelse:\n\tworkflow.set_variable('Message', '%i Task%s Archived' % (len(done_tasks), '' if len(done_tasks) == 1 else 's'))\n\tif not archive_found:\n\t\tnew_lines.append('Archive:')\n\t\tnew_lines += done_tasks\n\toutput = '\\n'.join(new_lines)\n\tworkflow.set_output(output)\n"}, "pauseWithoutShowingParameters": false, "colorLabel": 1, "class": "WorkflowActionRunScript", "pauseBeforeRunning": false}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "Replacement", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"numberOfSteps": {"text": "1", "tokenRanges": {}, "type": "advancedText"}, "direction": 2, "unit": 0}, "class": "WorkflowActionExtendSelection"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?", "tokenRanges": {"{0, 1}": "Replacement"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Find \"Archive:\" (to move cursor)", "parameters": {"outputOption": 1, "regex": {"text": "^ *Archive:()", "tokenRanges": {}, "type": "advancedText"}, "matchGroup": "1", "searchTypeOption": 0}, "class": "WorkflowActionMatchRegularExpression"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"range": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionSelectRange"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"duration": 1, "HUDText": {"text": "?", "tokenRanges": {"{0, 1}": "Message"}, "type": "advancedText"}, "icon": 0}, "class": "WorkflowActionShowHUD"}], "name": "Archive @done", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone8,4", "systemVersion": "12.3"}, "type": "wkflw", "public": true, "icon": "minicons-icons-content-box.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Moves%20%40done%20tasks%20in%20a%20TaskPaper%20document%20to%20the%20%5C%22Archive%5C%22%20project%20%28created%20if%20necessary%29.%5Cn%5CnIf%20a%20task%20is%20in%20a%20project%2C%20a%20%40project%28name%29%20tag%20is%20appended%20automatically.%20Note%20that%20this%20ignores%20indentation%20and%20doesn%27t%20handle%20sub-projects%20though.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Check%20if%20TaskPaper%20File...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Afile-extension%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22taskpaper%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22button1Value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button3Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button2Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Not%20TaskPaper%3F%22%2C%20%22button3Title%22%3A%20%22%22%2C%20%22button2Title%22%3A%20%22%22%2C%20%22button1Title%22%3A%20%22Continue%22%2C%20%22message%22%3A%20%7B%22text%22%3A%20%22TaskPaper%20documents%20typically%20use%20a%20%5C%22.taskpaper%5C%22%20file%20extension%2C%20this%20document%20uses%20%5C%22.%3F%5C%22.%20Do%20you%20want%20to%20continue%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B86%2C%201%7D%22%3A%20%22%25editor%3Afile-extension%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22showCancelButton%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionShowAlert%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionUnfoldText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22Message%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%28the%20Python%20script%20will%20set%20this%20to%20show%20the%20number%20of%20tasks%20being%20archived%29%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20editor%5Cnimport%20re%5Cnimport%20sys%5Cn%5Cntext%20%3D%20editor.get_text%28%29%5Cnlines%20%3D%20text.splitlines%28%29%5Cn%5Cnnew_lines%20%3D%20%5B%5D%5Cnarchive_found%20%3D%20False%5Cndone_tasks%20%3D%20%5B%5D%5Cncurrent_project%20%3D%20None%5Cnfor%20i%2C%20line%20in%20enumerate%28lines%29%3A%5Cn%5Ctif%20line.strip%28%29.endswith%28%27%3A%27%29%3A%5Cn%5Ct%5Ctcurrent_project%20%3D%20line.strip%28%27%3A%20%27%29%5Cn%5Ctif%20line.strip%28%29.startswith%28%27Archive%3A%27%29%3A%5Cn%5Ct%5Ctarchive_found%20%3D%20True%5Cn%5Ct%5Ctnew_lines.append%28line%29%5Cn%5Ct%5Ctnew_lines%20%2B%3D%20done_tasks%5Cn%5Ctelif%20not%20archive_found%20and%20line.find%28%27%40done%27%29%20%3E%3D%200%3A%5Cn%5Ct%5Ctif%20current_project%3A%5Cn%5Ct%5Ct%5Ctline%20%3D%20%27%25s%20%40project%28%25s%29%27%20%25%20%28line%2C%20current_project%29%5Cn%5Ct%5Ctdone_tasks.append%28line%29%5Cn%5Ctelse%3A%5Cn%5Ct%5Ctnew_lines.append%28line%29%5Cn%5Cnif%20not%20done_tasks%3A%5Cn%5Ctworkflow.set_output%28%27%27%29%5Cn%5Ctworkflow.set_variable%28%27Message%27%2C%20%27No%20%40done%20Tasks%27%29%5Cnelse%3A%5Cn%5Ctworkflow.set_variable%28%27Message%27%2C%20%27%25i%20Task%25s%20Archived%27%20%25%20%28len%28done_tasks%29%2C%20%27%27%20if%20len%28done_tasks%29%20%3D%3D%201%20else%20%27s%27%29%29%5Cn%5Ctif%20not%20archive_found%3A%5Cn%5Ct%5Ctnew_lines.append%28%27Archive%3A%27%29%5Cn%5Ct%5Ctnew_lines%20%2B%3D%20done_tasks%5Cn%5Ctoutput%20%3D%20%27%5C%5Cn%27.join%28new_lines%29%5Cn%5Ctworkflow.set_output%28output%29%5Cn%22%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%201%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22Replacement%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22numberOfSteps%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22direction%22%3A%202%2C%20%22unit%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionExtendSelection%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Replacement%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Find%20%5C%22Archive%3A%5C%22%20%28to%20move%20cursor%29%22%2C%20%22parameters%22%3A%20%7B%22outputOption%22%3A%201%2C%20%22regex%22%3A%20%7B%22text%22%3A%20%22%5E%20%2AArchive%3A%28%29%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22matchGroup%22%3A%20%221%22%2C%20%22searchTypeOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionMatchRegularExpression%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22range%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionSelectRange%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22duration%22%3A%201%2C%20%22HUDText%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Message%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22icon%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionShowHUD%22%7D%5D%2C%20%22name%22%3A%20%22Archive%20%40done%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone8%2C4%22%2C%20%22systemVersion%22%3A%20%2212.3%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-content-box.png%22%7D", "description": "Moves @done tasks in a TaskPaper document to the \"Archive\" project (created if necessary).\n\nIf a task is in a project, a @project(name) tag is appended automatically. Note that this ignores indentation and doesn't handle sub-projects though.", "title": "Archive @done"}, {"url": "http://editorial-app.appspot.com/workflow/5803416307630080/JzNX1N2PUJI", "workflow_data": {"username": "", "description": "Modified from omnigroup's New Omnifocus Project: http://people.omnigroup.com/kc/editorial-template-project-workflow.html\n\nCreate new simple project without ask placeholder. \n\n\u4fee\u6539\u81ea Omnigroup \u7684 New Omnifocus Project\uff0c\u53d6\u6d88\u4e86\u5176\u4e2d\u7684 Placeholder\uff0c\u6240\u4ee5\u53ef\u4ee5\u76f4\u63a5\u53d1\u9001\u9879\u76ee\u5230 Omnifocus \u800c\u4e0d\u4f1a\u63d0\u793a\u4f60\u6ca1\u6709\u7ed9\u53d8\u91cf\u8d4b\u503c\u3002", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport dialogs\nimport re\n\naction_in = workflow.get_input()\n\n# Find placeholders\nknown_placeholders = set()\nplaceholders = []\nfields = []\n\naction_out = action_in\n\nworkflow.set_output(action_out)\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionURLEscape"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "encodedContent", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"URL": {"text": "omnifocus://x-callback-url/paste?target=projects&content=?", "tokenRanges": {"{57, 1}": "encodedContent"}, "type": "advancedText"}, "waitUntilLoaded": false, "revealBrowserAutomatically": true, "openIn": 0, "tabOption": 0}, "class": "WorkflowActionOpenURL"}], "name": "Project to Omnifocus (simple)", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad6,3", "systemVersion": "12.3"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_LIST.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Modified%20from%20omnigroup%27s%20New%20Omnifocus%20Project%3A%20http%3A%2F%2Fpeople.omnigroup.com%2Fkc%2Feditorial-template-project-workflow.html%5Cn%5CnCreate%20new%20simple%20project%20without%20ask%20placeholder.%20%5Cn%5Cn%5Cu4fee%5Cu6539%5Cu81ea%20Omnigroup%20%5Cu7684%20New%20Omnifocus%20Project%5Cuff0c%5Cu53d6%5Cu6d88%5Cu4e86%5Cu5176%5Cu4e2d%5Cu7684%20Placeholder%5Cuff0c%5Cu6240%5Cu4ee5%5Cu53ef%5Cu4ee5%5Cu76f4%5Cu63a5%5Cu53d1%5Cu9001%5Cu9879%5Cu76ee%5Cu5230%20Omnifocus%20%5Cu800c%5Cu4e0d%5Cu4f1a%5Cu63d0%5Cu793a%5Cu4f60%5Cu6ca1%5Cu6709%5Cu7ed9%5Cu53d8%5Cu91cf%5Cu8d4b%5Cu503c%5Cu3002%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20dialogs%5Cnimport%20re%5Cn%5Cnaction_in%20%3D%20workflow.get_input%28%29%5Cn%5Cn%23%20Find%20placeholders%5Cnknown_placeholders%20%3D%20set%28%29%5Cnplaceholders%20%3D%20%5B%5D%5Cnfields%20%3D%20%5B%5D%5Cn%5Cnaction_out%20%3D%20action_in%5Cn%5Cnworkflow.set_output%28action_out%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionURLEscape%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22encodedContent%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22URL%22%3A%20%7B%22text%22%3A%20%22omnifocus%3A%2F%2Fx-callback-url%2Fpaste%3Ftarget%3Dprojects%26content%3D%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B57%2C%201%7D%22%3A%20%22encodedContent%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22waitUntilLoaded%22%3A%20false%2C%20%22revealBrowserAutomatically%22%3A%20true%2C%20%22openIn%22%3A%200%2C%20%22tabOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%5D%2C%20%22name%22%3A%20%22Project%20to%20Omnifocus%20%28simple%29%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad6%2C3%22%2C%20%22systemVersion%22%3A%20%2212.3%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_LIST.png%22%7D", "description": "Modified from omnigroup's New Omnifocus Project: http://people.omnigroup.com/kc/editorial-template-project-workflow.html\n\nCreate new simple project without ask placeholder. \n\n\u4fee\u6539\u81ea Omnigroup \u7684 New Omnifocus Project\uff0c\u53d6\u6d88\u4e86\u5176\u4e2d\u7684 Placeholder\uff0c\u6240\u4ee5\u53ef\u4ee5\u76f4\u63a5\u53d1\u9001\u9879\u76ee\u5230 Omnifocus \u800c\u4e0d\u4f1a\u63d0\u793a\u4f60\u6ca1\u6709\u7ed9\u53d8\u91cf\u8d4b\u503c\u3002", "title": "Project to Omnifocus (simple)"}, {"url": "http://editorial-app.appspot.com/workflow/5801361232887808/sUYnUCtfdh8", "workflow_data": {"username": "", "description": "Detectar Textos B\u00edblicos", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport editor\n\nworkflow.set_variable('ScrollPosition', repr(editor.get_scroll_position()))\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "initialInput", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"regex": {"text": "([\\[=])?([1-3])?(?:\\s*)([\\w+]{2,})[.]?(?:\\s*)(\\d+)(?:\\s*)[:]((?:\\s*)(?:\\d+)(?:(?:[,-])?(?:\\s*)(?:\\d+)?)*)", "tokenRanges": {}, "type": "advancedText"}, "repeatOption": 1, "reverse": false}, "class": "WorkflowActionRepeatWithLines"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "^[^\\[=]", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 4}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionRemoveWhitespace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "scriptureBefore", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport re\nimport console\n\naction_in = workflow.get_input()\n\nbible = [\n    ['Es'],\n    ['G\u00e9nesis', 'G\u00e9', 'Ge', 'G\u00e9', 'Gene', 'Gen', 'G\u00e9n', 'G\u00e9nesis'],\n    ['\u00c9xodo', '\u00c9x', 'Ex', 'Exodo', 'Exo'],\n    ['Lev\u00edtico', 'Le', 'Lev', 'Lev\u00edtico', 'Levitico'],\n    ['N\u00fameros', 'N\u00fa', 'Nu', 'Num', 'Numeros'],\n    ['Deuteronomio', 'Dt', 'Deu', 'De'],\n    ['Josu\u00e9', 'Jos', 'Josue'],\n    ['Jueces', 'Jue'],\n    ['Rut', 'Ru'],\n    ['1 Samuel', '1Sa', '1 Sam'],\n    ['2 Samuel', '2Sa', '2 Sam'],\n    ['1 Reyes', '1Re', '1 Rey'],\n    ['2 Reyes', '2Re', '2 Rey'],\n    ['1 Cr\u00f3nicas', '1Cr', '1 Cro', '1 Cr'],\n    ['2 Cr\u00f3nicas', '2Cr', '2 Cro', '2 Cr'],\n    ['Esdras', 'Esd'],\n    ['Nehem\u00edas', 'Ne', 'Neh'],\n    ['Ester', 'Est'],\n    ['Job', 'Job'],\n    ['Salmos', 'Sl', 'Sal', 'Salmo'],\n    ['Proverbios', 'Pr', 'Pro', 'Prov'],\n    ['Eclesiast\u00e9s', 'Ec', 'Ecl', 'Ecle'],\n    ['El Cantar de los Cantares', 'Can', 'Cantar', 'Cantar de los Cantares'],\n    ['Isa\u00edas', 'Isa\u00edas', 'Isaias', 'Isa', 'Is'],\n    ['Jerem\u00edas', 'Jerem\u00edas', 'Jeremias', 'Jere', 'Jer'],\n    ['Lamentaciones', 'Lam', 'Lament'],\n    ['Ezequiel', 'Eze', 'Ezeq'],\n    ['Daniel', 'Da', 'Dan'],\n    ['Oseas', 'Os', 'Ose'],\n    ['Joel', 'Joe'],\n    ['Am\u00f3s', 'Am', 'Amos'],\n    ['Abd\u00edas', 'Abd', 'Abdias'],\n    ['Jon\u00e1s', 'Jon', 'Jonas'],\n    ['Miqueas', 'Miq', 'Miquea'],\n    ['Nah\u00fam', 'Na', 'Nah'],\n    ['Habacuc', 'Hab', 'Haba'],\n    ['Sofon\u00edas', 'Sof', 'Sofonias'],\n    ['Ageo', 'Ag', 'Age'],\n    ['Zacar\u00edas', 'Zac', 'Zacarias'],\n    ['Malaqu\u00edas', 'Mal', 'Malaquias'],\n    ['Mateo', 'Mt', 'Mat'],\n    ['Marcos', 'Mr', 'Marc', 'Mar'],\n    ['Lucas', 'Lu', 'Luc'],\n    ['Juan', 'Jn'],\n    ['Hechos', 'Hch', 'Hech'],\n    ['Romanos', 'Ro', 'Rom'],\n    ['1 Corintios', '1Co', '1 Cor'],\n    ['2 Corintios', '2Co', '2 Cor'],\n    ['G\u00e1latas', 'G\u00e1l', 'Galatas', 'Gal'],\n    ['Efesios', 'Ef', 'Efe'],\n    ['Filipenses', 'Flp', 'Fili'],\n    ['Colosenses', 'Col', 'Colo'],\n    ['1 Tesalonicenses', '1Te', '1 Te', '1 Tes'],\n    ['2 Tesalonicenses', '2Te', '2 Te', '2 Tes'],\n    ['1 Timoteo', '1Ti', '1 Ti', '1 Tim'],\n    ['2 Timoteo', '2Ti', '2 Ti', '2 Tim'],\n    ['Tito', 'Tit'],\n    ['Filem\u00f3n', 'Flm', 'File', 'Filemon'],\n    ['Hebreos', 'Heb', 'Hebr'],\n    ['Santiago', 'Snt', 'Sant'],\n    ['1 Pedro', '1Pe', '1 Ped', '1 Pe'],\n    ['2 Pedro', '2Pe', '2 Ped', '2 Pe'],\n    ['1 Juan', '1Jn', '1 Jn'],\n    ['2 Juan', '2Jn', '2 Jn'],\n    ['3 Juan', '3Jn', '3 Jn'],\n    ['Judas', 'Jud'],\n    ['Revelaci\u00f3n', 'Rev', 'Revelacion', 'Revel', 'Re']\n]\n\ndef getBook(book):\n\tfor list in bible:\n\t\tfor bookName in list:\n\t\t\tif bookName.lower().strip() == book.lower().strip():\n\t\t\t\treturn (list[0], list[1])\n\treturn ('', '')\n\t\n\ndef processMatch(m):\n\tpart = ''\n\tbook = ''\n\tabreviation = ''\n\tchapter = ''\n\tverses = '';\n\tif m.group(2) is not None:\n\t\tpart = m.group(2).strip()\n\tif m.group(3) is not None:\n\t\tbook = m.group(3).strip()\n\tif m.group(4) is not None:\n\t\tchapter = m.group(4).strip()\n\tif m.group(5) is not None:\n\t\tverses = m.group(5).strip()\n\t(libro, abreviation) = getBook(part + \" \" + book)\n\t\n\tif m.group(1) is not None:\n\t\tif m.group(1).strip() == '[':\n\t\t\treturn false\n\t\telif m.group(1).strip() == '=':\n\t\t\treturn false\n\t\telse:\n\t\t\treturn '[{0} {1}:{2}](equipdbible://x-callback-url/lookup?x-source=editorial&language=es&scripture={3}{4}:{5}&x-success=editorial://)'.format(libro.strip(), chapter.strip(), verses, abreviation.strip(), chapter.strip(),verses.strip().replace(' ', ''))\n\telse:\n\t\treturn '[{0} {1}:{2}](equipdbible://x-callback-url/lookup?x-source=editorial&language=es&scripture={3}{4}:{5}&x-success=editorial://)'.format(libro.strip(), chapter.strip(), verses, abreviation.strip(), chapter.strip(),verses.strip().replace(' ', ''))\n\n#This regular expression matches a bible scripture capturing \n#Group 1 ([ = or Empty) - This char help identify when a scripture has already been extracted and replaced in the text as a markdown link to equipd bible.\n#Group 2 (Primero, segundo or tercero) (o vac\u00edo)\n#Group 3 (Libro de la Biblia)\n#Group 4 (Cap\u00edtulo)\n#Group 5 (Vers\u00edculo/s)\n\nregex = re.compile(r'([\\[=])?([1-3])?(?:\\s*)([\\w+]{2,})[.]?(?:\\s*)(\\d+)(?:\\s*)[:]((?:\\s*)(?:\\d+)(?:(?:[,;:\u2013-])?(?:\\s*)(?:\\d+)?)*)', re.UNICODE)\n\nresult = regex.sub(processMatch, action_in)\n\nworkflow.set_output(result)\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "urlToEquipd", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "Input", "value": {"text": "?", "tokenRanges": {"{0, 1}": "initialInput"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 0, "find": {"text": "?", "tokenRanges": {"{0, 1}": "scriptureBefore"}, "type": "advancedText"}, "replace": {"text": "?", "tokenRanges": {"{0, 1}": "urlToEquipd"}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "initialInput", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "madeChange", "value": {"text": "True", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionRepeatWithLinesEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "madeChange"}, "type": "advancedText"}, "expression2": {"text": "True", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"numberOfSteps": {"text": "1", "tokenRanges": {}, "type": "advancedText"}, "direction": 2, "unit": 0}, "class": "WorkflowActionExtendSelection"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?", "tokenRanges": {"{0, 1}": "initialInput"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport editor\n\neditor.set_scroll_position(float(workflow.get_variable('ScrollPosition')))\n"}, "class": "WorkflowActionRunScript"}], "name": "Detectar Textos B\u00edblicos", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad5,3", "systemVersion": "12.1.4"}, "type": "wkflw", "public": true, "icon": "minicons-icons-content-book-6.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Detectar%20Textos%20B%5Cu00edblicos%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20editor%5Cn%5Cnworkflow.set_variable%28%27ScrollPosition%27%2C%20repr%28editor.get_scroll_position%28%29%29%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22initialInput%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22regex%22%3A%20%7B%22text%22%3A%20%22%28%5B%5C%5C%5B%3D%5D%29%3F%28%5B1-3%5D%29%3F%28%3F%3A%5C%5Cs%2A%29%28%5B%5C%5Cw%2B%5D%7B2%2C%7D%29%5B.%5D%3F%28%3F%3A%5C%5Cs%2A%29%28%5C%5Cd%2B%29%28%3F%3A%5C%5Cs%2A%29%5B%3A%5D%28%28%3F%3A%5C%5Cs%2A%29%28%3F%3A%5C%5Cd%2B%29%28%3F%3A%28%3F%3A%5B%2C-%5D%29%3F%28%3F%3A%5C%5Cs%2A%29%28%3F%3A%5C%5Cd%2B%29%3F%29%2A%29%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22repeatOption%22%3A%201%2C%20%22reverse%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionRepeatWithLines%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%5E%5B%5E%5C%5C%5B%3D%5D%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%204%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionRemoveWhitespace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22scriptureBefore%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20re%5Cnimport%20console%5Cn%5Cnaction_in%20%3D%20workflow.get_input%28%29%5Cn%5Cnbible%20%3D%20%5B%5Cn%20%20%20%20%5B%27Es%27%5D%2C%5Cn%20%20%20%20%5B%27G%5Cu00e9nesis%27%2C%20%27G%5Cu00e9%27%2C%20%27Ge%27%2C%20%27G%5Cu00e9%27%2C%20%27Gene%27%2C%20%27Gen%27%2C%20%27G%5Cu00e9n%27%2C%20%27G%5Cu00e9nesis%27%5D%2C%5Cn%20%20%20%20%5B%27%5Cu00c9xodo%27%2C%20%27%5Cu00c9x%27%2C%20%27Ex%27%2C%20%27Exodo%27%2C%20%27Exo%27%5D%2C%5Cn%20%20%20%20%5B%27Lev%5Cu00edtico%27%2C%20%27Le%27%2C%20%27Lev%27%2C%20%27Lev%5Cu00edtico%27%2C%20%27Levitico%27%5D%2C%5Cn%20%20%20%20%5B%27N%5Cu00fameros%27%2C%20%27N%5Cu00fa%27%2C%20%27Nu%27%2C%20%27Num%27%2C%20%27Numeros%27%5D%2C%5Cn%20%20%20%20%5B%27Deuteronomio%27%2C%20%27Dt%27%2C%20%27Deu%27%2C%20%27De%27%5D%2C%5Cn%20%20%20%20%5B%27Josu%5Cu00e9%27%2C%20%27Jos%27%2C%20%27Josue%27%5D%2C%5Cn%20%20%20%20%5B%27Jueces%27%2C%20%27Jue%27%5D%2C%5Cn%20%20%20%20%5B%27Rut%27%2C%20%27Ru%27%5D%2C%5Cn%20%20%20%20%5B%271%20Samuel%27%2C%20%271Sa%27%2C%20%271%20Sam%27%5D%2C%5Cn%20%20%20%20%5B%272%20Samuel%27%2C%20%272Sa%27%2C%20%272%20Sam%27%5D%2C%5Cn%20%20%20%20%5B%271%20Reyes%27%2C%20%271Re%27%2C%20%271%20Rey%27%5D%2C%5Cn%20%20%20%20%5B%272%20Reyes%27%2C%20%272Re%27%2C%20%272%20Rey%27%5D%2C%5Cn%20%20%20%20%5B%271%20Cr%5Cu00f3nicas%27%2C%20%271Cr%27%2C%20%271%20Cro%27%2C%20%271%20Cr%27%5D%2C%5Cn%20%20%20%20%5B%272%20Cr%5Cu00f3nicas%27%2C%20%272Cr%27%2C%20%272%20Cro%27%2C%20%272%20Cr%27%5D%2C%5Cn%20%20%20%20%5B%27Esdras%27%2C%20%27Esd%27%5D%2C%5Cn%20%20%20%20%5B%27Nehem%5Cu00edas%27%2C%20%27Ne%27%2C%20%27Neh%27%5D%2C%5Cn%20%20%20%20%5B%27Ester%27%2C%20%27Est%27%5D%2C%5Cn%20%20%20%20%5B%27Job%27%2C%20%27Job%27%5D%2C%5Cn%20%20%20%20%5B%27Salmos%27%2C%20%27Sl%27%2C%20%27Sal%27%2C%20%27Salmo%27%5D%2C%5Cn%20%20%20%20%5B%27Proverbios%27%2C%20%27Pr%27%2C%20%27Pro%27%2C%20%27Prov%27%5D%2C%5Cn%20%20%20%20%5B%27Eclesiast%5Cu00e9s%27%2C%20%27Ec%27%2C%20%27Ecl%27%2C%20%27Ecle%27%5D%2C%5Cn%20%20%20%20%5B%27El%20Cantar%20de%20los%20Cantares%27%2C%20%27Can%27%2C%20%27Cantar%27%2C%20%27Cantar%20de%20los%20Cantares%27%5D%2C%5Cn%20%20%20%20%5B%27Isa%5Cu00edas%27%2C%20%27Isa%5Cu00edas%27%2C%20%27Isaias%27%2C%20%27Isa%27%2C%20%27Is%27%5D%2C%5Cn%20%20%20%20%5B%27Jerem%5Cu00edas%27%2C%20%27Jerem%5Cu00edas%27%2C%20%27Jeremias%27%2C%20%27Jere%27%2C%20%27Jer%27%5D%2C%5Cn%20%20%20%20%5B%27Lamentaciones%27%2C%20%27Lam%27%2C%20%27Lament%27%5D%2C%5Cn%20%20%20%20%5B%27Ezequiel%27%2C%20%27Eze%27%2C%20%27Ezeq%27%5D%2C%5Cn%20%20%20%20%5B%27Daniel%27%2C%20%27Da%27%2C%20%27Dan%27%5D%2C%5Cn%20%20%20%20%5B%27Oseas%27%2C%20%27Os%27%2C%20%27Ose%27%5D%2C%5Cn%20%20%20%20%5B%27Joel%27%2C%20%27Joe%27%5D%2C%5Cn%20%20%20%20%5B%27Am%5Cu00f3s%27%2C%20%27Am%27%2C%20%27Amos%27%5D%2C%5Cn%20%20%20%20%5B%27Abd%5Cu00edas%27%2C%20%27Abd%27%2C%20%27Abdias%27%5D%2C%5Cn%20%20%20%20%5B%27Jon%5Cu00e1s%27%2C%20%27Jon%27%2C%20%27Jonas%27%5D%2C%5Cn%20%20%20%20%5B%27Miqueas%27%2C%20%27Miq%27%2C%20%27Miquea%27%5D%2C%5Cn%20%20%20%20%5B%27Nah%5Cu00fam%27%2C%20%27Na%27%2C%20%27Nah%27%5D%2C%5Cn%20%20%20%20%5B%27Habacuc%27%2C%20%27Hab%27%2C%20%27Haba%27%5D%2C%5Cn%20%20%20%20%5B%27Sofon%5Cu00edas%27%2C%20%27Sof%27%2C%20%27Sofonias%27%5D%2C%5Cn%20%20%20%20%5B%27Ageo%27%2C%20%27Ag%27%2C%20%27Age%27%5D%2C%5Cn%20%20%20%20%5B%27Zacar%5Cu00edas%27%2C%20%27Zac%27%2C%20%27Zacarias%27%5D%2C%5Cn%20%20%20%20%5B%27Malaqu%5Cu00edas%27%2C%20%27Mal%27%2C%20%27Malaquias%27%5D%2C%5Cn%20%20%20%20%5B%27Mateo%27%2C%20%27Mt%27%2C%20%27Mat%27%5D%2C%5Cn%20%20%20%20%5B%27Marcos%27%2C%20%27Mr%27%2C%20%27Marc%27%2C%20%27Mar%27%5D%2C%5Cn%20%20%20%20%5B%27Lucas%27%2C%20%27Lu%27%2C%20%27Luc%27%5D%2C%5Cn%20%20%20%20%5B%27Juan%27%2C%20%27Jn%27%5D%2C%5Cn%20%20%20%20%5B%27Hechos%27%2C%20%27Hch%27%2C%20%27Hech%27%5D%2C%5Cn%20%20%20%20%5B%27Romanos%27%2C%20%27Ro%27%2C%20%27Rom%27%5D%2C%5Cn%20%20%20%20%5B%271%20Corintios%27%2C%20%271Co%27%2C%20%271%20Cor%27%5D%2C%5Cn%20%20%20%20%5B%272%20Corintios%27%2C%20%272Co%27%2C%20%272%20Cor%27%5D%2C%5Cn%20%20%20%20%5B%27G%5Cu00e1latas%27%2C%20%27G%5Cu00e1l%27%2C%20%27Galatas%27%2C%20%27Gal%27%5D%2C%5Cn%20%20%20%20%5B%27Efesios%27%2C%20%27Ef%27%2C%20%27Efe%27%5D%2C%5Cn%20%20%20%20%5B%27Filipenses%27%2C%20%27Flp%27%2C%20%27Fili%27%5D%2C%5Cn%20%20%20%20%5B%27Colosenses%27%2C%20%27Col%27%2C%20%27Colo%27%5D%2C%5Cn%20%20%20%20%5B%271%20Tesalonicenses%27%2C%20%271Te%27%2C%20%271%20Te%27%2C%20%271%20Tes%27%5D%2C%5Cn%20%20%20%20%5B%272%20Tesalonicenses%27%2C%20%272Te%27%2C%20%272%20Te%27%2C%20%272%20Tes%27%5D%2C%5Cn%20%20%20%20%5B%271%20Timoteo%27%2C%20%271Ti%27%2C%20%271%20Ti%27%2C%20%271%20Tim%27%5D%2C%5Cn%20%20%20%20%5B%272%20Timoteo%27%2C%20%272Ti%27%2C%20%272%20Ti%27%2C%20%272%20Tim%27%5D%2C%5Cn%20%20%20%20%5B%27Tito%27%2C%20%27Tit%27%5D%2C%5Cn%20%20%20%20%5B%27Filem%5Cu00f3n%27%2C%20%27Flm%27%2C%20%27File%27%2C%20%27Filemon%27%5D%2C%5Cn%20%20%20%20%5B%27Hebreos%27%2C%20%27Heb%27%2C%20%27Hebr%27%5D%2C%5Cn%20%20%20%20%5B%27Santiago%27%2C%20%27Snt%27%2C%20%27Sant%27%5D%2C%5Cn%20%20%20%20%5B%271%20Pedro%27%2C%20%271Pe%27%2C%20%271%20Ped%27%2C%20%271%20Pe%27%5D%2C%5Cn%20%20%20%20%5B%272%20Pedro%27%2C%20%272Pe%27%2C%20%272%20Ped%27%2C%20%272%20Pe%27%5D%2C%5Cn%20%20%20%20%5B%271%20Juan%27%2C%20%271Jn%27%2C%20%271%20Jn%27%5D%2C%5Cn%20%20%20%20%5B%272%20Juan%27%2C%20%272Jn%27%2C%20%272%20Jn%27%5D%2C%5Cn%20%20%20%20%5B%273%20Juan%27%2C%20%273Jn%27%2C%20%273%20Jn%27%5D%2C%5Cn%20%20%20%20%5B%27Judas%27%2C%20%27Jud%27%5D%2C%5Cn%20%20%20%20%5B%27Revelaci%5Cu00f3n%27%2C%20%27Rev%27%2C%20%27Revelacion%27%2C%20%27Revel%27%2C%20%27Re%27%5D%5Cn%5D%5Cn%5Cndef%20getBook%28book%29%3A%5Cn%5Ctfor%20list%20in%20bible%3A%5Cn%5Ct%5Ctfor%20bookName%20in%20list%3A%5Cn%5Ct%5Ct%5Ctif%20bookName.lower%28%29.strip%28%29%20%3D%3D%20book.lower%28%29.strip%28%29%3A%5Cn%5Ct%5Ct%5Ct%5Ctreturn%20%28list%5B0%5D%2C%20list%5B1%5D%29%5Cn%5Ctreturn%20%28%27%27%2C%20%27%27%29%5Cn%5Ct%5Cn%5Cndef%20processMatch%28m%29%3A%5Cn%5Ctpart%20%3D%20%27%27%5Cn%5Ctbook%20%3D%20%27%27%5Cn%5Ctabreviation%20%3D%20%27%27%5Cn%5Ctchapter%20%3D%20%27%27%5Cn%5Ctverses%20%3D%20%27%27%3B%5Cn%5Ctif%20m.group%282%29%20is%20not%20None%3A%5Cn%5Ct%5Ctpart%20%3D%20m.group%282%29.strip%28%29%5Cn%5Ctif%20m.group%283%29%20is%20not%20None%3A%5Cn%5Ct%5Ctbook%20%3D%20m.group%283%29.strip%28%29%5Cn%5Ctif%20m.group%284%29%20is%20not%20None%3A%5Cn%5Ct%5Ctchapter%20%3D%20m.group%284%29.strip%28%29%5Cn%5Ctif%20m.group%285%29%20is%20not%20None%3A%5Cn%5Ct%5Ctverses%20%3D%20m.group%285%29.strip%28%29%5Cn%5Ct%28libro%2C%20abreviation%29%20%3D%20getBook%28part%20%2B%20%5C%22%20%5C%22%20%2B%20book%29%5Cn%5Ct%5Cn%5Ctif%20m.group%281%29%20is%20not%20None%3A%5Cn%5Ct%5Ctif%20m.group%281%29.strip%28%29%20%3D%3D%20%27%5B%27%3A%5Cn%5Ct%5Ct%5Ctreturn%20false%5Cn%5Ct%5Ctelif%20m.group%281%29.strip%28%29%20%3D%3D%20%27%3D%27%3A%5Cn%5Ct%5Ct%5Ctreturn%20false%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctreturn%20%27%5B%7B0%7D%20%7B1%7D%3A%7B2%7D%5D%28equipdbible%3A%2F%2Fx-callback-url%2Flookup%3Fx-source%3Deditorial%26language%3Des%26scripture%3D%7B3%7D%7B4%7D%3A%7B5%7D%26x-success%3Deditorial%3A%2F%2F%29%27.format%28libro.strip%28%29%2C%20chapter.strip%28%29%2C%20verses%2C%20abreviation.strip%28%29%2C%20chapter.strip%28%29%2Cverses.strip%28%29.replace%28%27%20%27%2C%20%27%27%29%29%5Cn%5Ctelse%3A%5Cn%5Ct%5Ctreturn%20%27%5B%7B0%7D%20%7B1%7D%3A%7B2%7D%5D%28equipdbible%3A%2F%2Fx-callback-url%2Flookup%3Fx-source%3Deditorial%26language%3Des%26scripture%3D%7B3%7D%7B4%7D%3A%7B5%7D%26x-success%3Deditorial%3A%2F%2F%29%27.format%28libro.strip%28%29%2C%20chapter.strip%28%29%2C%20verses%2C%20abreviation.strip%28%29%2C%20chapter.strip%28%29%2Cverses.strip%28%29.replace%28%27%20%27%2C%20%27%27%29%29%5Cn%5Cn%23This%20regular%20expression%20matches%20a%20bible%20scripture%20capturing%20%5Cn%23Group%201%20%28%5B%20%3D%20or%20Empty%29%20-%20This%20char%20help%20identify%20when%20a%20scripture%20has%20already%20been%20extracted%20and%20replaced%20in%20the%20text%20as%20a%20markdown%20link%20to%20equipd%20bible.%5Cn%23Group%202%20%28Primero%2C%20segundo%20or%20tercero%29%20%28o%20vac%5Cu00edo%29%5Cn%23Group%203%20%28Libro%20de%20la%20Biblia%29%5Cn%23Group%204%20%28Cap%5Cu00edtulo%29%5Cn%23Group%205%20%28Vers%5Cu00edculo%2Fs%29%5Cn%5Cnregex%20%3D%20re.compile%28r%27%28%5B%5C%5C%5B%3D%5D%29%3F%28%5B1-3%5D%29%3F%28%3F%3A%5C%5Cs%2A%29%28%5B%5C%5Cw%2B%5D%7B2%2C%7D%29%5B.%5D%3F%28%3F%3A%5C%5Cs%2A%29%28%5C%5Cd%2B%29%28%3F%3A%5C%5Cs%2A%29%5B%3A%5D%28%28%3F%3A%5C%5Cs%2A%29%28%3F%3A%5C%5Cd%2B%29%28%3F%3A%28%3F%3A%5B%2C%3B%3A%5Cu2013-%5D%29%3F%28%3F%3A%5C%5Cs%2A%29%28%3F%3A%5C%5Cd%2B%29%3F%29%2A%29%27%2C%20re.UNICODE%29%5Cn%5Cnresult%20%3D%20regex.sub%28processMatch%2C%20action_in%29%5Cn%5Cnworkflow.set_output%28result%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22urlToEquipd%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22Input%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22initialInput%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%200%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22scriptureBefore%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22urlToEquipd%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22initialInput%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22madeChange%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22True%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionRepeatWithLinesEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22madeChange%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22True%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22numberOfSteps%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22direction%22%3A%202%2C%20%22unit%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionExtendSelection%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22initialInput%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20editor%5Cn%5Cneditor.set_scroll_position%28float%28workflow.get_variable%28%27ScrollPosition%27%29%29%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%5D%2C%20%22name%22%3A%20%22Detectar%20Textos%20B%5Cu00edblicos%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad5%2C3%22%2C%20%22systemVersion%22%3A%20%2212.1.4%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-content-book-6.png%22%7D", "description": "Detectar Textos B\u00edblicos", "title": "Detectar Textos B\u00edblicos"}, {"url": "http://editorial-app.appspot.com/workflow/5878556357820416/hiMDMWRFL90", "workflow_data": {"username": "", "description": "Fixed an issue with \"ZIP does not support timestamps before 1980\"\nEnjoy!\n\nSaves or restores a backup of all Editorial workflows, snippets, bookmarks, and local documents as a zip file in Dropbox (this requires the Dropbox account to be linked).\r\n\r\nPlease note: If you want to restore a backup on a different device, you first have to download the backup file (just tap on it in the document list). This is required because Editorial doesn't sync zip files by default.\r\n\r\nRestoring a backup will *overwrite* all existing workflows, snippets, and bookmarks, so it's possible that you'll lose data this way. The best way to avoid any data loss is to create a backup before restoring anything.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"button1Value": {"text": "backup", "tokenRanges": {}, "type": "advancedText"}, "button3Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button2Value": {"text": "restore", "tokenRanges": {}, "type": "advancedText"}, "title": "Create or Restore?", "button3Title": "", "button2Title": "Restore...", "button1Title": "Create Backup", "message": {"text": "The backup of your workflows, snippets, bookmarks, and local documents will be created as a zip file in your Dropbox (EditorialBackup_?_?_?-?_?.zip). Editorial needs to be linked to Dropbox for this to work.", "tokenRanges": {"{142, 1}": "%date:mm", "{134, 1}": "%date:yyyy", "{136, 1}": "%date:MM", "{140, 1}": "%date:HH", "{138, 1}": "%date:dd"}, "type": "advancedText"}, "showCancelButton": true}, "class": "WorkflowActionShowAlert"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "Action", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "If \"Backup\" was selected...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Action"}, "type": "advancedText"}, "expression2": {"text": "backup", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Create the Backup (Python)", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport editor\nimport os\nfrom zipfile import ZipFile\nimport datetime\nfrom io import BytesIO\nimport json\nimport shutil\n\nt = datetime.datetime.today()\nbackup_filename = 'EditorialBackup_' + t.strftime('%Y_%m_%d-%H_%M') + '.zip'\nwf_path = editor.get_workflows_path()\nwf_files = os.listdir(wf_path)\nsnpt_path = os.path.expanduser('~/Library/Application Support/Snippets')\nsnpt_files = os.listdir(snpt_path)\ndoc_path = os.path.expanduser('~/Documents')\ndoc_files = os.listdir(doc_path)\n\nzip_buffer = BytesIO()\nwith ZipFile(zip_buffer, 'w') as z:\n\t# Backup workflows:\n\tos.chdir(wf_path)\n\tfor filename in wf_files:\n\t\tname, extension = os.path.splitext(filename)\n\t\tif extension in ('.wkflw', '.edcmd'):\n\t\t\tz.write(filename)\n\t# Backup snippets:\n\tos.chdir(snpt_path)\n\tfor filename in snpt_files:\n\t\tname, extension = os.path.splitext(filename)\n\t\tif extension in ('.snpt', '.edcmd'):\n\t\t\tz.write(filename)\n\t# Backup bookmarks\n\tz.writestr('EditorBookmarks.json', json.dumps(editor.get_bookmarks('editor')))\n\tz.writestr('BrowserBookmarks.json', json.dumps(editor.get_bookmarks('browser')))\n\t# Backup local documents:\n\tos.chdir(doc_path)\n\tdocZip = ZipFile('Documents.zip','a')\n\tfor filename in doc_files:\n\t\ttry:\n\t\t\tdocZip.write(filename)\n\t\texcept:\n\t\t\tpass\n\tdocZip.close()\n\tz.write('Documents.zip')\n\tos.remove('Documents.zip')\n\nzip_data = zip_buffer.getvalue()\neditor.set_file_contents(backup_filename, zip_data, 'dropbox')\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"duration": 1, "HUDText": {"text": "Backup Created", "tokenRanges": {}, "type": "advancedText"}, "icon": 0}, "class": "WorkflowActionShowHUD"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "If \"Restore\" was selected....", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Action"}, "type": "advancedText"}, "expression2": {"text": "restore", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "List Backups (Python)", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport editor\nimport os\nimport re\n\nwf_path = editor.get_workflows_path()\ndb_path = os.path.join(os.path.split(wf_path)[0], 'Dropbox')\n\nbackups = []\nfiles = os.listdir(db_path)\nfor filename in files:\n\tif re.match('EditorialBackup_.*\\\\.zip$', filename):\n\t\tbackups.append(filename)\nworkflow.set_output('\\n'.join(backups))\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Stop if no backups are found...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"button1Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button3Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button2Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "title": "No Backups Found", "button3Title": "", "button2Title": "", "button1Title": "", "message": {"text": "No backup files were found. You might need to download them first, if you see grayed-out backup files in your Dropbox folder.", "tokenRanges": {}, "type": "advancedText"}, "showCancelButton": false}, "class": "WorkflowActionShowAlert"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"showHUD": false, "HUDTitle": "", "stopOption": 0}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"list": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "Select a Backup", "showInPopover": false, "allowMultipleSelection": false}, "class": "WorkflowActionSelectFromList"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Show Warning Alert", "parameters": {"button1Value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "button3Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button2Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "title": "Warning", "button3Title": "", "button2Title": "", "button1Title": "Continue", "message": {"text": "This will replace all your workflows, snippets, bookmarks, and local documents with the ones that are stored in the selected backup (?).\n\nDocuments that are synced with Dropbox will not be changed.", "tokenRanges": {"{133, 1}": "Input"}, "type": "advancedText"}, "showCancelButton": true}, "class": "WorkflowActionShowAlert"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Restore the Backup (Python)", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport editor\nfrom os import path\nimport os\nfrom zipfile import ZipFile\nimport shutil\nimport json\n\nbackup_filename = workflow.get_input()\ndb_path = path.join(path.split(editor.get_workflows_path())[0], 'Dropbox')\nbackup_path = path.join(db_path, backup_filename)\n\nwith ZipFile(backup_path, 'r') as z:\n\tz.extractall(editor.get_workflows_path())\nwf_path = editor.get_workflows_path()\nsnpt_path = os.path.expanduser('~/Library/Application Support/Snippets')\nfiles = os.listdir(wf_path)\nfor filename in files:\n\tif filename == 'Snippets.edcmd' or path.splitext(filename)[1] == '.snpt':\n\t\tshutil.move(os.path.join(wf_path, filename), os.path.join(snpt_path, filename))\n\tif filename == 'EditorBookmarks.json':\n\t\twith open(os.path.join(wf_path, filename), 'r') as f:\n\t\t\tbookmarks = json.load(f)\n\t\t\teditor.set_bookmarks(bookmarks, 'editor')\n\t\tos.remove(os.path.join(wf_path, filename))\n\tif filename == 'BrowserBookmarks.json':\n\t\twith open(os.path.join(wf_path, filename), 'r') as f:\n\t\t\tbookmarks = json.load(f)\n\t\t\teditor.set_bookmarks(bookmarks, 'browser')\n\t\tos.remove(os.path.join(wf_path, filename))\n\tif filename == 'Documents.zip':\n\t\tdoc_path = os.path.expanduser('~/Documents')\n\t\twith ZipFile(filename, 'r') as docszip:\n\t\t\tnames = docszip.namelist()\n\t\t\tfor name in names:\n\t\t\t\ttry:\n\t\t\t\t\tdocszip.extract(name, doc_path)\n\t\t\t\texcept:\n\t\t\t\t\tpass\n\t\tos.remove(os.path.join(wf_path, filename))\n\neditor.reload_workflows()\neditor.reload_files()\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"duration": 1, "HUDText": {"text": "Backup Restored", "tokenRanges": {}, "type": "advancedText"}, "icon": 0}, "class": "WorkflowActionShowHUD"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}], "name": "Editorial Backup", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone9,3", "systemVersion": "12.1.4"}, "type": "wkflw", "public": true, "icon": "minicons-icons-file-zip.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Fixed%20an%20issue%20with%20%5C%22ZIP%20does%20not%20support%20timestamps%20before%201980%5C%22%5CnEnjoy%21%5Cn%5CnSaves%20or%20restores%20a%20backup%20of%20all%20Editorial%20workflows%2C%20snippets%2C%20bookmarks%2C%20and%20local%20documents%20as%20a%20zip%20file%20in%20Dropbox%20%28this%20requires%20the%20Dropbox%20account%20to%20be%20linked%29.%5Cr%5Cn%5Cr%5CnPlease%20note%3A%20If%20you%20want%20to%20restore%20a%20backup%20on%20a%20different%20device%2C%20you%20first%20have%20to%20download%20the%20backup%20file%20%28just%20tap%20on%20it%20in%20the%20document%20list%29.%20This%20is%20required%20because%20Editorial%20doesn%27t%20sync%20zip%20files%20by%20default.%5Cr%5Cn%5Cr%5CnRestoring%20a%20backup%20will%20%2Aoverwrite%2A%20all%20existing%20workflows%2C%20snippets%2C%20and%20bookmarks%2C%20so%20it%27s%20possible%20that%20you%27ll%20lose%20data%20this%20way.%20The%20best%20way%20to%20avoid%20any%20data%20loss%20is%20to%20create%20a%20backup%20before%20restoring%20anything.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22button1Value%22%3A%20%7B%22text%22%3A%20%22backup%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button3Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button2Value%22%3A%20%7B%22text%22%3A%20%22restore%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Create%20or%20Restore%3F%22%2C%20%22button3Title%22%3A%20%22%22%2C%20%22button2Title%22%3A%20%22Restore...%22%2C%20%22button1Title%22%3A%20%22Create%20Backup%22%2C%20%22message%22%3A%20%7B%22text%22%3A%20%22The%20backup%20of%20your%20workflows%2C%20snippets%2C%20bookmarks%2C%20and%20local%20documents%20will%20be%20created%20as%20a%20zip%20file%20in%20your%20Dropbox%20%28EditorialBackup_%3F_%3F_%3F-%3F_%3F.zip%29.%20Editorial%20needs%20to%20be%20linked%20to%20Dropbox%20for%20this%20to%20work.%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B142%2C%201%7D%22%3A%20%22%25date%3Amm%22%2C%20%22%7B134%2C%201%7D%22%3A%20%22%25date%3Ayyyy%22%2C%20%22%7B136%2C%201%7D%22%3A%20%22%25date%3AMM%22%2C%20%22%7B140%2C%201%7D%22%3A%20%22%25date%3AHH%22%2C%20%22%7B138%2C%201%7D%22%3A%20%22%25date%3Add%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22showCancelButton%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionShowAlert%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22Action%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22If%20%5C%22Backup%5C%22%20was%20selected...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Action%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22backup%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Create%20the%20Backup%20%28Python%29%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20editor%5Cnimport%20os%5Cnfrom%20zipfile%20import%20ZipFile%5Cnimport%20datetime%5Cnfrom%20io%20import%20BytesIO%5Cnimport%20json%5Cnimport%20shutil%5Cn%5Cnt%20%3D%20datetime.datetime.today%28%29%5Cnbackup_filename%20%3D%20%27EditorialBackup_%27%20%2B%20t.strftime%28%27%25Y_%25m_%25d-%25H_%25M%27%29%20%2B%20%27.zip%27%5Cnwf_path%20%3D%20editor.get_workflows_path%28%29%5Cnwf_files%20%3D%20os.listdir%28wf_path%29%5Cnsnpt_path%20%3D%20os.path.expanduser%28%27%7E%2FLibrary%2FApplication%20Support%2FSnippets%27%29%5Cnsnpt_files%20%3D%20os.listdir%28snpt_path%29%5Cndoc_path%20%3D%20os.path.expanduser%28%27%7E%2FDocuments%27%29%5Cndoc_files%20%3D%20os.listdir%28doc_path%29%5Cn%5Cnzip_buffer%20%3D%20BytesIO%28%29%5Cnwith%20ZipFile%28zip_buffer%2C%20%27w%27%29%20as%20z%3A%5Cn%5Ct%23%20Backup%20workflows%3A%5Cn%5Ctos.chdir%28wf_path%29%5Cn%5Ctfor%20filename%20in%20wf_files%3A%5Cn%5Ct%5Ctname%2C%20extension%20%3D%20os.path.splitext%28filename%29%5Cn%5Ct%5Ctif%20extension%20in%20%28%27.wkflw%27%2C%20%27.edcmd%27%29%3A%5Cn%5Ct%5Ct%5Ctz.write%28filename%29%5Cn%5Ct%23%20Backup%20snippets%3A%5Cn%5Ctos.chdir%28snpt_path%29%5Cn%5Ctfor%20filename%20in%20snpt_files%3A%5Cn%5Ct%5Ctname%2C%20extension%20%3D%20os.path.splitext%28filename%29%5Cn%5Ct%5Ctif%20extension%20in%20%28%27.snpt%27%2C%20%27.edcmd%27%29%3A%5Cn%5Ct%5Ct%5Ctz.write%28filename%29%5Cn%5Ct%23%20Backup%20bookmarks%5Cn%5Ctz.writestr%28%27EditorBookmarks.json%27%2C%20json.dumps%28editor.get_bookmarks%28%27editor%27%29%29%29%5Cn%5Ctz.writestr%28%27BrowserBookmarks.json%27%2C%20json.dumps%28editor.get_bookmarks%28%27browser%27%29%29%29%5Cn%5Ct%23%20Backup%20local%20documents%3A%5Cn%5Ctos.chdir%28doc_path%29%5Cn%5CtdocZip%20%3D%20ZipFile%28%27Documents.zip%27%2C%27a%27%29%5Cn%5Ctfor%20filename%20in%20doc_files%3A%5Cn%5Ct%5Cttry%3A%5Cn%5Ct%5Ct%5CtdocZip.write%28filename%29%5Cn%5Ct%5Ctexcept%3A%5Cn%5Ct%5Ct%5Ctpass%5Cn%5CtdocZip.close%28%29%5Cn%5Ctz.write%28%27Documents.zip%27%29%5Cn%5Ctos.remove%28%27Documents.zip%27%29%5Cn%5Cnzip_data%20%3D%20zip_buffer.getvalue%28%29%5Cneditor.set_file_contents%28backup_filename%2C%20zip_data%2C%20%27dropbox%27%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22duration%22%3A%201%2C%20%22HUDText%22%3A%20%7B%22text%22%3A%20%22Backup%20Created%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22icon%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionShowHUD%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22If%20%5C%22Restore%5C%22%20was%20selected....%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Action%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22restore%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22List%20Backups%20%28Python%29%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20editor%5Cnimport%20os%5Cnimport%20re%5Cn%5Cnwf_path%20%3D%20editor.get_workflows_path%28%29%5Cndb_path%20%3D%20os.path.join%28os.path.split%28wf_path%29%5B0%5D%2C%20%27Dropbox%27%29%5Cn%5Cnbackups%20%3D%20%5B%5D%5Cnfiles%20%3D%20os.listdir%28db_path%29%5Cnfor%20filename%20in%20files%3A%5Cn%5Ctif%20re.match%28%27EditorialBackup_.%2A%5C%5C%5C%5C.zip%24%27%2C%20filename%29%3A%5Cn%5Ct%5Ctbackups.append%28filename%29%5Cnworkflow.set_output%28%27%5C%5Cn%27.join%28backups%29%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Stop%20if%20no%20backups%20are%20found...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22button1Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button3Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button2Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22No%20Backups%20Found%22%2C%20%22button3Title%22%3A%20%22%22%2C%20%22button2Title%22%3A%20%22%22%2C%20%22button1Title%22%3A%20%22%22%2C%20%22message%22%3A%20%7B%22text%22%3A%20%22No%20backup%20files%20were%20found.%20You%20might%20need%20to%20download%20them%20first%2C%20if%20you%20see%20grayed-out%20backup%20files%20in%20your%20Dropbox%20folder.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22showCancelButton%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionShowAlert%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20false%2C%20%22HUDTitle%22%3A%20%22%22%2C%20%22stopOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22list%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Select%20a%20Backup%22%2C%20%22showInPopover%22%3A%20false%2C%20%22allowMultipleSelection%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionSelectFromList%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Show%20Warning%20Alert%22%2C%20%22parameters%22%3A%20%7B%22button1Value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button3Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button2Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Warning%22%2C%20%22button3Title%22%3A%20%22%22%2C%20%22button2Title%22%3A%20%22%22%2C%20%22button1Title%22%3A%20%22Continue%22%2C%20%22message%22%3A%20%7B%22text%22%3A%20%22This%20will%20replace%20all%20your%20workflows%2C%20snippets%2C%20bookmarks%2C%20and%20local%20documents%20with%20the%20ones%20that%20are%20stored%20in%20the%20selected%20backup%20%28%3F%29.%5Cn%5CnDocuments%20that%20are%20synced%20with%20Dropbox%20will%20not%20be%20changed.%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B133%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22showCancelButton%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionShowAlert%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Restore%20the%20Backup%20%28Python%29%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20editor%5Cnfrom%20os%20import%20path%5Cnimport%20os%5Cnfrom%20zipfile%20import%20ZipFile%5Cnimport%20shutil%5Cnimport%20json%5Cn%5Cnbackup_filename%20%3D%20workflow.get_input%28%29%5Cndb_path%20%3D%20path.join%28path.split%28editor.get_workflows_path%28%29%29%5B0%5D%2C%20%27Dropbox%27%29%5Cnbackup_path%20%3D%20path.join%28db_path%2C%20backup_filename%29%5Cn%5Cnwith%20ZipFile%28backup_path%2C%20%27r%27%29%20as%20z%3A%5Cn%5Ctz.extractall%28editor.get_workflows_path%28%29%29%5Cnwf_path%20%3D%20editor.get_workflows_path%28%29%5Cnsnpt_path%20%3D%20os.path.expanduser%28%27%7E%2FLibrary%2FApplication%20Support%2FSnippets%27%29%5Cnfiles%20%3D%20os.listdir%28wf_path%29%5Cnfor%20filename%20in%20files%3A%5Cn%5Ctif%20filename%20%3D%3D%20%27Snippets.edcmd%27%20or%20path.splitext%28filename%29%5B1%5D%20%3D%3D%20%27.snpt%27%3A%5Cn%5Ct%5Ctshutil.move%28os.path.join%28wf_path%2C%20filename%29%2C%20os.path.join%28snpt_path%2C%20filename%29%29%5Cn%5Ctif%20filename%20%3D%3D%20%27EditorBookmarks.json%27%3A%5Cn%5Ct%5Ctwith%20open%28os.path.join%28wf_path%2C%20filename%29%2C%20%27r%27%29%20as%20f%3A%5Cn%5Ct%5Ct%5Ctbookmarks%20%3D%20json.load%28f%29%5Cn%5Ct%5Ct%5Cteditor.set_bookmarks%28bookmarks%2C%20%27editor%27%29%5Cn%5Ct%5Ctos.remove%28os.path.join%28wf_path%2C%20filename%29%29%5Cn%5Ctif%20filename%20%3D%3D%20%27BrowserBookmarks.json%27%3A%5Cn%5Ct%5Ctwith%20open%28os.path.join%28wf_path%2C%20filename%29%2C%20%27r%27%29%20as%20f%3A%5Cn%5Ct%5Ct%5Ctbookmarks%20%3D%20json.load%28f%29%5Cn%5Ct%5Ct%5Cteditor.set_bookmarks%28bookmarks%2C%20%27browser%27%29%5Cn%5Ct%5Ctos.remove%28os.path.join%28wf_path%2C%20filename%29%29%5Cn%5Ctif%20filename%20%3D%3D%20%27Documents.zip%27%3A%5Cn%5Ct%5Ctdoc_path%20%3D%20os.path.expanduser%28%27%7E%2FDocuments%27%29%5Cn%5Ct%5Ctwith%20ZipFile%28filename%2C%20%27r%27%29%20as%20docszip%3A%5Cn%5Ct%5Ct%5Ctnames%20%3D%20docszip.namelist%28%29%5Cn%5Ct%5Ct%5Ctfor%20name%20in%20names%3A%5Cn%5Ct%5Ct%5Ct%5Cttry%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctdocszip.extract%28name%2C%20doc_path%29%5Cn%5Ct%5Ct%5Ct%5Ctexcept%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctpass%5Cn%5Ct%5Ctos.remove%28os.path.join%28wf_path%2C%20filename%29%29%5Cn%5Cneditor.reload_workflows%28%29%5Cneditor.reload_files%28%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22duration%22%3A%201%2C%20%22HUDText%22%3A%20%7B%22text%22%3A%20%22Backup%20Restored%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22icon%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionShowHUD%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%5D%2C%20%22name%22%3A%20%22Editorial%20Backup%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone9%2C3%22%2C%20%22systemVersion%22%3A%20%2212.1.4%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-file-zip.png%22%7D", "description": "Fixed an issue with \"ZIP does not support timestamps before 1980\"\nEnjoy!\n\nSaves or restores a backup of all Editorial workflows, snippets, bookmarks, and local documents as a zip file in Dropbox (this requires the Dropbox account to be linked).\r\n\r\nPlease note: If you want to restore a backup on a different device, you first have to download the backup file (just tap on it in the document list). This is required because Editorial doesn't sync zip files by default.\r\n\r\nRestoring a backup will *overwrite* all existing workflows, snippets, and bookmarks, so it's possible that you'll lose data this way. The best way to avoid any data loss is to create a backup before restoring anything.", "title": "Editorial Backup"}, {"url": "http://editorial-app.appspot.com/workflow/5880192874577920/HkWFJSikxe0", "workflow_data": {"username": "Roll Dice (Open Legend)", "description": "Follows Sidekick dice specification format, but only supports items needed for Open Legend -- no modifiers, exploding dice, keeping high or low rolls pre-explosion.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 2, "foldedTextOption": 0, "selectEntireLines": true}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport re\nimport random\n\nrollstring = workflow.get_input()\n\ndef zero_width_split(pattern, string):\n    \"\"\"\n    Split a string on a regex that only matches zero-width strings\n    :param pattern: Regex pattern that matches zero-width strings\n    :param string: String to split on.\n    :return: Split array\n    \"\"\"\n    splits = list((m.start(), m.end()) for m in re.finditer(pattern, string, re.VERBOSE))\n    starts = [0] + [i[1] for i in splits]\n    ends = [i[0] for i in splits] + [len(string)]\n    return [string[start:end] for start, end in zip(starts, ends)]\n    \ndef roll_group(group):\n    \"\"\"\n    Rolls a group of dice in 2d6, 3d10, d12, etc. format\n    :param group: String of dice group\n    :return: Array of results\n    \"\"\"\n    group = re.match(r'^(\\d*)d(\\d+)$', group, re.IGNORECASE).groups()\n    num_of_dice = int(group[0]) if group[1] != '' else 1\n    type_of_dice = int(group[1])\n    assert num_of_dice > 0\n\n    result = []\n    for i in range(num_of_dice):\n        result.append(random.randint(1, type_of_dice))\n    return result\n\nrollparse = re.sub(r'(?<=d)%', '100', rollstring, re.IGNORECASE)\nrollparse = rollparse.replace('^', '**')\nrollgroups = zero_width_split(r'((?<=[\\(\\),%^\\/+*-])(?=.))|((?<=.)(?=[\\(\\),%^\\/+*-]))', rollparse)  # Split the string on the boundary between operators and other chars\n\nrollResults = []\nrollTotal = 0\n\nfor group in rollgroups:\n    if (re.match(r'\\d+d\\d+', group)): # Only roll numeric\n        exploding = re.match(r'\\d*d\\d+!', group, re.IGNORECASE)\n        keeping = re.match(r'^((?:\\d*)d\\d+!?)([Hh])(\\d*)$', group, re.IGNORECASE)\n        dropping = re.match(r'^((?:\\d*)d\\d+!?)([Ll])(\\d*)$', group, re.IGNORECASE)\n        coreRoll = re.match(r'^(\\d*d\\d+)', group).group(0)\n        \n        rolls = roll_group(coreRoll)\n        if keeping:\n            keepCount = int(re.split(r'[Hh]', group)[1])\n            keepIndexPoint = len(rolls) - keepCount\n            sortedRolls = sorted(rolls)\n            rolls = sortedRolls[keepIndexPoint:]\n\n        if dropping:\n            dropCount = int(re.split(r'[Ll]', group)[1])\n            dropIndexPoint = len(rolls) - dropCount\n            sortedRolls = sorted(rolls)\n            rolls = sortedRolls[:dropCount]                        \n        if exploding:\n            groupMax = re.match(r'\\d+d(\\d+)', group, re.IGNORECASE).group(1)\n            addedRolls = []\n            for roll in rolls:\n            \t    if (int(roll) == int(groupMax)):\n            \t        while 1 == 1:\n            \t            newRollString = \"1d\" + str(groupMax)\n            \t            newRoll = roll_group(newRollString)\n            \t            addedRolls.append(newRoll[0])\n            \t            if (int(newRoll[0]) < int(groupMax)):\n            \t            \t   break\n                        else:\n                            continue\n            rolls = rolls + addedRolls\n        \n        rollResults.append(rolls)\n        rollTotal = rollTotal + sum(rolls)\n            \t    \naction_out = \" -- \" + str(rollTotal) + \" -- \" + str(rollResults)\nworkflow.set_output(action_out)\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"numberOfSteps": {"text": "1", "tokenRanges": {}, "type": "advancedText"}, "direction": 1, "unit": 1}, "class": "WorkflowActionMoveCaret"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}], "name": "Roll (OL)", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad8,3", "systemVersion": "12.2"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22Roll%20Dice%20%28Open%20Legend%29%22%2C%20%22description%22%3A%20%22Follows%20Sidekick%20dice%20specification%20format%2C%20but%20only%20supports%20items%20needed%20for%20Open%20Legend%20--%20no%20modifiers%2C%20exploding%20dice%2C%20keeping%20high%20or%20low%20rolls%20pre-explosion.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%202%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20re%5Cnimport%20random%5Cn%5Cnrollstring%20%3D%20workflow.get_input%28%29%5Cn%5Cndef%20zero_width_split%28pattern%2C%20string%29%3A%5Cn%20%20%20%20%5C%22%5C%22%5C%22%5Cn%20%20%20%20Split%20a%20string%20on%20a%20regex%20that%20only%20matches%20zero-width%20strings%5Cn%20%20%20%20%3Aparam%20pattern%3A%20Regex%20pattern%20that%20matches%20zero-width%20strings%5Cn%20%20%20%20%3Aparam%20string%3A%20String%20to%20split%20on.%5Cn%20%20%20%20%3Areturn%3A%20Split%20array%5Cn%20%20%20%20%5C%22%5C%22%5C%22%5Cn%20%20%20%20splits%20%3D%20list%28%28m.start%28%29%2C%20m.end%28%29%29%20for%20m%20in%20re.finditer%28pattern%2C%20string%2C%20re.VERBOSE%29%29%5Cn%20%20%20%20starts%20%3D%20%5B0%5D%20%2B%20%5Bi%5B1%5D%20for%20i%20in%20splits%5D%5Cn%20%20%20%20ends%20%3D%20%5Bi%5B0%5D%20for%20i%20in%20splits%5D%20%2B%20%5Blen%28string%29%5D%5Cn%20%20%20%20return%20%5Bstring%5Bstart%3Aend%5D%20for%20start%2C%20end%20in%20zip%28starts%2C%20ends%29%5D%5Cn%20%20%20%20%5Cndef%20roll_group%28group%29%3A%5Cn%20%20%20%20%5C%22%5C%22%5C%22%5Cn%20%20%20%20Rolls%20a%20group%20of%20dice%20in%202d6%2C%203d10%2C%20d12%2C%20etc.%20format%5Cn%20%20%20%20%3Aparam%20group%3A%20String%20of%20dice%20group%5Cn%20%20%20%20%3Areturn%3A%20Array%20of%20results%5Cn%20%20%20%20%5C%22%5C%22%5C%22%5Cn%20%20%20%20group%20%3D%20re.match%28r%27%5E%28%5C%5Cd%2A%29d%28%5C%5Cd%2B%29%24%27%2C%20group%2C%20re.IGNORECASE%29.groups%28%29%5Cn%20%20%20%20num_of_dice%20%3D%20int%28group%5B0%5D%29%20if%20group%5B1%5D%20%21%3D%20%27%27%20else%201%5Cn%20%20%20%20type_of_dice%20%3D%20int%28group%5B1%5D%29%5Cn%20%20%20%20assert%20num_of_dice%20%3E%200%5Cn%5Cn%20%20%20%20result%20%3D%20%5B%5D%5Cn%20%20%20%20for%20i%20in%20range%28num_of_dice%29%3A%5Cn%20%20%20%20%20%20%20%20result.append%28random.randint%281%2C%20type_of_dice%29%29%5Cn%20%20%20%20return%20result%5Cn%5Cnrollparse%20%3D%20re.sub%28r%27%28%3F%3C%3Dd%29%25%27%2C%20%27100%27%2C%20rollstring%2C%20re.IGNORECASE%29%5Cnrollparse%20%3D%20rollparse.replace%28%27%5E%27%2C%20%27%2A%2A%27%29%5Cnrollgroups%20%3D%20zero_width_split%28r%27%28%28%3F%3C%3D%5B%5C%5C%28%5C%5C%29%2C%25%5E%5C%5C%2F%2B%2A-%5D%29%28%3F%3D.%29%29%7C%28%28%3F%3C%3D.%29%28%3F%3D%5B%5C%5C%28%5C%5C%29%2C%25%5E%5C%5C%2F%2B%2A-%5D%29%29%27%2C%20rollparse%29%20%20%23%20Split%20the%20string%20on%20the%20boundary%20between%20operators%20and%20other%20chars%5Cn%5CnrollResults%20%3D%20%5B%5D%5CnrollTotal%20%3D%200%5Cn%5Cnfor%20group%20in%20rollgroups%3A%5Cn%20%20%20%20if%20%28re.match%28r%27%5C%5Cd%2Bd%5C%5Cd%2B%27%2C%20group%29%29%3A%20%23%20Only%20roll%20numeric%5Cn%20%20%20%20%20%20%20%20exploding%20%3D%20re.match%28r%27%5C%5Cd%2Ad%5C%5Cd%2B%21%27%2C%20group%2C%20re.IGNORECASE%29%5Cn%20%20%20%20%20%20%20%20keeping%20%3D%20re.match%28r%27%5E%28%28%3F%3A%5C%5Cd%2A%29d%5C%5Cd%2B%21%3F%29%28%5BHh%5D%29%28%5C%5Cd%2A%29%24%27%2C%20group%2C%20re.IGNORECASE%29%5Cn%20%20%20%20%20%20%20%20dropping%20%3D%20re.match%28r%27%5E%28%28%3F%3A%5C%5Cd%2A%29d%5C%5Cd%2B%21%3F%29%28%5BLl%5D%29%28%5C%5Cd%2A%29%24%27%2C%20group%2C%20re.IGNORECASE%29%5Cn%20%20%20%20%20%20%20%20coreRoll%20%3D%20re.match%28r%27%5E%28%5C%5Cd%2Ad%5C%5Cd%2B%29%27%2C%20group%29.group%280%29%5Cn%20%20%20%20%20%20%20%20%5Cn%20%20%20%20%20%20%20%20rolls%20%3D%20roll_group%28coreRoll%29%5Cn%20%20%20%20%20%20%20%20if%20keeping%3A%5Cn%20%20%20%20%20%20%20%20%20%20%20%20keepCount%20%3D%20int%28re.split%28r%27%5BHh%5D%27%2C%20group%29%5B1%5D%29%5Cn%20%20%20%20%20%20%20%20%20%20%20%20keepIndexPoint%20%3D%20len%28rolls%29%20-%20keepCount%5Cn%20%20%20%20%20%20%20%20%20%20%20%20sortedRolls%20%3D%20sorted%28rolls%29%5Cn%20%20%20%20%20%20%20%20%20%20%20%20rolls%20%3D%20sortedRolls%5BkeepIndexPoint%3A%5D%5Cn%5Cn%20%20%20%20%20%20%20%20if%20dropping%3A%5Cn%20%20%20%20%20%20%20%20%20%20%20%20dropCount%20%3D%20int%28re.split%28r%27%5BLl%5D%27%2C%20group%29%5B1%5D%29%5Cn%20%20%20%20%20%20%20%20%20%20%20%20dropIndexPoint%20%3D%20len%28rolls%29%20-%20dropCount%5Cn%20%20%20%20%20%20%20%20%20%20%20%20sortedRolls%20%3D%20sorted%28rolls%29%5Cn%20%20%20%20%20%20%20%20%20%20%20%20rolls%20%3D%20sortedRolls%5B%3AdropCount%5D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cn%20%20%20%20%20%20%20%20if%20exploding%3A%5Cn%20%20%20%20%20%20%20%20%20%20%20%20groupMax%20%3D%20re.match%28r%27%5C%5Cd%2Bd%28%5C%5Cd%2B%29%27%2C%20group%2C%20re.IGNORECASE%29.group%281%29%5Cn%20%20%20%20%20%20%20%20%20%20%20%20addedRolls%20%3D%20%5B%5D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20for%20roll%20in%20rolls%3A%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5Ct%20%20%20%20if%20%28int%28roll%29%20%3D%3D%20int%28groupMax%29%29%3A%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5Ct%20%20%20%20%20%20%20%20while%201%20%3D%3D%201%3A%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5Ct%20%20%20%20%20%20%20%20%20%20%20%20newRollString%20%3D%20%5C%221d%5C%22%20%2B%20str%28groupMax%29%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5Ct%20%20%20%20%20%20%20%20%20%20%20%20newRoll%20%3D%20roll_group%28newRollString%29%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5Ct%20%20%20%20%20%20%20%20%20%20%20%20addedRolls.append%28newRoll%5B0%5D%29%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5Ct%20%20%20%20%20%20%20%20%20%20%20%20if%20%28int%28newRoll%5B0%5D%29%20%3C%20int%28groupMax%29%29%3A%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5Ct%20%20%20%20%20%20%20%20%20%20%20%20%5Ct%20%20%20break%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%3A%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20continue%5Cn%20%20%20%20%20%20%20%20%20%20%20%20rolls%20%3D%20rolls%20%2B%20addedRolls%5Cn%20%20%20%20%20%20%20%20%5Cn%20%20%20%20%20%20%20%20rollResults.append%28rolls%29%5Cn%20%20%20%20%20%20%20%20rollTotal%20%3D%20rollTotal%20%2B%20sum%28rolls%29%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5Ct%20%20%20%20%5Cnaction_out%20%3D%20%5C%22%20--%20%5C%22%20%2B%20str%28rollTotal%29%20%2B%20%5C%22%20--%20%5C%22%20%2B%20str%28rollResults%29%5Cnworkflow.set_output%28action_out%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22numberOfSteps%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22direction%22%3A%201%2C%20%22unit%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionMoveCaret%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%5D%2C%20%22name%22%3A%20%22Roll%20%28OL%29%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad8%2C3%22%2C%20%22systemVersion%22%3A%20%2212.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "Follows Sidekick dice specification format, but only supports items needed for Open Legend -- no modifiers, exploding dice, keeping high or low rolls pre-explosion.", "title": "Roll (OL)"}, {"url": "http://editorial-app.appspot.com/workflow/5886738673172480/Jhd1bQrHGiI", "workflow_data": {"username": "", "description": "", "actions": [{"customTitle": "", "parameters": {"name": "My Var", "value": {"text": "?\n", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "pauseWithoutShowingParameters": false, "colorLabel": 5, "class": "WorkflowActionStoreVariable", "pauseBeforeRunning": false}, {"pauseWithoutShowingParameters": true, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"outputOption": 0, "regex": {"text": "AU \\$\\d\\d*\\.\\d\\d", "tokenRanges": {}, "type": "advancedText"}, "matchGroup": "0", "searchTypeOption": 0}, "class": "WorkflowActionMatchRegularExpression"}, {"customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "pauseWithoutShowingParameters": false, "colorLabel": 5, "class": "WorkflowActionConsoleOutput", "pauseBeforeRunning": false}], "name": "eBay", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad7,2", "systemVersion": "12.1.4"}, "type": "wkflw", "public": true, "icon": "minicons-icons-artwork-brush-2.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22%22%2C%20%22actions%22%3A%20%5B%7B%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22My%20Var%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%5Cn%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%205%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20true%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22outputOption%22%3A%200%2C%20%22regex%22%3A%20%7B%22text%22%3A%20%22AU%20%5C%5C%24%5C%5Cd%5C%5Cd%2A%5C%5C.%5C%5Cd%5C%5Cd%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22matchGroup%22%3A%20%220%22%2C%20%22searchTypeOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionMatchRegularExpression%22%7D%2C%20%7B%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%205%2C%20%22class%22%3A%20%22WorkflowActionConsoleOutput%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%5D%2C%20%22name%22%3A%20%22eBay%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad7%2C2%22%2C%20%22systemVersion%22%3A%20%2212.1.4%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-artwork-brush-2.png%22%7D", "description": "", "title": "eBay"}, {"url": "http://editorial-app.appspot.com/workflow/5876868301455360/B51M0U4yNM8", "workflow_data": {"username": "eConsulting.Online", "description": "Shows the iOS share sheet with the selected text as input. If nothing is selected, the entire document is shared. In a Markdown document, the text can optionally be converted to HTML first.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:syntax-mode"}, "type": "advancedText"}, "expression2": {"text": "markdown", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"button1Value": {"text": "[[html]]", "tokenRanges": {}, "type": "advancedText"}, "button3Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button2Value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "Share Document Text...", "button3Title": "", "button2Title": "Use Plain Text", "button1Title": "Convert to HTML", "message": {"text": "Do you want to convert this Markdown document to HTML for sharing?", "tokenRanges": {}, "type": "advancedText"}, "showCancelButton": true}, "class": "WorkflowActionShowAlert"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "[[html]]", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"tables": true, "autolinks": true, "smartypants": true, "strikethrough": true, "footnotes": true, "metadata": false, "superscript": true}, "class": "WorkflowActionConvertMarkdown"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\"/></head>\n<body>\n?\n</body>\n</html>", "tokenRanges": {"{67, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionShowShareSheet"}], "name": "Share...", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone8,1", "systemVersion": "12.1.4"}, "type": "wkflw", "public": true, "icon": "minicons-icons-navigation-log-out-2.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22eConsulting.Online%22%2C%20%22description%22%3A%20%22Shows%20the%20iOS%20share%20sheet%20with%20the%20selected%20text%20as%20input.%20If%20nothing%20is%20selected%2C%20the%20entire%20document%20is%20shared.%20In%20a%20Markdown%20document%2C%20the%20text%20can%20optionally%20be%20converted%20to%20HTML%20first.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Asyntax-mode%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22markdown%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22button1Value%22%3A%20%7B%22text%22%3A%20%22%5B%5Bhtml%5D%5D%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button3Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button2Value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Share%20Document%20Text...%22%2C%20%22button3Title%22%3A%20%22%22%2C%20%22button2Title%22%3A%20%22Use%20Plain%20Text%22%2C%20%22button1Title%22%3A%20%22Convert%20to%20HTML%22%2C%20%22message%22%3A%20%7B%22text%22%3A%20%22Do%20you%20want%20to%20convert%20this%20Markdown%20document%20to%20HTML%20for%20sharing%3F%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22showCancelButton%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionShowAlert%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%5B%5Bhtml%5D%5D%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22tables%22%3A%20true%2C%20%22autolinks%22%3A%20true%2C%20%22smartypants%22%3A%20true%2C%20%22strikethrough%22%3A%20true%2C%20%22footnotes%22%3A%20true%2C%20%22metadata%22%3A%20false%2C%20%22superscript%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionConvertMarkdown%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3C%21DOCTYPE%20html%3E%5Cn%3Chtml%3E%5Cn%3Chead%3E%3Cmeta%20charset%3D%5C%22utf-8%5C%22%2F%3E%3C%2Fhead%3E%5Cn%3Cbody%3E%5Cn%3F%5Cn%3C%2Fbody%3E%5Cn%3C%2Fhtml%3E%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B67%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionShowShareSheet%22%7D%5D%2C%20%22name%22%3A%20%22Share...%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone8%2C1%22%2C%20%22systemVersion%22%3A%20%2212.1.4%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-navigation-log-out-2.png%22%7D", "description": "Shows the iOS share sheet with the selected text as input. If nothing is selected, the entire document is shared. In a Markdown document, the text can optionally be converted to HTML first.", "title": "Share..."}, {"url": "http://editorial-app.appspot.com/workflow/5875428078125056/6r8rtY32Cxk", "workflow_data": {"username": "", "description": "This Workflow accepts TaskPaper text with \u00abplaceholder\u00bb tokens and prompts for you to enter final values, then creates a project in OmniFocus 2.14 for iOS using those tokens.\n\nFor example, given this input:\n\n- \u00abproject_name\u00bb @parallel(false) @due(\u00abdue\u00bb)\n        - This task needs to be done at least 1 week before \u00abproject_name\u00bb is due @due(\u00abdue\u00bb -1w)\n        - This task needs to be done at least 2 days before \u00abproject_name\u00bb is due @due(\u00abdue\u00bb -2d)\n\nYou'll be prompted to enter values for \u00abproject_name\u00bb and \u00abdue\u00bb. If you enter \"Phonewave 1.2\" and \"next Thursday\", it will create a new \"Phonewave 1.2\" project in OmniFocus that is due next Thursday, and has two tasks already filled with due dates of this Thursday and next Tuesday.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport dialogs\nimport re\n\naction_in = workflow.get_input()\n\n# Find placeholders\nknown_placeholders = set()\nplaceholders = []\nfields = []\nfor placeholder_match in re.finditer(u\"\u00ab(.+?)\u00bb\", action_in):\n\tplaceholder = placeholder_match.group(1)\n\tif placeholder not in known_placeholders:\n\t\tknown_placeholders.add(placeholder)\n\t\tplaceholders.append(placeholder)\n\t\tfields.append({'type': 'text', 'title': placeholder, 'key': placeholder})\n\naction_out = action_in\n\n# Substitute the placeholders\nif len(placeholders) == 0:\n\tif dialogs.alert(u\"No template placeholders were found.\", u\"\"\"\nIf your project text has placeholders (that look like \u00abthis\u00bb), this script will prompt for values you'd like to substitute for them.\n\"\"\", u\"Continue\") != 1:\n\t  workflow.stop()\n\nelse:\n\tvalues = dialogs.form_dialog(title='', fields=fields, sections=None)\n\tif values:\n\t\tfor key in values:\n\t\t\taction_out = re.sub(u\"\u00ab\" + key + \"\u00bb\", values[key], action_out)\n\nworkflow.set_output(action_out)\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionURLEscape"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "encodedContent", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"URL": {"text": "omnifocus://x-callback-url/paste?target=projects&content=?", "tokenRanges": {"{57, 1}": "encodedContent"}, "type": "advancedText"}, "waitUntilLoaded": false, "revealBrowserAutomatically": true, "openIn": 0, "tabOption": 0}, "class": "WorkflowActionOpenURL"}], "name": "OF Templates", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone10,5", "systemVersion": "12.1.4"}, "type": "wkflw", "public": true, "icon": "minicons-icons-validation-tick-circle-3.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22This%20Workflow%20accepts%20TaskPaper%20text%20with%20%5Cu00abplaceholder%5Cu00bb%20tokens%20and%20prompts%20for%20you%20to%20enter%20final%20values%2C%20then%20creates%20a%20project%20in%20OmniFocus%202.14%20for%20iOS%20using%20those%20tokens.%5Cn%5CnFor%20example%2C%20given%20this%20input%3A%5Cn%5Cn-%20%5Cu00abproject_name%5Cu00bb%20%40parallel%28false%29%20%40due%28%5Cu00abdue%5Cu00bb%29%5Cn%20%20%20%20%20%20%20%20-%20This%20task%20needs%20to%20be%20done%20at%20least%201%20week%20before%20%5Cu00abproject_name%5Cu00bb%20is%20due%20%40due%28%5Cu00abdue%5Cu00bb%20-1w%29%5Cn%20%20%20%20%20%20%20%20-%20This%20task%20needs%20to%20be%20done%20at%20least%202%20days%20before%20%5Cu00abproject_name%5Cu00bb%20is%20due%20%40due%28%5Cu00abdue%5Cu00bb%20-2d%29%5Cn%5CnYou%27ll%20be%20prompted%20to%20enter%20values%20for%20%5Cu00abproject_name%5Cu00bb%20and%20%5Cu00abdue%5Cu00bb.%20If%20you%20enter%20%5C%22Phonewave%201.2%5C%22%20and%20%5C%22next%20Thursday%5C%22%2C%20it%20will%20create%20a%20new%20%5C%22Phonewave%201.2%5C%22%20project%20in%20OmniFocus%20that%20is%20due%20next%20Thursday%2C%20and%20has%20two%20tasks%20already%20filled%20with%20due%20dates%20of%20this%20Thursday%20and%20next%20Tuesday.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20dialogs%5Cnimport%20re%5Cn%5Cnaction_in%20%3D%20workflow.get_input%28%29%5Cn%5Cn%23%20Find%20placeholders%5Cnknown_placeholders%20%3D%20set%28%29%5Cnplaceholders%20%3D%20%5B%5D%5Cnfields%20%3D%20%5B%5D%5Cnfor%20placeholder_match%20in%20re.finditer%28u%5C%22%5Cu00ab%28.%2B%3F%29%5Cu00bb%5C%22%2C%20action_in%29%3A%5Cn%5Ctplaceholder%20%3D%20placeholder_match.group%281%29%5Cn%5Ctif%20placeholder%20not%20in%20known_placeholders%3A%5Cn%5Ct%5Ctknown_placeholders.add%28placeholder%29%5Cn%5Ct%5Ctplaceholders.append%28placeholder%29%5Cn%5Ct%5Ctfields.append%28%7B%27type%27%3A%20%27text%27%2C%20%27title%27%3A%20placeholder%2C%20%27key%27%3A%20placeholder%7D%29%5Cn%5Cnaction_out%20%3D%20action_in%5Cn%5Cn%23%20Substitute%20the%20placeholders%5Cnif%20len%28placeholders%29%20%3D%3D%200%3A%5Cn%5Ctif%20dialogs.alert%28u%5C%22No%20template%20placeholders%20were%20found.%5C%22%2C%20u%5C%22%5C%22%5C%22%5CnIf%20your%20project%20text%20has%20placeholders%20%28that%20look%20like%20%5Cu00abthis%5Cu00bb%29%2C%20this%20script%20will%20prompt%20for%20values%20you%27d%20like%20to%20substitute%20for%20them.%5Cn%5C%22%5C%22%5C%22%2C%20u%5C%22Continue%5C%22%29%20%21%3D%201%3A%5Cn%5Ct%20%20workflow.stop%28%29%5Cn%5Cnelse%3A%5Cn%5Ctvalues%20%3D%20dialogs.form_dialog%28title%3D%27%27%2C%20fields%3Dfields%2C%20sections%3DNone%29%5Cn%5Ctif%20values%3A%5Cn%5Ct%5Ctfor%20key%20in%20values%3A%5Cn%5Ct%5Ct%5Ctaction_out%20%3D%20re.sub%28u%5C%22%5Cu00ab%5C%22%20%2B%20key%20%2B%20%5C%22%5Cu00bb%5C%22%2C%20values%5Bkey%5D%2C%20action_out%29%5Cn%5Cnworkflow.set_output%28action_out%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionURLEscape%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22encodedContent%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22URL%22%3A%20%7B%22text%22%3A%20%22omnifocus%3A%2F%2Fx-callback-url%2Fpaste%3Ftarget%3Dprojects%26content%3D%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B57%2C%201%7D%22%3A%20%22encodedContent%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22waitUntilLoaded%22%3A%20false%2C%20%22revealBrowserAutomatically%22%3A%20true%2C%20%22openIn%22%3A%200%2C%20%22tabOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%5D%2C%20%22name%22%3A%20%22OF%20Templates%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone10%2C5%22%2C%20%22systemVersion%22%3A%20%2212.1.4%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-validation-tick-circle-3.png%22%7D", "description": "This Workflow accepts TaskPaper text with \u00abplaceholder\u00bb tokens and prompts for you to enter final values, then creates a project in OmniFocus 2.14 for iOS using those tokens.\n\nFor example, given this input:\n\n- \u00abproject_name\u00bb @parallel(false) @due(\u00abdue\u00bb)\n        - This task needs to be done at least 1 week before \u00abproject_name\u00bb is due @due(\u00abdue\u00bb -1w)\n        - This task needs to be done at least 2 days before \u00abproject_name\u00bb is due @due(\u00abdue\u00bb -2d)\n\nYou'll be prompted to enter values for \u00abproject_name\u00bb and \u00abdue\u00bb. If you enter \"Phonewave 1.2\" and \"next Thursday\", it will create a new \"Phonewave 1.2\" project in OmniFocus that is due next Thursday, and has two tasks already filled with due dates of this Thursday and next Tuesday.", "title": "OF Templates"}, {"url": "http://editorial-app.appspot.com/workflow/5799686464077824/h-2zjyp9qN4", "workflow_data": {"username": "Jerry He", "description": "scrapes 2 pages of Glassdoor website", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport workflow\n\nworkflow.set_output('https://www.glassdoor.com/Reviews/Walt-Disney-Company-Reviews-E717.htm')\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"revealBrowserAutomatically": true, "tabID": "glassdoorloggedin", "URL": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "openIn": 0, "tabOption": 2, "waitUntilLoaded": true}, "class": "WorkflowActionOpenURL"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "from time import sleep\n\nsleep(4)\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "//This sets the output of the workflow action:\n\nfunction first_tab(url_base) {\n    var winFront = safari.windows[0]\n\tvar tab = winFront.tabs[0]\n\tsafari.doJavaScript(\"location.href='\"+url_base+\"'\", { in: tab })\n    return tab\n}\n\nfunction str(fun) {\n  return \"(\" + fun + \")()\" \n}\n\n\nfunction scrapeThisPageReviews(i) { \n    sessionStorage.clear()\n\t$('div.hreview').each(function() {\n\t\t\t\t\t      var _res = {}\n\t\t\t\t\t\t var subratings = {}\n                       $(this).find('div.subRatings').find('ul.undecorated').find('li').each(function() { \n\t\t\t\t\t   var cat_name = $(this).find('.minor').text()\n\t\t\t\t\t   var rating = $(this).find('span.gdBars').attr('title'); \n\t\t\t\t\t     subratings[cat_name]=rating\n\t\t\t\t\t   })\n\t\t\t\t\t\n\t\t\t\t\t\t_res['subratings']=subratings\n\t\t\t\t       _res['helpful'] = $(this).find('.helpfulCount').text()\n\t\t\t\t\t   _res['pros'] = $(this).find('div p.strong:contains(Pro)').next('p').text()\n\t\t\t\t\t  _res['cons'] = $(this).find('div p.strong:contains(Con)').next('p').text()\n\t\t\t\t\t  _res['advice_to_mgmt'] = $(this).find('div p.strong:contains(Advice)').next('p').text()\n\t\t\t\t\t  _res['positive_boxes'] = $(this).find('i.green').parent('div').next('div').find('.middle').map(function() { return this.innerText }).toArray()\n\t\t\t\t\t  _res['neutral_boxes'] = $(this).find('i.yellow').parent('div').next('div').find('.middle').map(function() { return this.innerText }).toArray()\n\t\t\t\t\t  _res['negative_boxes'] = $(this).find('i.red').parent('div').next('div').find('.middle').map(function() { return this.innerText }).toArray()\n\t\t\t\t\t  _res['author_jobtitle'] = $(this).find('span.authorJobTitle').text()\n\t\t\t\t\t  _res['author_location'] = $(this).find('span.authorLocation').text()\n\t\t\t\t\t  _res['review_title'] = $(this).find('a.reviewLink span.summary').text()\n\t\t\t\t\t    _res['rating'] = $(this).find('span.rating span.value-title').attr('title')\n\t\t\t\t\t      _res['date'] = $(this).find('time').text()\n\t\t\t\t\t  i++;\n\tsessionStorage.setItem(i.toString(), JSON.stringify(_res))\n\t\t\t\t\t  })\t\n\t\t\t\t\t  return i\n}\n\nvar num_scraped = scrapeThisPageReviews(0)\nvar next_link;\nnext_link = $($('li.next').find('a')[0]).attr('href')\n\nif(true) {\n   //location.href = next_link\n   setTimeout(function() { num_scraped= scrapeThisPageReviews(num_scraped)}, 8000)\n   $('li.next').find('a').click()\n}\nwindow.output = next_link //num_scraped\n"}, "class": "WorkflowActionEvaluateJavascript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionConsoleOutput"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "from time import sleep\n\nsleep(4)\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "function fetchScrapedDataFromThisPage() {\n   var res=[],i=0; \n\twhile(sessionStorage.key(i) != null) { \n\t\tres.push(JSON.parse(sessionStorage.getItem(sessionStorage.key(i)))); i++; \n\t}\n\treturn JSON.stringify(res)\n}\n\nwindow.output = fetchScrapedDataFromThisPage()\n"}, "class": "WorkflowActionEvaluateJavascript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionConsoleOutput"}], "name": "Scrape Glassdoor", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad8,1", "systemVersion": "12.1.4"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22Jerry%20He%22%2C%20%22description%22%3A%20%22scrapes%202%20pages%20of%20Glassdoor%20website%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cn%5Cnworkflow.set_output%28%27https%3A%2F%2Fwww.glassdoor.com%2FReviews%2FWalt-Disney-Company-Reviews-E717.htm%27%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22revealBrowserAutomatically%22%3A%20true%2C%20%22tabID%22%3A%20%22glassdoorloggedin%22%2C%20%22URL%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22openIn%22%3A%200%2C%20%22tabOption%22%3A%202%2C%20%22waitUntilLoaded%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22from%20time%20import%20sleep%5Cn%5Cnsleep%284%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%2F%2FThis%20sets%20the%20output%20of%20the%20workflow%20action%3A%5Cn%5Cnfunction%20first_tab%28url_base%29%20%7B%5Cn%20%20%20%20var%20winFront%20%3D%20safari.windows%5B0%5D%5Cn%5Ctvar%20tab%20%3D%20winFront.tabs%5B0%5D%5Cn%5Ctsafari.doJavaScript%28%5C%22location.href%3D%27%5C%22%2Burl_base%2B%5C%22%27%5C%22%2C%20%7B%20in%3A%20tab%20%7D%29%5Cn%20%20%20%20return%20tab%5Cn%7D%5Cn%5Cnfunction%20str%28fun%29%20%7B%5Cn%20%20return%20%5C%22%28%5C%22%20%2B%20fun%20%2B%20%5C%22%29%28%29%5C%22%20%5Cn%7D%5Cn%5Cn%5Cnfunction%20scrapeThisPageReviews%28i%29%20%7B%20%5Cn%20%20%20%20sessionStorage.clear%28%29%5Cn%5Ct%24%28%27div.hreview%27%29.each%28function%28%29%20%7B%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%20%20%20%20%20var%20_res%20%3D%20%7B%7D%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct%20var%20subratings%20%3D%20%7B%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24%28this%29.find%28%27div.subRatings%27%29.find%28%27ul.undecorated%27%29.find%28%27li%27%29.each%28function%28%29%20%7B%20%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%20%20var%20cat_name%20%3D%20%24%28this%29.find%28%27.minor%27%29.text%28%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%20%20var%20rating%20%3D%20%24%28this%29.find%28%27span.gdBars%27%29.attr%28%27title%27%29%3B%20%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%20%20%20%20subratings%5Bcat_name%5D%3Drating%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%20%20%7D%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%5Ct_res%5B%27subratings%27%5D%3Dsubratings%5Cn%5Ct%5Ct%5Ct%5Ct%20%20%20%20%20%20%20_res%5B%27helpful%27%5D%20%3D%20%24%28this%29.find%28%27.helpfulCount%27%29.text%28%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%20%20_res%5B%27pros%27%5D%20%3D%20%24%28this%29.find%28%27div%20p.strong%3Acontains%28Pro%29%27%29.next%28%27p%27%29.text%28%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%20_res%5B%27cons%27%5D%20%3D%20%24%28this%29.find%28%27div%20p.strong%3Acontains%28Con%29%27%29.next%28%27p%27%29.text%28%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%20_res%5B%27advice_to_mgmt%27%5D%20%3D%20%24%28this%29.find%28%27div%20p.strong%3Acontains%28Advice%29%27%29.next%28%27p%27%29.text%28%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%20_res%5B%27positive_boxes%27%5D%20%3D%20%24%28this%29.find%28%27i.green%27%29.parent%28%27div%27%29.next%28%27div%27%29.find%28%27.middle%27%29.map%28function%28%29%20%7B%20return%20this.innerText%20%7D%29.toArray%28%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%20_res%5B%27neutral_boxes%27%5D%20%3D%20%24%28this%29.find%28%27i.yellow%27%29.parent%28%27div%27%29.next%28%27div%27%29.find%28%27.middle%27%29.map%28function%28%29%20%7B%20return%20this.innerText%20%7D%29.toArray%28%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%20_res%5B%27negative_boxes%27%5D%20%3D%20%24%28this%29.find%28%27i.red%27%29.parent%28%27div%27%29.next%28%27div%27%29.find%28%27.middle%27%29.map%28function%28%29%20%7B%20return%20this.innerText%20%7D%29.toArray%28%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%20_res%5B%27author_jobtitle%27%5D%20%3D%20%24%28this%29.find%28%27span.authorJobTitle%27%29.text%28%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%20_res%5B%27author_location%27%5D%20%3D%20%24%28this%29.find%28%27span.authorLocation%27%29.text%28%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%20_res%5B%27review_title%27%5D%20%3D%20%24%28this%29.find%28%27a.reviewLink%20span.summary%27%29.text%28%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%20%20%20_res%5B%27rating%27%5D%20%3D%20%24%28this%29.find%28%27span.rating%20span.value-title%27%29.attr%28%27title%27%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%20%20%20%20%20_res%5B%27date%27%5D%20%3D%20%24%28this%29.find%28%27time%27%29.text%28%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%20i%2B%2B%3B%5Cn%5CtsessionStorage.setItem%28i.toString%28%29%2C%20JSON.stringify%28_res%29%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%20%7D%29%5Ct%5Cn%5Ct%5Ct%5Ct%5Ct%5Ct%20%20return%20i%5Cn%7D%5Cn%5Cnvar%20num_scraped%20%3D%20scrapeThisPageReviews%280%29%5Cnvar%20next_link%3B%5Cnnext_link%20%3D%20%24%28%24%28%27li.next%27%29.find%28%27a%27%29%5B0%5D%29.attr%28%27href%27%29%5Cn%5Cnif%28true%29%20%7B%5Cn%20%20%20%2F%2Flocation.href%20%3D%20next_link%5Cn%20%20%20setTimeout%28function%28%29%20%7B%20num_scraped%3D%20scrapeThisPageReviews%28num_scraped%29%7D%2C%208000%29%5Cn%20%20%20%24%28%27li.next%27%29.find%28%27a%27%29.click%28%29%5Cn%7D%5Cnwindow.output%20%3D%20next_link%20%2F%2Fnum_scraped%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionEvaluateJavascript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionConsoleOutput%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22from%20time%20import%20sleep%5Cn%5Cnsleep%284%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22function%20fetchScrapedDataFromThisPage%28%29%20%7B%5Cn%20%20%20var%20res%3D%5B%5D%2Ci%3D0%3B%20%5Cn%5Ctwhile%28sessionStorage.key%28i%29%20%21%3D%20null%29%20%7B%20%5Cn%5Ct%5Ctres.push%28JSON.parse%28sessionStorage.getItem%28sessionStorage.key%28i%29%29%29%29%3B%20i%2B%2B%3B%20%5Cn%5Ct%7D%5Cn%5Ctreturn%20JSON.stringify%28res%29%5Cn%7D%5Cn%5Cnwindow.output%20%3D%20fetchScrapedDataFromThisPage%28%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionEvaluateJavascript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionConsoleOutput%22%7D%5D%2C%20%22name%22%3A%20%22Scrape%20Glassdoor%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad8%2C1%22%2C%20%22systemVersion%22%3A%20%2212.1.4%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "scrapes 2 pages of Glassdoor website", "title": "Scrape Glassdoor"}, {"url": "http://editorial-app.appspot.com/workflow/5891667483688960/Re7PmAmqwKs", "workflow_data": {"username": "@seba-1511", "name": "Paperify Preview", "description": "Preliminary work. Renders a markdown document similarly to what it would look like when converted with Paperify web. Includes custom Mathjax commands.\n\nThe LaTex text is rendered via the MathJax javascript library, so an internet connection is required at the moment for the workflow to work properly.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport re\n\naction_in = workflow.get_input()\n\ntitles = [\n\t\t(r\"^# .*$\", 1),\n\t\t(r\"^## .*$\", 2),\n\t\t(r\"^### .*$\", 3),\n\t\t(r\"^#### .*$\", 4),\n]\n\n# Parse and substitute titles\nfor title_re, repl in titles:\n\tmatches = re.findall(title_re, action_in, flags=re.MULTILINE)\n\tfor match in matches:\n\t\taction_in = action_in.replace(match, '<h' + str(repl) + '>' + match[repl+1:] + '</h' + str(repl) + '>')\n\n# Parse and substitute lists (Very basic)\nfor list_re in [r\"^\\* .*$\", r\"^[1-9]+\\. .*$\"]:\n\tmatches = re.findall(list_re, action_in, flags=re.MULTILINE)\n\tfor match in matches:\n\t\taction_in = action_in.replace(match, '<li>' + match[2:] + '</li>')\n\t\t\n# Parse and substitute italic and bold\nfor format_re, repl in [(r\"\\*\\*.+\\*\\*\", 'strong')]:\n\tmatches = re.findall(format_re, action_in, flags=re.MULTILINE)\n\tfor match in matches:\n\t\taction_in = action_in.replace(match, '<' + repl + '>' + match[2:-2] + '</' + repl + '>')\n\nfor format_re, repl in [(r\"\\*.+\\*\", 'i')]:\n\tmatches = re.findall(format_re, action_in, flags=re.MULTILINE)\n\tfor match in matches:\n\t\taction_in = action_in.replace(match, '<' + repl + '>' + match[1:-1] + '</' + repl + '>')\n\t\t\t\t\n# Replace double new lines with <br />\naction_in = action_in.replace('\\n\\n\\n', '<br /><br />')\naction_in = action_in.replace('\\n\\n', '<br />')\n\naction_out = action_in\nworkflow.set_output(action_out)\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"html": {"text": "<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"utf-8\">\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->\n        <title>Paperify Preview</title>\n\n        <!-- Bootstrap -->\n        <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css\" />\n        <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.3.7/sandstone/bootstrap.min.css\" />\n\n        <!--Prism for code high-lighting-->\n        <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.5.1/themes/prism.min.css\" />\n        <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.5.1/themes/prism-solarizedlight.css\" / >\n\n        <!--KaTeX for fast embedded math-->\n        <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.6.0/katex.min.css\">\n\n        <!--Pseudocode.js-->\n        <link rel=\"stylesheet\" href=\"https://cdn.rawgit.com/seba-1511/cdn/master/pseudocode.js/pseudocode.min.css\">\n\n\n        <style type=\"text/css\" media=\"all\">\n        /* Space out content a bit */\n        body {\n            padding-top: 20px;\n            padding-bottom: 20px;\n        }\n        p {\n            font-size: 16px;\n            text-align: justify;\n        }\n        /* Everything but the jumbotron gets side spacing for mobile first views */\n        .header,\n        .footer {\n            padding-right: 15px;\n            padding-left: 15px;\n        }\n        /* Custom page header */\n        .header {\n            padding-bottom: 20px;\n            border-bottom: 1px solid #e5e5e5;\n        }\n        /* Make the masthead heading the same height as the navigation */\n        .header h3 {\n            margin-top: 0;\n            margin-bottom: 0;\n            line-height: 40px;\n        }\n        img {\n            max-width: 100%;\n        }\n        /* Custom page footer */\n        .footer {\n            padding-top: 19px;\n            color: #777;\n            border-top: 1px solid #e5e5e5;\n        }\n        /* Customize container */\n        @media (min-width: 768px) {\n            .container {\n                $if(toc)$\n                max-width: 900px;\n                $else$\n                max-width: 730px;\n                $endif$\n            }\n        }\n        .container-narrow > hr {\n            margin: 30px 0;\n        }\n        /* Responsive: Portrait tablets and up */\n        @media screen and (min-width: 768px) {\n            /* Remove the padding we set earlier */\n            .header,\n            .marketing,\n            .footer {\n                padding-right: 0;\n                padding-left: 0;\n            }\n            /* Space out the masthead */\n            .header {\n                margin-bottom: 30px;\n            }\n            /* Remove the bottom border on the jumbotron for visual effect */\n            .jumbotron {\n                border-bottom: 0;\n            }\n        }\n        .well {\n            border: 1px solid #767676;\n            width: 157px;\n            max-width: 157px;\n            background-color: #FDF6E3;\n        }\n        .well a {\n            color:#767676;\n            margin-bottom:5px;\n        }\n        .well ul {\n            list-style: none;\n            margin: 0px;\n            padding-left: 10px;\n        }\n        a, a:hover {\n            color: #2AA7E7;\n        }\n        </style>\n\n        <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->\n        <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\n        <!--[if lt IE 9]>\n            <script src=\"//oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n            <script src=\"//oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n        <![endif]-->\n\n\n        <!--Plotly.js-->\n        <!--Needs to be imported before body, else figs won't load.-->\n        <script src=\"https://cdn.plot.ly/plotly-1.2.0.min.js\"></script>\n\n    </head>\n    <body>\n        <div class=\"container\">\n            <div class=\"header clearfix\">\n                <!--<nav>-->\n                <!--<ul class=\"nav nav-pills pull-right\">-->\n                <!--<li role=\"presentation\" class=\"active\"><a href=\"#\">Home</a></li>-->\n                <!--<li role=\"presentation\"><a href=\"#\">About</a></li>-->\n                <!--<li role=\"presentation\"><a href=\"#\">Contact</a></li>-->\n                <!--</ul>-->\n                <!--</nav>-->\n                <h1 class=\"text-center\">Title</h1>\n                <h4 class=\"text-sm text-muted text-center\"> by Author,\n                <span style=\"font-weight:normal;\"><i>Date</i></span></h4>\n            </div>\n            \n            \\(\n            \n% Custom Macros\n\\newcommand{\\minimize}{\\operatorname*{minimize}}\n\\newcommand{\\maximize}{\\operatorname*{maximize}}\n\\newcommand{\\lrbrack}[1]{\\left[#1\\right]}\n\\newcommand{\\lrbrace}[1]{\\left\\{#1\\right\\}}\n\\newcommand{\\lrparen}[1]{\\left(#1\\right)}\n\\newcommand{\\A}{\\mathbb{A}}\n\\newcommand{\\B}{\\mathbb{B}}\n\\newcommand{\\C}{\\mathbb{C}}\n\\newcommand{\\D}{\\mathbb{D}}\n\\newcommand{\\E}{\\mathbb{E}}\n\\newcommand{\\F}{\\mathbb{F}}\n\\newcommand{\\G}{\\mathbb{G}}\n\\renewcommand{\\H}{\\mathbb{H}}\n\\newcommand{\\I}{\\mathbb{I}}\n\\newcommand{\\J}{\\mathbb{J}}\n\\newcommand{\\K}{\\mathbb{K}}\n\\renewcommand{\\L}{\\mathbb{L}}\n\\newcommand{\\M}{\\mathbb{M}}\n\\newcommand{\\N}{\\mathbb{N}}\n\\renewcommand{\\O}{\\mathbb{O}}\n\\renewcommand{\\P}{\\mathbb{P}}\n\\newcommand{\\Q}{\\mathbb{Q}}\n\\newcommand{\\R}{\\mathbb{R}}\n\\renewcommand{\\S}{\\mathbb{S}}\n\\newcommand{\\T}{\\mathbb{T}}\n\\newcommand{\\U}{\\mathbb{U}}\n\\newcommand{\\V}{\\mathbb{V}}\n\\newcommand{\\W}{\\mathbb{W}}\n\\newcommand{\\X}{\\mathbb{X}}\n\\newcommand{\\Y}{\\mathbb{Y}}\n\\newcommand{\\Z}{\\mathbb{Z}}\n\n\\newcommand{\\Var}{\\mathrm{Var}}\n\\newcommand{\\e}[1]{\\mathbb{E}\\left[#1\\right]}\n\\newcommand{\\var}[1]{\\mathrm{Var}\\left[#1\\right]}\n\\newcommand{\\cov}[1]{\\mathrm{Cov}\\left[#1\\right]}\n\\newcommand{\\norm}[1]{\\left\\lVert#1\\right\\rVert}\n\\newcommand{\\paren}[1]{\\left(#1\\right)}\n\\newcommand{\\bigO}[1]{\\mathcal{O}\\left(#1\\right)}\n            \\)\n          \n    \n?\n\n            <footer class=\"footer\">\n                <p><b>title</b> - <i>author</i>, date.</p>\n            </footer>\n\n        </div> <!-- /container -->\n\n        <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\n        <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js\"></script>\n        <!-- Include all compiled plugins (below), or include individual files as needed -->\n        <script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js\"></script>\n\n        <!--Prism for code highlighting-->\n        <script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.5.1/prism.js\"></script>\n        <script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.5.1/components/prism-python.min.js\"></script>\n        <script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.5.1/components/prism-c.min.js\"></script>\n        <script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.5.1/components/prism-java.min.js\"></script>\n\n        <!--MathJax-->\n        <script type=\"text/x-mathjax-config\">\n        var delim = '\\u0024';\n        MathJax.Hub.Config({\n          tex2jax: {inlineMath: [[delim, delim], ['\\\\(','\\\\)']]}\n        });\n        </script>\n        <script src='https://cdn.rawgit.com/mathjax/MathJax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>\n\n        <!--KaTeX JavaScript -->\n        <script src=\"https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.6.0/katex.min.js\"></script>\n        <!--<script src=\"https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.6.0/contrib/auto-render.min.js\"></script>-->\n\n        <!--Pseudocode.js-->\n        <script src=\"https://cdn.rawgit.com/seba-1511/cdn/master/pseudocode.js/pseudocode.min.js\"></script>\n        <!--<script src=\"https://rawgit.com/seba-1511/cdn/master/pseudocode.js/pseudocode.min.js\"></script>-->\n\n        <!--Viz.js for dot graphs-->\n        <script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/viz.js/1.8.0/viz-lite.js\"></script>\n\n        <!--Custom scripting-->\n        <script type=\"text/javascript\">\n        // Allows prism to work properly\n        jQuery(document).ready(function() {\n            jQuery('.python').addClass('language-python').removeClass('python');\n            jQuery('.javascript').addClass('language-js').removeClass('javascript');\n            jQuery('.c').addClass('language-c').removeClass('c');\n            jQuery('.java').addClass('language-java').removeClass('java');\n            jQuery('.sourceCode').removeClass('sourceCode');\n            jQuery('table').addClass('table table-striped table-bordered');\n            jQuery('img').addClass('img-responsive');\n            // renderMathInElement(document.body, {\n            //     displayMode: false,\n            //     throwOnError: false,\n            //     errorColor: '#cc0000',\n            // });\n            var math = document.getElementsByClassName(\"math\");\n            // MathJax.Hub.Queue([\"Typeset\", MathJax.Hub, math]);\n            MathJax.Hub.Queue([math, ]);\n            Prism.highlightAll(false);\n            // Parse and render graphs using Viz.js\n            var dotElems = document.querySelectorAll('div.vizdot');\n            var i, content, image;\n            for (i=0; i < dotElems.length; i++) {\n                content = dotElems[i].textContent;\n                image = Viz(content, {\n                    format: 'png-image-element',\n                });\n                dotElems[0].innerHTML = \"\";\n                dotElems[i].appendChild(image);\n            }\n            // The following uses pseudocode.js to render algorithms\n            var i, content, container;\n            var pseudocodeElems = document.querySelectorAll('pre.algo code');\n            var parents = document.querySelectorAll('pre.algo');\n            var displayOptions = {\n                indentSize: '1.5em',\n                commentDelimiter: '//',\n                lineNumber: true,\n                lineNumberPunc: ':',\n                noEnd: true,\n                captionCount: 1,\n                throwOnError: false,\n            };\n            for (i=0; i < pseudocodeElems.length; i++) {\n                content = pseudocodeElems[i].textContent;\n                container = document.createElement('div');\n                parents[i].parentNode.insertBefore(container, parents[i]);\n                pseudocode.render(content, container, displayOptions);\n                parents[i].style.display = 'none';\n                parents[i].parentNode.removeChild(parents[i]);\n            }\n        });\n        </script>\n        <script>\n          (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n          (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n          m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n          })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');\n          ga('create', 'UA-68693545-3', 'auto');\n          ga('send', 'pageview');\n        </script>\n\n    </body>\n</html>", "tokenRanges": {"{6207, 1}": "Input"}, "type": "advancedText"}, "baseURL": "", "title": "Paperify Preview"}, "class": "WorkflowActionShowHTMLPreview"}], "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad6,3", "systemVersion": "12.1.4"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_PRINT.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%40seba-1511%22%2C%20%22name%22%3A%20%22Paperify%20Preview%22%2C%20%22description%22%3A%20%22Preliminary%20work.%20Renders%20a%20markdown%20document%20similarly%20to%20what%20it%20would%20look%20like%20when%20converted%20with%20Paperify%20web.%20Includes%20custom%20Mathjax%20commands.%5Cn%5CnThe%20LaTex%20text%20is%20rendered%20via%20the%20MathJax%20javascript%20library%2C%20so%20an%20internet%20connection%20is%20required%20at%20the%20moment%20for%20the%20workflow%20to%20work%20properly.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20re%5Cn%5Cnaction_in%20%3D%20workflow.get_input%28%29%5Cn%5Cntitles%20%3D%20%5B%5Cn%5Ct%5Ct%28r%5C%22%5E%23%20.%2A%24%5C%22%2C%201%29%2C%5Cn%5Ct%5Ct%28r%5C%22%5E%23%23%20.%2A%24%5C%22%2C%202%29%2C%5Cn%5Ct%5Ct%28r%5C%22%5E%23%23%23%20.%2A%24%5C%22%2C%203%29%2C%5Cn%5Ct%5Ct%28r%5C%22%5E%23%23%23%23%20.%2A%24%5C%22%2C%204%29%2C%5Cn%5D%5Cn%5Cn%23%20Parse%20and%20substitute%20titles%5Cnfor%20title_re%2C%20repl%20in%20titles%3A%5Cn%5Ctmatches%20%3D%20re.findall%28title_re%2C%20action_in%2C%20flags%3Dre.MULTILINE%29%5Cn%5Ctfor%20match%20in%20matches%3A%5Cn%5Ct%5Ctaction_in%20%3D%20action_in.replace%28match%2C%20%27%3Ch%27%20%2B%20str%28repl%29%20%2B%20%27%3E%27%20%2B%20match%5Brepl%2B1%3A%5D%20%2B%20%27%3C%2Fh%27%20%2B%20str%28repl%29%20%2B%20%27%3E%27%29%5Cn%5Cn%23%20Parse%20and%20substitute%20lists%20%28Very%20basic%29%5Cnfor%20list_re%20in%20%5Br%5C%22%5E%5C%5C%2A%20.%2A%24%5C%22%2C%20r%5C%22%5E%5B1-9%5D%2B%5C%5C.%20.%2A%24%5C%22%5D%3A%5Cn%5Ctmatches%20%3D%20re.findall%28list_re%2C%20action_in%2C%20flags%3Dre.MULTILINE%29%5Cn%5Ctfor%20match%20in%20matches%3A%5Cn%5Ct%5Ctaction_in%20%3D%20action_in.replace%28match%2C%20%27%3Cli%3E%27%20%2B%20match%5B2%3A%5D%20%2B%20%27%3C%2Fli%3E%27%29%5Cn%5Ct%5Ct%5Cn%23%20Parse%20and%20substitute%20italic%20and%20bold%5Cnfor%20format_re%2C%20repl%20in%20%5B%28r%5C%22%5C%5C%2A%5C%5C%2A.%2B%5C%5C%2A%5C%5C%2A%5C%22%2C%20%27strong%27%29%5D%3A%5Cn%5Ctmatches%20%3D%20re.findall%28format_re%2C%20action_in%2C%20flags%3Dre.MULTILINE%29%5Cn%5Ctfor%20match%20in%20matches%3A%5Cn%5Ct%5Ctaction_in%20%3D%20action_in.replace%28match%2C%20%27%3C%27%20%2B%20repl%20%2B%20%27%3E%27%20%2B%20match%5B2%3A-2%5D%20%2B%20%27%3C%2F%27%20%2B%20repl%20%2B%20%27%3E%27%29%5Cn%5Cnfor%20format_re%2C%20repl%20in%20%5B%28r%5C%22%5C%5C%2A.%2B%5C%5C%2A%5C%22%2C%20%27i%27%29%5D%3A%5Cn%5Ctmatches%20%3D%20re.findall%28format_re%2C%20action_in%2C%20flags%3Dre.MULTILINE%29%5Cn%5Ctfor%20match%20in%20matches%3A%5Cn%5Ct%5Ctaction_in%20%3D%20action_in.replace%28match%2C%20%27%3C%27%20%2B%20repl%20%2B%20%27%3E%27%20%2B%20match%5B1%3A-1%5D%20%2B%20%27%3C%2F%27%20%2B%20repl%20%2B%20%27%3E%27%29%5Cn%5Ct%5Ct%5Ct%5Ct%5Cn%23%20Replace%20double%20new%20lines%20with%20%3Cbr%20%2F%3E%5Cnaction_in%20%3D%20action_in.replace%28%27%5C%5Cn%5C%5Cn%5C%5Cn%27%2C%20%27%3Cbr%20%2F%3E%3Cbr%20%2F%3E%27%29%5Cnaction_in%20%3D%20action_in.replace%28%27%5C%5Cn%5C%5Cn%27%2C%20%27%3Cbr%20%2F%3E%27%29%5Cn%5Cnaction_out%20%3D%20action_in%5Cnworkflow.set_output%28action_out%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22html%22%3A%20%7B%22text%22%3A%20%22%3C%21DOCTYPE%20html%3E%5Cn%3Chtml%20lang%3D%5C%22en%5C%22%3E%5Cn%20%20%20%20%3Chead%3E%5Cn%20%20%20%20%20%20%20%20%3Cmeta%20charset%3D%5C%22utf-8%5C%22%3E%5Cn%20%20%20%20%20%20%20%20%3Cmeta%20http-equiv%3D%5C%22X-UA-Compatible%5C%22%20content%3D%5C%22IE%3Dedge%5C%22%3E%5Cn%20%20%20%20%20%20%20%20%3Cmeta%20name%3D%5C%22viewport%5C%22%20content%3D%5C%22width%3Ddevice-width%2C%20initial-scale%3D1%5C%22%3E%5Cn%20%20%20%20%20%20%20%20%3C%21--%20The%20above%203%20meta%20tags%20%2Amust%2A%20come%20first%20in%20the%20head%3B%20any%20other%20head%20content%20must%20come%20%2Aafter%2A%20these%20tags%20--%3E%5Cn%20%20%20%20%20%20%20%20%3Ctitle%3EPaperify%20Preview%3C%2Ftitle%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%3C%21--%20Bootstrap%20--%3E%5Cn%20%20%20%20%20%20%20%20%3Clink%20rel%3D%5C%22stylesheet%5C%22%20href%3D%5C%22https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Ftwitter-bootstrap%2F3.3.7%2Fcss%2Fbootstrap.min.css%5C%22%20%2F%3E%5Cn%20%20%20%20%20%20%20%20%3Clink%20rel%3D%5C%22stylesheet%5C%22%20href%3D%5C%22https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fbootswatch%2F3.3.7%2Fsandstone%2Fbootstrap.min.css%5C%22%20%2F%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%3C%21--Prism%20for%20code%20high-lighting--%3E%5Cn%20%20%20%20%20%20%20%20%3Clink%20rel%3D%5C%22stylesheet%5C%22%20href%3D%5C%22https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fprism%2F1.5.1%2Fthemes%2Fprism.min.css%5C%22%20%2F%3E%5Cn%20%20%20%20%20%20%20%20%3Clink%20rel%3D%5C%22stylesheet%5C%22%20href%3D%5C%22https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fprism%2F1.5.1%2Fthemes%2Fprism-solarizedlight.css%5C%22%20%2F%20%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%3C%21--KaTeX%20for%20fast%20embedded%20math--%3E%5Cn%20%20%20%20%20%20%20%20%3Clink%20rel%3D%5C%22stylesheet%5C%22%20href%3D%5C%22https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2FKaTeX%2F0.6.0%2Fkatex.min.css%5C%22%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%3C%21--Pseudocode.js--%3E%5Cn%20%20%20%20%20%20%20%20%3Clink%20rel%3D%5C%22stylesheet%5C%22%20href%3D%5C%22https%3A%2F%2Fcdn.rawgit.com%2Fseba-1511%2Fcdn%2Fmaster%2Fpseudocode.js%2Fpseudocode.min.css%5C%22%3E%5Cn%5Cn%5Cn%20%20%20%20%20%20%20%20%3Cstyle%20type%3D%5C%22text%2Fcss%5C%22%20media%3D%5C%22all%5C%22%3E%5Cn%20%20%20%20%20%20%20%20%2F%2A%20Space%20out%20content%20a%20bit%20%2A%2F%5Cn%20%20%20%20%20%20%20%20body%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20padding-top%3A%2020px%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20padding-bottom%3A%2020px%3B%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20p%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20font-size%3A%2016px%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20text-align%3A%20justify%3B%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%2F%2A%20Everything%20but%20the%20jumbotron%20gets%20side%20spacing%20for%20mobile%20first%20views%20%2A%2F%5Cn%20%20%20%20%20%20%20%20.header%2C%5Cn%20%20%20%20%20%20%20%20.footer%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20padding-right%3A%2015px%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20padding-left%3A%2015px%3B%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%2F%2A%20Custom%20page%20header%20%2A%2F%5Cn%20%20%20%20%20%20%20%20.header%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20padding-bottom%3A%2020px%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border-bottom%3A%201px%20solid%20%23e5e5e5%3B%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%2F%2A%20Make%20the%20masthead%20heading%20the%20same%20height%20as%20the%20navigation%20%2A%2F%5Cn%20%20%20%20%20%20%20%20.header%20h3%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20margin-top%3A%200%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20margin-bottom%3A%200%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20line-height%3A%2040px%3B%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20img%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20max-width%3A%20100%25%3B%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%2F%2A%20Custom%20page%20footer%20%2A%2F%5Cn%20%20%20%20%20%20%20%20.footer%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20padding-top%3A%2019px%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20color%3A%20%23777%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border-top%3A%201px%20solid%20%23e5e5e5%3B%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%2F%2A%20Customize%20container%20%2A%2F%5Cn%20%20%20%20%20%20%20%20%40media%20%28min-width%3A%20768px%29%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20.container%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24if%28toc%29%24%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20max-width%3A%20900px%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24else%24%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20max-width%3A%20730px%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24endif%24%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20.container-narrow%20%3E%20hr%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20margin%3A%2030px%200%3B%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%2F%2A%20Responsive%3A%20Portrait%20tablets%20and%20up%20%2A%2F%5Cn%20%20%20%20%20%20%20%20%40media%20screen%20and%20%28min-width%3A%20768px%29%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%2F%2A%20Remove%20the%20padding%20we%20set%20earlier%20%2A%2F%5Cn%20%20%20%20%20%20%20%20%20%20%20%20.header%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20.marketing%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20.footer%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20padding-right%3A%200%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20padding-left%3A%200%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%2F%2A%20Space%20out%20the%20masthead%20%2A%2F%5Cn%20%20%20%20%20%20%20%20%20%20%20%20.header%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20margin-bottom%3A%2030px%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%2F%2A%20Remove%20the%20bottom%20border%20on%20the%20jumbotron%20for%20visual%20effect%20%2A%2F%5Cn%20%20%20%20%20%20%20%20%20%20%20%20.jumbotron%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20border-bottom%3A%200%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20.well%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%3A%201px%20solid%20%23767676%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20width%3A%20157px%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20max-width%3A%20157px%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20background-color%3A%20%23FDF6E3%3B%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20.well%20a%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20color%3A%23767676%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20margin-bottom%3A5px%3B%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20.well%20ul%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20list-style%3A%20none%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20margin%3A%200px%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20padding-left%3A%2010px%3B%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20a%2C%20a%3Ahover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20color%3A%20%232AA7E7%3B%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%3C%2Fstyle%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%3C%21--%20HTML5%20shim%20and%20Respond.js%20for%20IE8%20support%20of%20HTML5%20elements%20and%20media%20queries%20--%3E%5Cn%20%20%20%20%20%20%20%20%3C%21--%20WARNING%3A%20Respond.js%20doesn%27t%20work%20if%20you%20view%20the%20page%20via%20file%3A%2F%2F%20--%3E%5Cn%20%20%20%20%20%20%20%20%3C%21--%5Bif%20lt%20IE%209%5D%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3Cscript%20src%3D%5C%22%2F%2Foss.maxcdn.com%2Fhtml5shiv%2F3.7.3%2Fhtml5shiv.min.js%5C%22%3E%3C%2Fscript%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3Cscript%20src%3D%5C%22%2F%2Foss.maxcdn.com%2Frespond%2F1.4.2%2Frespond.min.js%5C%22%3E%3C%2Fscript%3E%5Cn%20%20%20%20%20%20%20%20%3C%21%5Bendif%5D--%3E%5Cn%5Cn%5Cn%20%20%20%20%20%20%20%20%3C%21--Plotly.js--%3E%5Cn%20%20%20%20%20%20%20%20%3C%21--Needs%20to%20be%20imported%20before%20body%2C%20else%20figs%20won%27t%20load.--%3E%5Cn%20%20%20%20%20%20%20%20%3Cscript%20src%3D%5C%22https%3A%2F%2Fcdn.plot.ly%2Fplotly-1.2.0.min.js%5C%22%3E%3C%2Fscript%3E%5Cn%5Cn%20%20%20%20%3C%2Fhead%3E%5Cn%20%20%20%20%3Cbody%3E%5Cn%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%5C%22container%5C%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class%3D%5C%22header%20clearfix%5C%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%21--%3Cnav%3E--%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%21--%3Cul%20class%3D%5C%22nav%20nav-pills%20pull-right%5C%22%3E--%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%21--%3Cli%20role%3D%5C%22presentation%5C%22%20class%3D%5C%22active%5C%22%3E%3Ca%20href%3D%5C%22%23%5C%22%3EHome%3C%2Fa%3E%3C%2Fli%3E--%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%21--%3Cli%20role%3D%5C%22presentation%5C%22%3E%3Ca%20href%3D%5C%22%23%5C%22%3EAbout%3C%2Fa%3E%3C%2Fli%3E--%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%21--%3Cli%20role%3D%5C%22presentation%5C%22%3E%3Ca%20href%3D%5C%22%23%5C%22%3EContact%3C%2Fa%3E%3C%2Fli%3E--%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%21--%3C%2Ful%3E--%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%21--%3C%2Fnav%3E--%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ch1%20class%3D%5C%22text-center%5C%22%3ETitle%3C%2Fh1%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ch4%20class%3D%5C%22text-sm%20text-muted%20text-center%5C%22%3E%20by%20Author%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20style%3D%5C%22font-weight%3Anormal%3B%5C%22%3E%3Ci%3EDate%3C%2Fi%3E%3C%2Fspan%3E%3C%2Fh4%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%5C%28%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5Cn%25%20Custom%20Macros%5Cn%5C%5Cnewcommand%7B%5C%5Cminimize%7D%7B%5C%5Coperatorname%2A%7Bminimize%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5Cmaximize%7D%7B%5C%5Coperatorname%2A%7Bmaximize%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5Clrbrack%7D%5B1%5D%7B%5C%5Cleft%5B%231%5C%5Cright%5D%7D%5Cn%5C%5Cnewcommand%7B%5C%5Clrbrace%7D%5B1%5D%7B%5C%5Cleft%5C%5C%7B%231%5C%5Cright%5C%5C%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5Clrparen%7D%5B1%5D%7B%5C%5Cleft%28%231%5C%5Cright%29%7D%5Cn%5C%5Cnewcommand%7B%5C%5CA%7D%7B%5C%5Cmathbb%7BA%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CB%7D%7B%5C%5Cmathbb%7BB%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CC%7D%7B%5C%5Cmathbb%7BC%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CD%7D%7B%5C%5Cmathbb%7BD%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CE%7D%7B%5C%5Cmathbb%7BE%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CF%7D%7B%5C%5Cmathbb%7BF%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CG%7D%7B%5C%5Cmathbb%7BG%7D%7D%5Cn%5C%5Crenewcommand%7B%5C%5CH%7D%7B%5C%5Cmathbb%7BH%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CI%7D%7B%5C%5Cmathbb%7BI%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CJ%7D%7B%5C%5Cmathbb%7BJ%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CK%7D%7B%5C%5Cmathbb%7BK%7D%7D%5Cn%5C%5Crenewcommand%7B%5C%5CL%7D%7B%5C%5Cmathbb%7BL%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CM%7D%7B%5C%5Cmathbb%7BM%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CN%7D%7B%5C%5Cmathbb%7BN%7D%7D%5Cn%5C%5Crenewcommand%7B%5C%5CO%7D%7B%5C%5Cmathbb%7BO%7D%7D%5Cn%5C%5Crenewcommand%7B%5C%5CP%7D%7B%5C%5Cmathbb%7BP%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CQ%7D%7B%5C%5Cmathbb%7BQ%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CR%7D%7B%5C%5Cmathbb%7BR%7D%7D%5Cn%5C%5Crenewcommand%7B%5C%5CS%7D%7B%5C%5Cmathbb%7BS%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CT%7D%7B%5C%5Cmathbb%7BT%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CU%7D%7B%5C%5Cmathbb%7BU%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CV%7D%7B%5C%5Cmathbb%7BV%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CW%7D%7B%5C%5Cmathbb%7BW%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CX%7D%7B%5C%5Cmathbb%7BX%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CY%7D%7B%5C%5Cmathbb%7BY%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5CZ%7D%7B%5C%5Cmathbb%7BZ%7D%7D%5Cn%5Cn%5C%5Cnewcommand%7B%5C%5CVar%7D%7B%5C%5Cmathrm%7BVar%7D%7D%5Cn%5C%5Cnewcommand%7B%5C%5Ce%7D%5B1%5D%7B%5C%5Cmathbb%7BE%7D%5C%5Cleft%5B%231%5C%5Cright%5D%7D%5Cn%5C%5Cnewcommand%7B%5C%5Cvar%7D%5B1%5D%7B%5C%5Cmathrm%7BVar%7D%5C%5Cleft%5B%231%5C%5Cright%5D%7D%5Cn%5C%5Cnewcommand%7B%5C%5Ccov%7D%5B1%5D%7B%5C%5Cmathrm%7BCov%7D%5C%5Cleft%5B%231%5C%5Cright%5D%7D%5Cn%5C%5Cnewcommand%7B%5C%5Cnorm%7D%5B1%5D%7B%5C%5Cleft%5C%5ClVert%231%5C%5Cright%5C%5CrVert%7D%5Cn%5C%5Cnewcommand%7B%5C%5Cparen%7D%5B1%5D%7B%5C%5Cleft%28%231%5C%5Cright%29%7D%5Cn%5C%5Cnewcommand%7B%5C%5CbigO%7D%5B1%5D%7B%5C%5Cmathcal%7BO%7D%5C%5Cleft%28%231%5C%5Cright%29%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%5C%5C%29%5Cn%20%20%20%20%20%20%20%20%20%20%5Cn%20%20%20%20%5Cn%3F%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3Cfooter%20class%3D%5C%22footer%5C%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%3E%3Cb%3Etitle%3C%2Fb%3E%20-%20%3Ci%3Eauthor%3C%2Fi%3E%2C%20date.%3C%2Fp%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Ffooter%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%20%3C%21--%20%2Fcontainer%20--%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%3C%21--%20jQuery%20%28necessary%20for%20Bootstrap%27s%20JavaScript%20plugins%29%20--%3E%5Cn%20%20%20%20%20%20%20%20%3Cscript%20src%3D%5C%22https%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fjquery%2F1.12.4%2Fjquery.min.js%5C%22%3E%3C%2Fscript%3E%5Cn%20%20%20%20%20%20%20%20%3C%21--%20Include%20all%20compiled%20plugins%20%28below%29%2C%20or%20include%20individual%20files%20as%20needed%20--%3E%5Cn%20%20%20%20%20%20%20%20%3Cscript%20type%3D%5C%22text%2Fjavascript%5C%22%20src%3D%5C%22https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Ftwitter-bootstrap%2F3.3.7%2Fjs%2Fbootstrap.min.js%5C%22%3E%3C%2Fscript%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%3C%21--Prism%20for%20code%20highlighting--%3E%5Cn%20%20%20%20%20%20%20%20%3Cscript%20type%3D%5C%22text%2Fjavascript%5C%22%20src%3D%5C%22https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fprism%2F1.5.1%2Fprism.js%5C%22%3E%3C%2Fscript%3E%5Cn%20%20%20%20%20%20%20%20%3Cscript%20type%3D%5C%22text%2Fjavascript%5C%22%20src%3D%5C%22https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fprism%2F1.5.1%2Fcomponents%2Fprism-python.min.js%5C%22%3E%3C%2Fscript%3E%5Cn%20%20%20%20%20%20%20%20%3Cscript%20type%3D%5C%22text%2Fjavascript%5C%22%20src%3D%5C%22https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fprism%2F1.5.1%2Fcomponents%2Fprism-c.min.js%5C%22%3E%3C%2Fscript%3E%5Cn%20%20%20%20%20%20%20%20%3Cscript%20type%3D%5C%22text%2Fjavascript%5C%22%20src%3D%5C%22https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fprism%2F1.5.1%2Fcomponents%2Fprism-java.min.js%5C%22%3E%3C%2Fscript%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%3C%21--MathJax--%3E%5Cn%20%20%20%20%20%20%20%20%3Cscript%20type%3D%5C%22text%2Fx-mathjax-config%5C%22%3E%5Cn%20%20%20%20%20%20%20%20var%20delim%20%3D%20%27%5C%5Cu0024%27%3B%5Cn%20%20%20%20%20%20%20%20MathJax.Hub.Config%28%7B%5Cn%20%20%20%20%20%20%20%20%20%20tex2jax%3A%20%7BinlineMath%3A%20%5B%5Bdelim%2C%20delim%5D%2C%20%5B%27%5C%5C%5C%5C%28%27%2C%27%5C%5C%5C%5C%29%27%5D%5D%7D%5Cn%20%20%20%20%20%20%20%20%7D%29%3B%5Cn%20%20%20%20%20%20%20%20%3C%2Fscript%3E%5Cn%20%20%20%20%20%20%20%20%3Cscript%20src%3D%27https%3A%2F%2Fcdn.rawgit.com%2Fmathjax%2FMathJax%2F2.7.1%2FMathJax.js%3Fconfig%3DTeX-AMS-MML_HTMLorMML%27%3E%3C%2Fscript%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%3C%21--KaTeX%20JavaScript%20--%3E%5Cn%20%20%20%20%20%20%20%20%3Cscript%20src%3D%5C%22https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2FKaTeX%2F0.6.0%2Fkatex.min.js%5C%22%3E%3C%2Fscript%3E%5Cn%20%20%20%20%20%20%20%20%3C%21--%3Cscript%20src%3D%5C%22https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2FKaTeX%2F0.6.0%2Fcontrib%2Fauto-render.min.js%5C%22%3E%3C%2Fscript%3E--%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%3C%21--Pseudocode.js--%3E%5Cn%20%20%20%20%20%20%20%20%3Cscript%20src%3D%5C%22https%3A%2F%2Fcdn.rawgit.com%2Fseba-1511%2Fcdn%2Fmaster%2Fpseudocode.js%2Fpseudocode.min.js%5C%22%3E%3C%2Fscript%3E%5Cn%20%20%20%20%20%20%20%20%3C%21--%3Cscript%20src%3D%5C%22https%3A%2F%2Frawgit.com%2Fseba-1511%2Fcdn%2Fmaster%2Fpseudocode.js%2Fpseudocode.min.js%5C%22%3E%3C%2Fscript%3E--%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%3C%21--Viz.js%20for%20dot%20graphs--%3E%5Cn%20%20%20%20%20%20%20%20%3Cscript%20type%3D%5C%22text%2Fjavascript%5C%22%20src%3D%5C%22https%3A%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fviz.js%2F1.8.0%2Fviz-lite.js%5C%22%3E%3C%2Fscript%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%3C%21--Custom%20scripting--%3E%5Cn%20%20%20%20%20%20%20%20%3Cscript%20type%3D%5C%22text%2Fjavascript%5C%22%3E%5Cn%20%20%20%20%20%20%20%20%2F%2F%20Allows%20prism%20to%20work%20properly%5Cn%20%20%20%20%20%20%20%20jQuery%28document%29.ready%28function%28%29%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20jQuery%28%27.python%27%29.addClass%28%27language-python%27%29.removeClass%28%27python%27%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20jQuery%28%27.javascript%27%29.addClass%28%27language-js%27%29.removeClass%28%27javascript%27%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20jQuery%28%27.c%27%29.addClass%28%27language-c%27%29.removeClass%28%27c%27%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20jQuery%28%27.java%27%29.addClass%28%27language-java%27%29.removeClass%28%27java%27%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20jQuery%28%27.sourceCode%27%29.removeClass%28%27sourceCode%27%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20jQuery%28%27table%27%29.addClass%28%27table%20table-striped%20table-bordered%27%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20jQuery%28%27img%27%29.addClass%28%27img-responsive%27%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20renderMathInElement%28document.body%2C%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%20%20%20%20displayMode%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%20%20%20%20throwOnError%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%20%20%20%20errorColor%3A%20%27%23cc0000%27%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%7D%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20var%20math%20%3D%20document.getElementsByClassName%28%5C%22math%5C%22%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20MathJax.Hub.Queue%28%5B%5C%22Typeset%5C%22%2C%20MathJax.Hub%2C%20math%5D%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20MathJax.Hub.Queue%28%5Bmath%2C%20%5D%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20Prism.highlightAll%28false%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Parse%20and%20render%20graphs%20using%20Viz.js%5Cn%20%20%20%20%20%20%20%20%20%20%20%20var%20dotElems%20%3D%20document.querySelectorAll%28%27div.vizdot%27%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20var%20i%2C%20content%2C%20image%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20for%20%28i%3D0%3B%20i%20%3C%20dotElems.length%3B%20i%2B%2B%29%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20content%20%3D%20dotElems%5Bi%5D.textContent%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20image%20%3D%20Viz%28content%2C%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20format%3A%20%27png-image-element%27%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20dotElems%5B0%5D.innerHTML%20%3D%20%5C%22%5C%22%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20dotElems%5Bi%5D.appendChild%28image%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20The%20following%20uses%20pseudocode.js%20to%20render%20algorithms%5Cn%20%20%20%20%20%20%20%20%20%20%20%20var%20i%2C%20content%2C%20container%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20var%20pseudocodeElems%20%3D%20document.querySelectorAll%28%27pre.algo%20code%27%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20var%20parents%20%3D%20document.querySelectorAll%28%27pre.algo%27%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20var%20displayOptions%20%3D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20indentSize%3A%20%271.5em%27%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20commentDelimiter%3A%20%27%2F%2F%27%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20lineNumber%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20lineNumberPunc%3A%20%27%3A%27%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20noEnd%3A%20true%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20captionCount%3A%201%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20throwOnError%3A%20false%2C%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20for%20%28i%3D0%3B%20i%20%3C%20pseudocodeElems.length%3B%20i%2B%2B%29%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20content%20%3D%20pseudocodeElems%5Bi%5D.textContent%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20container%20%3D%20document.createElement%28%27div%27%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20parents%5Bi%5D.parentNode.insertBefore%28container%2C%20parents%5Bi%5D%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20pseudocode.render%28content%2C%20container%2C%20displayOptions%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20parents%5Bi%5D.style.display%20%3D%20%27none%27%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20parents%5Bi%5D.parentNode.removeChild%28parents%5Bi%5D%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%29%3B%5Cn%20%20%20%20%20%20%20%20%3C%2Fscript%3E%5Cn%20%20%20%20%20%20%20%20%3Cscript%3E%5Cn%20%20%20%20%20%20%20%20%20%20%28function%28i%2Cs%2Co%2Cg%2Cr%2Ca%2Cm%29%7Bi%5B%27GoogleAnalyticsObject%27%5D%3Dr%3Bi%5Br%5D%3Di%5Br%5D%7C%7Cfunction%28%29%7B%5Cn%20%20%20%20%20%20%20%20%20%20%28i%5Br%5D.q%3Di%5Br%5D.q%7C%7C%5B%5D%29.push%28arguments%29%7D%2Ci%5Br%5D.l%3D1%2Anew%20Date%28%29%3Ba%3Ds.createElement%28o%29%2C%5Cn%20%20%20%20%20%20%20%20%20%20m%3Ds.getElementsByTagName%28o%29%5B0%5D%3Ba.async%3D1%3Ba.src%3Dg%3Bm.parentNode.insertBefore%28a%2Cm%29%5Cn%20%20%20%20%20%20%20%20%20%20%7D%29%28window%2Cdocument%2C%27script%27%2C%27https%3A%2F%2Fwww.google-analytics.com%2Fanalytics.js%27%2C%27ga%27%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20ga%28%27create%27%2C%20%27UA-68693545-3%27%2C%20%27auto%27%29%3B%5Cn%20%20%20%20%20%20%20%20%20%20ga%28%27send%27%2C%20%27pageview%27%29%3B%5Cn%20%20%20%20%20%20%20%20%3C%2Fscript%3E%5Cn%5Cn%20%20%20%20%3C%2Fbody%3E%5Cn%3C%2Fhtml%3E%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B6207%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22baseURL%22%3A%20%22%22%2C%20%22title%22%3A%20%22Paperify%20Preview%22%7D%2C%20%22class%22%3A%20%22WorkflowActionShowHTMLPreview%22%7D%5D%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad6%2C3%22%2C%20%22systemVersion%22%3A%20%2212.1.4%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_PRINT.png%22%7D", "description": "Preliminary work. Renders a markdown document similarly to what it would look like when converted with Paperify web. Includes custom Mathjax commands.\n\nThe LaTex text is rendered via the MathJax javascript library, so an internet connection is required at the moment for the workflow to work properly.", "title": "Paperify Preview"}, {"url": "http://editorial-app.appspot.com/workflow/5906428657139712/Q480KgRFRlE", "workflow_data": {"username": "yt", "description": "After picking a tag from the list of tags in the current document, only tasks that contain this tag are shown, everything else is hidden (folded).", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport editor\nimport re\n\ntext = editor.get_text()\ntags = sorted(set(re.findall('@\\w+', text)))\nif len(tags) == 0:\n\timport console\n\tconsole.hud_alert('No Tags Found', 'error')\n\tworkflow.stop()\nelse:\n\tworkflow.set_output('\\n'.join(tags))\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"list": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "Select Tag", "showInPopover": false, "allowMultipleSelection": false}, "class": "WorkflowActionSelectFromList"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionRegexEscape"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"pattern": {"text": "?\\b", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "invert": true}, "class": "WorkflowActionFoldLinesMatchingPattern"}], "name": "Focus on Tag...", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone9,1", "systemVersion": "12.1.4"}, "type": "wkflw", "public": true, "icon": "minicons-icons-datas-funnel.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22yt%22%2C%20%22description%22%3A%20%22After%20picking%20a%20tag%20from%20the%20list%20of%20tags%20in%20the%20current%20document%2C%20only%20tasks%20that%20contain%20this%20tag%20are%20shown%2C%20everything%20else%20is%20hidden%20%28folded%29.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20editor%5Cnimport%20re%5Cn%5Cntext%20%3D%20editor.get_text%28%29%5Cntags%20%3D%20sorted%28set%28re.findall%28%27%40%5C%5Cw%2B%27%2C%20text%29%29%29%5Cnif%20len%28tags%29%20%3D%3D%200%3A%5Cn%5Ctimport%20console%5Cn%5Ctconsole.hud_alert%28%27No%20Tags%20Found%27%2C%20%27error%27%29%5Cn%5Ctworkflow.stop%28%29%5Cnelse%3A%5Cn%5Ctworkflow.set_output%28%27%5C%5Cn%27.join%28tags%29%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22list%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Select%20Tag%22%2C%20%22showInPopover%22%3A%20false%2C%20%22allowMultipleSelection%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionSelectFromList%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionRegexEscape%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22pattern%22%3A%20%7B%22text%22%3A%20%22%3F%5C%5Cb%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22invert%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionFoldLinesMatchingPattern%22%7D%5D%2C%20%22name%22%3A%20%22Focus%20on%20Tag...%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone9%2C1%22%2C%20%22systemVersion%22%3A%20%2212.1.4%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-datas-funnel.png%22%7D", "description": "After picking a tag from the list of tags in the current document, only tasks that contain this tag are shown, everything else is hidden (folded).", "title": "Focus on Tag..."}, {"url": "http://editorial-app.appspot.com/workflow/5774998027370496/2sGRn1gUnmE", "workflow_data": {"username": "", "description": "", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionGetClipboard"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"html": {"text": "<!DOCTYPE html>\n<html>\n<head><meta charset=\"utf-8\"/></head>\n<body>\n?\n</body>\n</html>", "tokenRanges": {"{67, 1}": "Input"}, "type": "advancedText"}, "baseURL": "", "title": "Preview HTML"}, "class": "WorkflowActionShowHTMLPreview"}], "name": "Preview_html_from_clipboard", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad7,4", "systemVersion": "12.1"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionGetClipboard%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22html%22%3A%20%7B%22text%22%3A%20%22%3C%21DOCTYPE%20html%3E%5Cn%3Chtml%3E%5Cn%3Chead%3E%3Cmeta%20charset%3D%5C%22utf-8%5C%22%2F%3E%3C%2Fhead%3E%5Cn%3Cbody%3E%5Cn%3F%5Cn%3C%2Fbody%3E%5Cn%3C%2Fhtml%3E%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B67%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22baseURL%22%3A%20%22%22%2C%20%22title%22%3A%20%22Preview%20HTML%22%7D%2C%20%22class%22%3A%20%22WorkflowActionShowHTMLPreview%22%7D%5D%2C%20%22name%22%3A%20%22Preview_html_from_clipboard%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad7%2C4%22%2C%20%22systemVersion%22%3A%20%2212.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "", "title": "Preview_html_from_clipboard"}, {"url": "http://editorial-app.appspot.com/workflow/5887711122554880/XVlX7jhsmvI", "workflow_data": {"username": "pursuitofefficiency", "name": "Get Quote", "description": "Type a few words from a quote and an author's last name to pull the quote from GoodReads.\n\nIf no text is selected, it will use the current line.\nIf there are no results on GoodReads, it will run a Google Search on the In-App Browser.\n\nI like to use the workflow inline by using the abbreviation \"gqt\". You can also select text and send it to the workflow using a shortcut key via a keyboard or manually tapping it.", "actions": [{"customTitle": "No Text Selected - Select Line", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:selection"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "pauseWithoutShowingParameters": false, "colorLabel": 2, "subActions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"numberOfSteps": {"text": "1", "tokenRanges": {}, "type": "advancedText"}, "direction": 2, "unit": 1}, "class": "WorkflowActionExtendSelection"}, {"customTitle": "", "parameters": {}, "pauseWithoutShowingParameters": false, "colorLabel": 2, "class": "WorkflowActionConditionEnd", "pauseBeforeRunning": false}], "class": "WorkflowActionCondition", "pauseBeforeRunning": false}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 0, "foldedTextOption": 0, "selectEntireLines": true}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionURLEscape"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "userQuote", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "https://www.goodreads.com/search?utf8=%E2%9C%93&q=?&search_type=quotes", "tokenRanges": {"{50, 1}": "userQuote"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "fullLink", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"customTitle": "BS4 generate dictionary", "parameters": {"script": "#coding: utf-8\nimport workflow\nfrom bs4 import BeautifulSoup\nimport requests\nimport console\nimport re\n\nfullLink = workflow.get_variable('fullLink')\n\nr = requests.get(fullLink)\n\ndata = r.text\n\nsoup = BeautifulSoup(data)\n\nsource = {}\n\nquote_soup = soup.find(\"div\", {\"class\": \"quoteText\"})\n\ndef cleanhtml(raw_html):\n  cleanr = re.compile('<.*?>')\n  cleantext = re.sub(cleanr, '', raw_html)\n  return cleantext\n\nquote_soup_string = cleanhtml(str(quote_soup))\n\nworkflow.set_output(quote_soup_string)\n"}, "pauseWithoutShowingParameters": false, "colorLabel": 4, "class": "WorkflowActionRunScript", "pauseBeforeRunning": false}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionRemoveWhitespace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 2, "find": {"text": "\\s", "tokenRanges": {}, "type": "advancedText"}, "replace": {"text": " ", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "originalResult", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 0, "find": {"text": "                                  \u2014                   ", "tokenRanges": {}, "type": "advancedText"}, "replace": {"text": "   \n- ", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "\n> ?\n[[More Results](?)]", "tokenRanges": {"{3, 1}": "Input", "{21, 1}": "fullLink"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "fullOutput", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "originalResult"}, "type": "advancedText"}, "expression2": {"text": "None", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "pauseWithoutShowingParameters": false, "subActions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"showHUD": false, "HUDTitle": ""}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}], "class": "WorkflowActionCondition", "pauseBeforeRunning": false}, {"customTitle": "Google selection", "parameters": {"expression1": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "pauseWithoutShowingParameters": false, "colorLabel": 1, "subActions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"duration": 0, "HUDText": {"text": "No result found", "tokenRanges": {}, "type": "advancedText"}, "icon": 1}, "class": "WorkflowActionShowHUD"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:selection"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"searchTerm": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:selection"}, "type": "advancedText"}}, "class": "WorkflowActionSearchInBrowser"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:selection"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"numberOfSteps": {"text": "1", "tokenRanges": {}, "type": "advancedText"}, "direction": 2, "unit": 1}, "class": "WorkflowActionExtendSelection"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"searchTerm": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:selection"}, "type": "advancedText"}}, "class": "WorkflowActionSearchInBrowser"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"customTitle": "", "parameters": {}, "pauseWithoutShowingParameters": false, "colorLabel": 1, "class": "WorkflowActionConditionEnd", "pauseBeforeRunning": false}], "class": "WorkflowActionCondition", "pauseBeforeRunning": false}], "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone10,2", "systemVersion": "12.1.2"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_MESSAGE.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22pursuitofefficiency%22%2C%20%22name%22%3A%20%22Get%20Quote%22%2C%20%22description%22%3A%20%22Type%20a%20few%20words%20from%20a%20quote%20and%20an%20author%27s%20last%20name%20to%20pull%20the%20quote%20from%20GoodReads.%5Cn%5CnIf%20no%20text%20is%20selected%2C%20it%20will%20use%20the%20current%20line.%5CnIf%20there%20are%20no%20results%20on%20GoodReads%2C%20it%20will%20run%20a%20Google%20Search%20on%20the%20In-App%20Browser.%5Cn%5CnI%20like%20to%20use%20the%20workflow%20inline%20by%20using%20the%20abbreviation%20%5C%22gqt%5C%22.%20You%20can%20also%20select%20text%20and%20send%20it%20to%20the%20workflow%20using%20a%20shortcut%20key%20via%20a%20keyboard%20or%20manually%20tapping%20it.%22%2C%20%22actions%22%3A%20%5B%7B%22customTitle%22%3A%20%22No%20Text%20Selected%20-%20Select%20Line%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Aselection%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%202%2C%20%22subActions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22numberOfSteps%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22direction%22%3A%202%2C%20%22unit%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionExtendSelection%22%7D%2C%20%7B%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%202%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%5D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%200%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionURLEscape%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22userQuote%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22https%3A%2F%2Fwww.goodreads.com%2Fsearch%3Futf8%3D%25E2%259C%2593%26q%3D%3F%26search_type%3Dquotes%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B50%2C%201%7D%22%3A%20%22userQuote%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22fullLink%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22customTitle%22%3A%20%22BS4%20generate%20dictionary%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnfrom%20bs4%20import%20BeautifulSoup%5Cnimport%20requests%5Cnimport%20console%5Cnimport%20re%5Cn%5CnfullLink%20%3D%20workflow.get_variable%28%27fullLink%27%29%5Cn%5Cnr%20%3D%20requests.get%28fullLink%29%5Cn%5Cndata%20%3D%20r.text%5Cn%5Cnsoup%20%3D%20BeautifulSoup%28data%29%5Cn%5Cnsource%20%3D%20%7B%7D%5Cn%5Cnquote_soup%20%3D%20soup.find%28%5C%22div%5C%22%2C%20%7B%5C%22class%5C%22%3A%20%5C%22quoteText%5C%22%7D%29%5Cn%5Cndef%20cleanhtml%28raw_html%29%3A%5Cn%20%20cleanr%20%3D%20re.compile%28%27%3C.%2A%3F%3E%27%29%5Cn%20%20cleantext%20%3D%20re.sub%28cleanr%2C%20%27%27%2C%20raw_html%29%5Cn%20%20return%20cleantext%5Cn%5Cnquote_soup_string%20%3D%20cleanhtml%28str%28quote_soup%29%29%5Cn%5Cnworkflow.set_output%28quote_soup_string%29%5Cn%22%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%204%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionRemoveWhitespace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%202%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%5C%5Cs%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%20%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22originalResult%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%200%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cu2014%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%20%20%20%5Cn-%20%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%5Cn%3E%20%3F%5Cn%5B%5BMore%20Results%5D%28%3F%29%5D%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B3%2C%201%7D%22%3A%20%22Input%22%2C%20%22%7B21%2C%201%7D%22%3A%20%22fullLink%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22fullOutput%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22originalResult%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22None%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22subActions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20false%2C%20%22HUDTitle%22%3A%20%22%22%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%5D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%2C%20%7B%22customTitle%22%3A%20%22Google%20selection%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%201%2C%20%22subActions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22duration%22%3A%200%2C%20%22HUDText%22%3A%20%7B%22text%22%3A%20%22No%20result%20found%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22icon%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionShowHUD%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Aselection%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22searchTerm%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Aselection%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionSearchInBrowser%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Aselection%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22numberOfSteps%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22direction%22%3A%202%2C%20%22unit%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionExtendSelection%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22searchTerm%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Aselection%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionSearchInBrowser%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22colorLabel%22%3A%201%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%5D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%5D%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone10%2C2%22%2C%20%22systemVersion%22%3A%20%2212.1.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_MESSAGE.png%22%7D", "description": "Type a few words from a quote and an author's last name to pull the quote from GoodReads.\n\nIf no text is selected, it will use the current line.\nIf there are no results on GoodReads, it will run a Google Search on the In-App Browser.\n\nI like to use the workflow inline by using the abbreviation \"gqt\". You can also select text and send it to the workflow using a shortcut key via a keyboard or manually tapping it.", "title": "Get Quote"}, {"url": "http://editorial-app.appspot.com/workflow/5867327274876928/UkAFn6qfZXE", "workflow_data": {"username": "", "description": "This Workflow accepts TaskPaper text with \u00abplaceholder\u00bb tokens and prompts for you to enter final values, then creates a project in OmniFocus 2.14 for iOS using those tokens.\n\nFor example, given this input:\n\n- \u00abproject_name\u00bb @parallel(false) @due(\u00abdue\u00bb)\n        - This task needs to be done at least 1 week before \u00abproject_name\u00bb is due @due(\u00abdue\u00bb -1w)\n        - This task needs to be done at least 2 days before \u00abproject_name\u00bb is due @due(\u00abdue\u00bb -2d)\n\nYou'll be prompted to enter values for \u00abproject_name\u00bb and \u00abdue\u00bb. If you enter \"Phonewave 1.2\" and \"next Thursday\", it will create a new \"Phonewave 1.2\" project in OmniFocus that is due next Thursday, and has two tasks already filled with due dates of this Thursday and next Tuesday.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "emptySelectionOption": 1, "foldedTextOption": 0, "selectEntireLines": false}, "class": "WorkflowActionGetSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport dialogs\nimport re\n\naction_in = workflow.get_input()\n\n# Find placeholders\nknown_placeholders = set()\nplaceholders = []\nfields = []\nfor placeholder_match in re.finditer(u\"\u00ab(.+?)\u00bb\", action_in):\n\tplaceholder = placeholder_match.group(1)\n\tif placeholder not in known_placeholders:\n\t\tknown_placeholders.add(placeholder)\n\t\tplaceholders.append(placeholder)\n\t\tfields.append({'type': 'text', 'title': placeholder, 'key': placeholder})\n\naction_out = action_in\n\n# Substitute the placeholders\nif len(placeholders) == 0:\n\tif dialogs.alert(u\"No template placeholders were found.\", u\"\"\"\nIf your project text has placeholders (that look like \u00abthis\u00bb), this script will prompt for values you'd like to substitute for them.\n\"\"\", u\"Continue\") != 1:\n\t  workflow.stop()\n\nelse:\n\tvalues = dialogs.form_dialog(title='', fields=fields, sections=None)\n\tif values:\n\t\tfor key in values:\n\t\t\taction_out = re.sub(u\"\u00ab\" + key + \"\u00bb\", values[key], action_out)\n\nworkflow.set_output(action_out)\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionURLEscape"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "encodedContent", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"URL": {"text": "omnifocus://x-callback-url/paste?target=projects&content=?", "tokenRanges": {"{57, 1}": "encodedContent"}, "type": "advancedText"}, "waitUntilLoaded": false, "revealBrowserAutomatically": true, "openIn": 0, "tabOption": 0}, "class": "WorkflowActionOpenURL"}], "name": "New OmniFocus Project", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone11,2", "systemVersion": "12.1.3"}, "type": "wkflw", "public": true, "icon": "minicons-icons-validation-tick-circle-3.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22This%20Workflow%20accepts%20TaskPaper%20text%20with%20%5Cu00abplaceholder%5Cu00bb%20tokens%20and%20prompts%20for%20you%20to%20enter%20final%20values%2C%20then%20creates%20a%20project%20in%20OmniFocus%202.14%20for%20iOS%20using%20those%20tokens.%5Cn%5CnFor%20example%2C%20given%20this%20input%3A%5Cn%5Cn-%20%5Cu00abproject_name%5Cu00bb%20%40parallel%28false%29%20%40due%28%5Cu00abdue%5Cu00bb%29%5Cn%20%20%20%20%20%20%20%20-%20This%20task%20needs%20to%20be%20done%20at%20least%201%20week%20before%20%5Cu00abproject_name%5Cu00bb%20is%20due%20%40due%28%5Cu00abdue%5Cu00bb%20-1w%29%5Cn%20%20%20%20%20%20%20%20-%20This%20task%20needs%20to%20be%20done%20at%20least%202%20days%20before%20%5Cu00abproject_name%5Cu00bb%20is%20due%20%40due%28%5Cu00abdue%5Cu00bb%20-2d%29%5Cn%5CnYou%27ll%20be%20prompted%20to%20enter%20values%20for%20%5Cu00abproject_name%5Cu00bb%20and%20%5Cu00abdue%5Cu00bb.%20If%20you%20enter%20%5C%22Phonewave%201.2%5C%22%20and%20%5C%22next%20Thursday%5C%22%2C%20it%20will%20create%20a%20new%20%5C%22Phonewave%201.2%5C%22%20project%20in%20OmniFocus%20that%20is%20due%20next%20Thursday%2C%20and%20has%20two%20tasks%20already%20filled%20with%20due%20dates%20of%20this%20Thursday%20and%20next%20Tuesday.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22emptySelectionOption%22%3A%201%2C%20%22foldedTextOption%22%3A%200%2C%20%22selectEntireLines%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20dialogs%5Cnimport%20re%5Cn%5Cnaction_in%20%3D%20workflow.get_input%28%29%5Cn%5Cn%23%20Find%20placeholders%5Cnknown_placeholders%20%3D%20set%28%29%5Cnplaceholders%20%3D%20%5B%5D%5Cnfields%20%3D%20%5B%5D%5Cnfor%20placeholder_match%20in%20re.finditer%28u%5C%22%5Cu00ab%28.%2B%3F%29%5Cu00bb%5C%22%2C%20action_in%29%3A%5Cn%5Ctplaceholder%20%3D%20placeholder_match.group%281%29%5Cn%5Ctif%20placeholder%20not%20in%20known_placeholders%3A%5Cn%5Ct%5Ctknown_placeholders.add%28placeholder%29%5Cn%5Ct%5Ctplaceholders.append%28placeholder%29%5Cn%5Ct%5Ctfields.append%28%7B%27type%27%3A%20%27text%27%2C%20%27title%27%3A%20placeholder%2C%20%27key%27%3A%20placeholder%7D%29%5Cn%5Cnaction_out%20%3D%20action_in%5Cn%5Cn%23%20Substitute%20the%20placeholders%5Cnif%20len%28placeholders%29%20%3D%3D%200%3A%5Cn%5Ctif%20dialogs.alert%28u%5C%22No%20template%20placeholders%20were%20found.%5C%22%2C%20u%5C%22%5C%22%5C%22%5CnIf%20your%20project%20text%20has%20placeholders%20%28that%20look%20like%20%5Cu00abthis%5Cu00bb%29%2C%20this%20script%20will%20prompt%20for%20values%20you%27d%20like%20to%20substitute%20for%20them.%5Cn%5C%22%5C%22%5C%22%2C%20u%5C%22Continue%5C%22%29%20%21%3D%201%3A%5Cn%5Ct%20%20workflow.stop%28%29%5Cn%5Cnelse%3A%5Cn%5Ctvalues%20%3D%20dialogs.form_dialog%28title%3D%27%27%2C%20fields%3Dfields%2C%20sections%3DNone%29%5Cn%5Ctif%20values%3A%5Cn%5Ct%5Ctfor%20key%20in%20values%3A%5Cn%5Ct%5Ct%5Ctaction_out%20%3D%20re.sub%28u%5C%22%5Cu00ab%5C%22%20%2B%20key%20%2B%20%5C%22%5Cu00bb%5C%22%2C%20values%5Bkey%5D%2C%20action_out%29%5Cn%5Cnworkflow.set_output%28action_out%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionURLEscape%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22encodedContent%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22URL%22%3A%20%7B%22text%22%3A%20%22omnifocus%3A%2F%2Fx-callback-url%2Fpaste%3Ftarget%3Dprojects%26content%3D%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B57%2C%201%7D%22%3A%20%22encodedContent%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22waitUntilLoaded%22%3A%20false%2C%20%22revealBrowserAutomatically%22%3A%20true%2C%20%22openIn%22%3A%200%2C%20%22tabOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%5D%2C%20%22name%22%3A%20%22New%20OmniFocus%20Project%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone11%2C2%22%2C%20%22systemVersion%22%3A%20%2212.1.3%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-validation-tick-circle-3.png%22%7D", "description": "This Workflow accepts TaskPaper text with \u00abplaceholder\u00bb tokens and prompts for you to enter final values, then creates a project in OmniFocus 2.14 for iOS using those tokens.\n\nFor example, given this input:\n\n- \u00abproject_name\u00bb @parallel(false) @due(\u00abdue\u00bb)\n        - This task needs to be done at least 1 week before \u00abproject_name\u00bb is due @due(\u00abdue\u00bb -1w)\n        - This task needs to be done at least 2 days before \u00abproject_name\u00bb is due @due(\u00abdue\u00bb -2d)\n\nYou'll be prompted to enter values for \u00abproject_name\u00bb and \u00abdue\u00bb. If you enter \"Phonewave 1.2\" and \"next Thursday\", it will create a new \"Phonewave 1.2\" project in OmniFocus that is due next Thursday, and has two tasks already filled with due dates of this Thursday and next Tuesday.", "title": "New OmniFocus Project"}, {"url": "http://editorial-app.appspot.com/workflow/5794810308853760/BfYl7aBLnco", "workflow_data": {"username": "", "description": "Strip everything but the content of the Wrestling Observer Newsletter from the new website.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": false, "filename": "Observer Triage.md"}, "class": "WorkflowActionOpenDocument"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Clear Document", "parameters": {"11552F95-7E82-4F81-8675-EB075C363FA6": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F57AB033-7DA2-4C21-B0E6-599C2EFDD2A9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "AC53CBCA-B77E-485C-AA76-7B8528EE10AC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "71C2B25B-D91B-4E8B-BD40-538439419F7E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E6EABCE9-62D3-445F-A72F-E1DD7CE849F1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A6D5E49E-B3FB-4973-8041-FCA43A3CDACD": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "5916DCAE-ABFD-4946-9204-4044920B3F0F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F400F19E-2225-46AF-A8F5-BB84C1B06113": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [], "FB0E231A-2EF7-4AB1-97EE-D1CD21D7194F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "83171AC8-D3A9-43F4-B811-4409C6C90F24": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "24ED7E3B-E39E-4F7E-9875-D5E5BA95F12F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F730E2E4-26ED-4248-9046-D3BE36AE1C22": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "46317020-D2EE-45CB-967A-A22223D213E9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "DC10CEFD-4C26-42A2-B26C-DDB3EFDDB6E1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E126D42C-8943-4BD2-8FAF-56B6C87CA520": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9DCB6C20-340B-413B-BEE4-1D1F668ACF3D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9BF7CB4E-7876-4603-A02F-170F37E4CBE3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "B8FF89EA-3946-4068-8A55-5E233605EF9E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "AB137BBC-D43B-44BC-B7F8-E3118D44C5F8": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8A17CD36-6156-4BA3-B07F-F13C55B7F3FD": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "#coding: utf-8\nimport workflow\nimport editor\n\nparams = workflow.get_parameters()\naction_in = workflow.get_input()\n\ndoc_text = editor.get_text()\nreplacement = ''\n\neditor.replace_text(0,len(doc_text), replacement)\n\n\n", "2523DAEF-CB68-4968-A5F6-B149EFA75BE6": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "16410601-7DC0-4BD1-938B-65545C336505": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "582A1AEA-85AE-44C5-85BA-3FD056CDEE6E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "5FE7A2FB-690F-4A5D-8A4E-ABA1419A89F4": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "6793984D-2DDF-4DFB-BE09-F0C22B30C2AC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F0B2818D-0560-4CF3-AA91-BC21369B2733": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "DF0D7458-E4D3-4BA9-8C62-7E04E2CB5A89": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "AF05067B-C1E5-4AAC-AE2B-836405D19869": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "FEAC2448-F49E-495F-B561-DF00DF8D84BA": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9D233694-8084-4ACD-97C4-21DB3AD165A5": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "713A587A-8F88-4AEF-97E0-B461BD5038FB": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "AF145A8A-FEB9-46A8-95C9-7EB9AB596461": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "CE6D0450-02CE-427D-8211-6D2BDE4E2B4B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "19AAE58E-6486-4A81-8F79-5239FFE9FB07": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F7291BAC-A688-47AB-BBFC-1B9256AD1315": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "BAC6DCCA-22A8-49F2-9D97-E9ECF80B928C": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "7632BD69-40F2-43B3-B9D1-EB15C863008D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "ED9A35B9-30FB-43AA-94BE-CE541FD38E0A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "27C01BF9-D953-4985-AF5D-67F0975E3D46": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "97213812-73D6-48EF-BD24-1CDF4291A7D5": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9EBEA8F4-C689-4F6C-8B33-DE00454294BB": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "AECB7E96-999A-411D-A931-9FDE3413AF30": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3A67D70B-A8C6-4D49-A2FC-84927D2DDA63": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "5BD1A794-95EB-43C7-AF80-AAC7B16D2995": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "DC6027AB-9B75-4455-8688-7949FFD60FE8": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "5655CE02-91D2-4D6B-9862-5268D05B6536": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "50849896-8B91-40CE-A3AA-610F8D022B3B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3B339123-0C47-4AEE-B446-68CF8CAA311B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "884C50AD-772A-432E-884D-B070AD29D973": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E742BA66-27E5-42C4-BAA4-D2BA026BC8FE": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_subtitle__": "Clears all text in the current document", "5CAE3CC3-0C14-45DC-9CB9-243593708B56": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8FB80ED1-49D2-4C04-A87E-0DE94C6368CE": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8DDEADB7-5BA2-4FFB-9C5B-62E85B8D4C5F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "17D86554-CBF9-4B7F-9442-851A4B0C150F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A908D646-BC7D-45B9-94FE-BDDA9EF29720": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "67A3867E-3B51-4E7F-A436-B1A5AE4D9F3A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "CED7FEE6-E399-4332-8619-FA904E413860": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3B305999-79BF-45B7-8780-E7B1FE8233B5": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "318D8C71-AF02-49D0-8FC3-936FBC9D38B5": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionGetClipboard"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"outputOption": 1, "regex": {"text": "<div id=\"related-articles\">", "tokenRanges": {}, "type": "advancedText"}, "matchGroup": "", "searchTypeOption": 2}, "class": "WorkflowActionMatchRegularExpression"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 2, "find": {"text": "\\W\\d+", "tokenRanges": {}, "type": "advancedText"}, "replace": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "bottom", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"outputOption": 1, "regex": {"text": "<div class=\"line-break\"></div>", "tokenRanges": {}, "type": "advancedText"}, "matchGroup": "", "searchTypeOption": 2}, "class": "WorkflowActionMatchRegularExpression"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 2, "find": {"text": "\\d+\\W", "tokenRanges": {}, "type": "advancedText"}, "replace": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "top", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"range": {"text": "?:9999999999", "tokenRanges": {"{0, 1}": "bottom"}, "type": "advancedText"}}, "class": "WorkflowActionSelectRange"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"range": {"text": "0:?", "tokenRanges": {"{2, 1}": "top"}, "type": "advancedText"}}, "class": "WorkflowActionSelectRange"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "final", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionSetClipboard"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Clear Document", "parameters": {"0527F0CA-BD8C-402E-AD9B-CAEE4C1ADBFC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A6D5E49E-B3FB-4973-8041-FCA43A3CDACD": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_subtitle__": "Clears all text in the current document", "F57AB033-7DA2-4C21-B0E6-599C2EFDD2A9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "AB137BBC-D43B-44BC-B7F8-E3118D44C5F8": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "71C2B25B-D91B-4E8B-BD40-538439419F7E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "95D39812-A36B-4334-939B-9520E97E51F8": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E6EABCE9-62D3-445F-A72F-E1DD7CE849F1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "11552F95-7E82-4F81-8675-EB075C363FA6": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [], "FB0E231A-2EF7-4AB1-97EE-D1CD21D7194F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "B9EC12CC-C37F-4420-8ED2-C8A156558961": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E126D42C-8943-4BD2-8FAF-56B6C87CA520": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9DCB6C20-340B-413B-BEE4-1D1F668ACF3D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "CED7FEE6-E399-4332-8619-FA904E413860": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "B8FF89EA-3946-4068-8A55-5E233605EF9E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "5FE7A2FB-690F-4A5D-8A4E-ABA1419A89F4": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8FB80ED1-49D2-4C04-A87E-0DE94C6368CE": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "#coding: utf-8\nimport workflow\nimport editor\n\nparams = workflow.get_parameters()\naction_in = workflow.get_input()\n\ndoc_text = editor.get_text()\nreplacement = ''\n\neditor.replace_text(0,len(doc_text), replacement)\n\n\n", "7DD93167-D478-429A-9F64-36E971B28B93": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "2745F037-C8C3-4EAD-A9E6-637C2B3CEF89": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E0C21818-CBE5-4785-9E07-FABA8C259E79": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A9297A4F-CEE9-4158-AB18-2C5BBD6D82A9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "DF0D7458-E4D3-4BA9-8C62-7E04E2CB5A89": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "DC6027AB-9B75-4455-8688-7949FFD60FE8": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "FEAC2448-F49E-495F-B561-DF00DF8D84BA": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9D233694-8084-4ACD-97C4-21DB3AD165A5": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "22E99EA6-6594-4F81-BF7C-8BE1E5F160DD": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "713A587A-8F88-4AEF-97E0-B461BD5038FB": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "83171AC8-D3A9-43F4-B811-4409C6C90F24": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F7291BAC-A688-47AB-BBFC-1B9256AD1315": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "BAC6DCCA-22A8-49F2-9D97-E9ECF80B928C": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "83DB92CB-E1B2-4B1D-8132-4374A9AC1FC4": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "2CE109E4-C05E-452B-BFA8-5E08DC1FA64E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "27C01BF9-D953-4985-AF5D-67F0975E3D46": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "28A8A40C-FA57-4105-9F09-06C30FCB5803": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9EBEA8F4-C689-4F6C-8B33-DE00454294BB": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3A67D70B-A8C6-4D49-A2FC-84927D2DDA63": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "B8BB40F6-D295-4473-9776-4C0846B1A52E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "5655CE02-91D2-4D6B-9862-5268D05B6536": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "ED9A35B9-30FB-43AA-94BE-CE541FD38E0A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "15EA79B3-5D6B-473E-B02C-35F1DF4BF1DB": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E742BA66-27E5-42C4-BAA4-D2BA026BC8FE": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "50849896-8B91-40CE-A3AA-610F8D022B3B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "5916DCAE-ABFD-4946-9204-4044920B3F0F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9F0BCF1D-5663-48A2-816E-9E7AA30E1A4A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3B339123-0C47-4AEE-B446-68CF8CAA311B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8DDEADB7-5BA2-4FFB-9C5B-62E85B8D4C5F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "501EB775-D530-4B68-A1FD-27A2AF060CA3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A908D646-BC7D-45B9-94FE-BDDA9EF29720": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3B305999-79BF-45B7-8780-E7B1FE8233B5": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "579A8769-ADCC-45D8-B2E9-2DCEC73BBD89": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "318D8C71-AF02-49D0-8FC3-936FBC9D38B5": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}], "name": "Process Observer", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad4,1", "systemVersion": "10.0.2"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Strip%20everything%20but%20the%20content%20of%20the%20Wrestling%20Observer%20Newsletter%20from%20the%20new%20website.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20false%2C%20%22filename%22%3A%20%22Observer%20Triage.md%22%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenDocument%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Clear%20Document%22%2C%20%22parameters%22%3A%20%7B%2211552F95-7E82-4F81-8675-EB075C363FA6%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F57AB033-7DA2-4C21-B0E6-599C2EFDD2A9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22AC53CBCA-B77E-485C-AA76-7B8528EE10AC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2271C2B25B-D91B-4E8B-BD40-538439419F7E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E6EABCE9-62D3-445F-A72F-E1DD7CE849F1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A6D5E49E-B3FB-4973-8041-FCA43A3CDACD%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225916DCAE-ABFD-4946-9204-4044920B3F0F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F400F19E-2225-46AF-A8F5-BB84C1B06113%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%5D%2C%20%22FB0E231A-2EF7-4AB1-97EE-D1CD21D7194F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2283171AC8-D3A9-43F4-B811-4409C6C90F24%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2224ED7E3B-E39E-4F7E-9875-D5E5BA95F12F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F730E2E4-26ED-4248-9046-D3BE36AE1C22%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2246317020-D2EE-45CB-967A-A22223D213E9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22DC10CEFD-4C26-42A2-B26C-DDB3EFDDB6E1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E126D42C-8943-4BD2-8FAF-56B6C87CA520%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229DCB6C20-340B-413B-BEE4-1D1F668ACF3D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229BF7CB4E-7876-4603-A02F-170F37E4CBE3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22B8FF89EA-3946-4068-8A55-5E233605EF9E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22AB137BBC-D43B-44BC-B7F8-E3118D44C5F8%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228A17CD36-6156-4BA3-B07F-F13C55B7F3FD%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20editor%5Cn%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cnaction_in%20%3D%20workflow.get_input%28%29%5Cn%5Cndoc_text%20%3D%20editor.get_text%28%29%5Cnreplacement%20%3D%20%27%27%5Cn%5Cneditor.replace_text%280%2Clen%28doc_text%29%2C%20replacement%29%5Cn%5Cn%5Cn%22%2C%20%222523DAEF-CB68-4968-A5F6-B149EFA75BE6%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2216410601-7DC0-4BD1-938B-65545C336505%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22582A1AEA-85AE-44C5-85BA-3FD056CDEE6E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225FE7A2FB-690F-4A5D-8A4E-ABA1419A89F4%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%226793984D-2DDF-4DFB-BE09-F0C22B30C2AC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F0B2818D-0560-4CF3-AA91-BC21369B2733%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22DF0D7458-E4D3-4BA9-8C62-7E04E2CB5A89%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22AF05067B-C1E5-4AAC-AE2B-836405D19869%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22FEAC2448-F49E-495F-B561-DF00DF8D84BA%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229D233694-8084-4ACD-97C4-21DB3AD165A5%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22713A587A-8F88-4AEF-97E0-B461BD5038FB%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22AF145A8A-FEB9-46A8-95C9-7EB9AB596461%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22CE6D0450-02CE-427D-8211-6D2BDE4E2B4B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2219AAE58E-6486-4A81-8F79-5239FFE9FB07%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F7291BAC-A688-47AB-BBFC-1B9256AD1315%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22BAC6DCCA-22A8-49F2-9D97-E9ECF80B928C%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%227632BD69-40F2-43B3-B9D1-EB15C863008D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ED9A35B9-30FB-43AA-94BE-CE541FD38E0A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2227C01BF9-D953-4985-AF5D-67F0975E3D46%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2297213812-73D6-48EF-BD24-1CDF4291A7D5%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229EBEA8F4-C689-4F6C-8B33-DE00454294BB%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22AECB7E96-999A-411D-A931-9FDE3413AF30%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223A67D70B-A8C6-4D49-A2FC-84927D2DDA63%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225BD1A794-95EB-43C7-AF80-AAC7B16D2995%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22DC6027AB-9B75-4455-8688-7949FFD60FE8%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225655CE02-91D2-4D6B-9862-5268D05B6536%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2250849896-8B91-40CE-A3AA-610F8D022B3B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223B339123-0C47-4AEE-B446-68CF8CAA311B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22884C50AD-772A-432E-884D-B070AD29D973%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E742BA66-27E5-42C4-BAA4-D2BA026BC8FE%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_subtitle__%22%3A%20%22Clears%20all%20text%20in%20the%20current%20document%22%2C%20%225CAE3CC3-0C14-45DC-9CB9-243593708B56%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228FB80ED1-49D2-4C04-A87E-0DE94C6368CE%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228DDEADB7-5BA2-4FFB-9C5B-62E85B8D4C5F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2217D86554-CBF9-4B7F-9442-851A4B0C150F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A908D646-BC7D-45B9-94FE-BDDA9EF29720%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2267A3867E-3B51-4E7F-A436-B1A5AE4D9F3A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22CED7FEE6-E399-4332-8619-FA904E413860%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223B305999-79BF-45B7-8780-E7B1FE8233B5%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22318D8C71-AF02-49D0-8FC3-936FBC9D38B5%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionGetClipboard%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22outputOption%22%3A%201%2C%20%22regex%22%3A%20%7B%22text%22%3A%20%22%3Cdiv%20id%3D%5C%22related-articles%5C%22%3E%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22matchGroup%22%3A%20%22%22%2C%20%22searchTypeOption%22%3A%202%7D%2C%20%22class%22%3A%20%22WorkflowActionMatchRegularExpression%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%202%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%5C%5CW%5C%5Cd%2B%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22bottom%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22outputOption%22%3A%201%2C%20%22regex%22%3A%20%7B%22text%22%3A%20%22%3Cdiv%20class%3D%5C%22line-break%5C%22%3E%3C%2Fdiv%3E%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22matchGroup%22%3A%20%22%22%2C%20%22searchTypeOption%22%3A%202%7D%2C%20%22class%22%3A%20%22WorkflowActionMatchRegularExpression%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%202%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%5C%5Cd%2B%5C%5CW%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22top%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22range%22%3A%20%7B%22text%22%3A%20%22%3F%3A9999999999%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22bottom%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionSelectRange%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22range%22%3A%20%7B%22text%22%3A%20%220%3A%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B2%2C%201%7D%22%3A%20%22top%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionSelectRange%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22final%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionSetClipboard%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Clear%20Document%22%2C%20%22parameters%22%3A%20%7B%220527F0CA-BD8C-402E-AD9B-CAEE4C1ADBFC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A6D5E49E-B3FB-4973-8041-FCA43A3CDACD%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_subtitle__%22%3A%20%22Clears%20all%20text%20in%20the%20current%20document%22%2C%20%22F57AB033-7DA2-4C21-B0E6-599C2EFDD2A9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22AB137BBC-D43B-44BC-B7F8-E3118D44C5F8%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2271C2B25B-D91B-4E8B-BD40-538439419F7E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2295D39812-A36B-4334-939B-9520E97E51F8%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E6EABCE9-62D3-445F-A72F-E1DD7CE849F1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2211552F95-7E82-4F81-8675-EB075C363FA6%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%5D%2C%20%22FB0E231A-2EF7-4AB1-97EE-D1CD21D7194F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22B9EC12CC-C37F-4420-8ED2-C8A156558961%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E126D42C-8943-4BD2-8FAF-56B6C87CA520%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229DCB6C20-340B-413B-BEE4-1D1F668ACF3D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22CED7FEE6-E399-4332-8619-FA904E413860%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22B8FF89EA-3946-4068-8A55-5E233605EF9E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225FE7A2FB-690F-4A5D-8A4E-ABA1419A89F4%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228FB80ED1-49D2-4C04-A87E-0DE94C6368CE%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20editor%5Cn%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cnaction_in%20%3D%20workflow.get_input%28%29%5Cn%5Cndoc_text%20%3D%20editor.get_text%28%29%5Cnreplacement%20%3D%20%27%27%5Cn%5Cneditor.replace_text%280%2Clen%28doc_text%29%2C%20replacement%29%5Cn%5Cn%5Cn%22%2C%20%227DD93167-D478-429A-9F64-36E971B28B93%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%222745F037-C8C3-4EAD-A9E6-637C2B3CEF89%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E0C21818-CBE5-4785-9E07-FABA8C259E79%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A9297A4F-CEE9-4158-AB18-2C5BBD6D82A9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22DF0D7458-E4D3-4BA9-8C62-7E04E2CB5A89%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22DC6027AB-9B75-4455-8688-7949FFD60FE8%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22FEAC2448-F49E-495F-B561-DF00DF8D84BA%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229D233694-8084-4ACD-97C4-21DB3AD165A5%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2222E99EA6-6594-4F81-BF7C-8BE1E5F160DD%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22713A587A-8F88-4AEF-97E0-B461BD5038FB%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2283171AC8-D3A9-43F4-B811-4409C6C90F24%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F7291BAC-A688-47AB-BBFC-1B9256AD1315%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22BAC6DCCA-22A8-49F2-9D97-E9ECF80B928C%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2283DB92CB-E1B2-4B1D-8132-4374A9AC1FC4%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%222CE109E4-C05E-452B-BFA8-5E08DC1FA64E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2227C01BF9-D953-4985-AF5D-67F0975E3D46%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2228A8A40C-FA57-4105-9F09-06C30FCB5803%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229EBEA8F4-C689-4F6C-8B33-DE00454294BB%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223A67D70B-A8C6-4D49-A2FC-84927D2DDA63%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22B8BB40F6-D295-4473-9776-4C0846B1A52E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225655CE02-91D2-4D6B-9862-5268D05B6536%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ED9A35B9-30FB-43AA-94BE-CE541FD38E0A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2215EA79B3-5D6B-473E-B02C-35F1DF4BF1DB%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E742BA66-27E5-42C4-BAA4-D2BA026BC8FE%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2250849896-8B91-40CE-A3AA-610F8D022B3B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225916DCAE-ABFD-4946-9204-4044920B3F0F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229F0BCF1D-5663-48A2-816E-9E7AA30E1A4A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223B339123-0C47-4AEE-B446-68CF8CAA311B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228DDEADB7-5BA2-4FFB-9C5B-62E85B8D4C5F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22501EB775-D530-4B68-A1FD-27A2AF060CA3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A908D646-BC7D-45B9-94FE-BDDA9EF29720%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223B305999-79BF-45B7-8780-E7B1FE8233B5%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22579A8769-ADCC-45D8-B2E9-2DCEC73BBD89%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22318D8C71-AF02-49D0-8FC3-936FBC9D38B5%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%5D%2C%20%22name%22%3A%20%22Process%20Observer%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad4%2C1%22%2C%20%22systemVersion%22%3A%20%2210.0.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "Strip everything but the content of the Wrestling Observer Newsletter from the new website.", "title": "Process Observer"}, {"url": "http://editorial-app.appspot.com/workflow/5862341220499456/TE9K02l6jEE", "workflow_data": {"username": "ROBERT SUMNER JR", "description": "", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"content": {"text": "?", "tokenRanges": {"{0, 1}": "%cursor"}, "type": "advancedText"}, "open": true, "filename": {"text": "Untitled.txt?", "tokenRanges": {"{12, 1}": "Clipboard"}, "type": "advancedText"}}, "class": "WorkflowActionCreateNewDocument"}], "name": "My Template", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone8,4", "systemVersion": "12.1.2"}, "type": "edtpl", "public": true, "icon": "minicons-icons-text-left-align.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22ROBERT%20SUMNER%20JR%22%2C%20%22description%22%3A%20%22%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22content%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25cursor%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22open%22%3A%20true%2C%20%22filename%22%3A%20%7B%22text%22%3A%20%22Untitled.txt%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B12%2C%201%7D%22%3A%20%22Clipboard%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCreateNewDocument%22%7D%5D%2C%20%22name%22%3A%20%22My%20Template%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone8%2C4%22%2C%20%22systemVersion%22%3A%20%2212.1.2%22%7D%2C%20%22type%22%3A%20%22edtpl%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-text-left-align.png%22%7D", "description": "", "title": "My Template"}, {"url": "http://editorial-app.appspot.com/workflow/5821259388551168/3oAXgG4gakU", "workflow_data": {"username": "ROBERT SUMNER JR", "description": "This is a collection of several unrelated custom actions.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "READ ME\u2757", "parameters": {"text": {"text": "This is not an actual workflow, it just contains a collection of custom actions that are meant to be saved as presets.\n\nRunning this won't do anything because of the following 'Stop' action.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "---------------------------------------------------------------------------------------", "parameters": {"showHUD": false, "HUDTitle": ""}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Send to Drafts", "parameters": {"0217F8EB-80EF-4A2C-A9E5-7E18DC6C3248": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "1C841272-0445-4065-853D-785C8DBE61D3": true, "__custom_action_parameters__": [{"title": "Text", "type": "advancedText", "key": "EC988DCA-5C83-43C2-9CD6-1DF50A0A448D", "height": 120}, {"type": "switch", "key": "1C841272-0445-4065-853D-785C8DBE61D3", "title": "Return to Editorial"}], "30D112E0-6074-4B9E-9F59-5EFA908FC9A1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "AECCCF4E-41A4-4C07-ABB0-45DF485AFD2D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9A5C7E4F-0E3F-4918-A7B2-A9F790F8BF54": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A035F565-D7EA-4F35-86F2-74B8B91721C2": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F19F7720-C188-42BA-B4F7-8A94251CBB62": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "291DA446-1159-45ED-AE69-FB0F73E3CB04": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "7EC41E5D-8181-43D3-90A6-BA7A729AD37A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E05EB8C4-3C06-48D4-91C9-E5EA271879E5": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "D890C0A9-6A00-4D3F-A997-40B6614EB9E2": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "FD8A2171-5D14-4E7B-BEE4-4440DBA53C6C": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "EC988DCA-5C83-43C2-9CD6-1DF50A0A448D": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "39FDFB9D-8D85-4A8B-A546-D7451F978EDC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "6091BAEA-7008-4A83-BC09-8B5515F8E323": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "30B1D86A-AC53-4145-8ABB-481688A09E30": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "#NOTE: Drafts doesn't support a 'success' callback URL when no action is triggered, so if 'Return to Editorial' is on, the text is also copied to the clipboard.\n\nimport workflow\nimport webbrowser\nfrom urllib import quote\n\nparams = workflow.get_parameters()\ntext = params.get('Text', None)\ncallback = params.get('Return to Editorial', False)\n\nif text:\n\turl = 'drafts://x-callback-url/create?text=' + quote(text)\n\tif callback:\n\t\turl += '&action=' + quote('Copy to Clipboard')\n\t\turl += '&x-success=' + quote('editorial://')\n\tsuccess = webbrowser.open(url)\n\tif not success:\n\t\timport console\n\t\tconsole.hud_alert('Drafts not installed', 'error', 1.5)\n", "1E231904-26B6-41A8-BB69-7583AFB757A8": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "6FA027B3-2E1F-46DA-9CF8-D4EEA393730D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "7A90A31B-EC7D-44F5-89B5-63A8CB4C207F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A0980BAA-E704-49D7-962E-DAB627E9F402": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Post with TweetBot", "parameters": {"DF194431-87BB-4812-80C3-9E5AB43F2C37": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "CAE1B3C9-DF24-4AA3-8BE6-C1068A34CE7C": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"placeholder": "(Default Account)", "type": "basicText", "key": "CEB04CDB-BADD-4409-9B8F-8E073222E446", "title": "Account"}, {"title": "Tweet", "type": "advancedText", "key": "0A5A0AF9-F928-44FC-B995-EC4087050735", "height": 100}, {"type": "switch", "key": "99FAF415-0381-4238-B15F-4D5C50F6B413", "title": "Return to Editorial"}], "EE6DFE6A-3257-42AF-AFA6-C11ADE65559D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "99FAF415-0381-4238-B15F-4D5C50F6B413": true, "CDB2FAE9-2230-4B4B-ABA2-673267CA0166": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3F5656FF-CA7E-42BF-9B5A-56ACD9F7E5A7": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "7ABE0A9A-6749-4C3B-8719-915584215A14": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A494C1C1-6722-401A-ACE9-7A18E4E74E55": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "CEB04CDB-BADD-4409-9B8F-8E073222E446": "", "534B636B-1D5F-4A10-B4C5-32CBFC0AF3C6": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A3B2161D-4604-43D8-A6B9-18A62C7CA6C9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F09FE15E-180F-4C30-9ADF-008BFC540D2B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "D0AB689E-465F-4E6B-A61D-AFED521EE8E9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "49F9F435-2FDE-463F-BCBB-AE681D4578B2": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "0C4BA658-9E6E-4404-83DE-F909D40CDEF1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E511A644-13BE-47B1-9D71-511D750D6BB4": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "0A5A0AF9-F928-44FC-B995-EC4087050735": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "222622CB-9B38-42A7-847F-43A98BA19764": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "import workflow\nimport webbrowser\nfrom urllib import quote\n\nparams = workflow.get_parameters()\n\naccount = params.get('Account', None)\ntweet = params.get('Tweet', None)\ncallback = params.get('Return to Editorial', False)\n\n#tweetbot://<screenname>/post?text=<text>&callback_url=<url>&in_reply_to_status_id=<tweet_id>\n\nif tweet:\n\turl = 'tweetbot://'\n\tif account:\n\t\turl += quote(account)\n\turl += '/post?text=' + quote(tweet)\n\tif callback:\n\t\turl += '&callback_url=' + quote('editorial://')\n\twebbrowser.open(url)\n\n", "156F61D9-0566-48F6-A7B9-4D349BE78AE3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "674B8A7B-F599-45F0-BAB8-71ED1E45A19E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "36D42353-DB32-4C63-B266-EC5AADA5B00D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9EB2C8A0-07D7-436C-92BA-7B74777BBD34": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "81A29078-05D8-4975-B647-77E494DBF3BC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "204F7CD1-A4FF-41FD-AAA0-DDC598476C04": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "51D1C493-CFCE-44F5-BA52-108C97E54933": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Add to Evernote", "parameters": {"0352C55C-3F35-44FA-AB29-7E6A904A0613": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "456E0613-00B2-48DC-B291-21B2EC27D75A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "82720418-3940-4B9C-A2D1-3B70204D2304": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E110AD21-BE84-432A-B0EC-386C3C44352E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9631D935-B88F-4C69-8BCC-3F049AF483F0": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "AE2F6C40-53E2-404F-A846-8A29D40E6CF7": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "EB421585-1A18-45FD-8ABC-1DBE5E8619B6": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"type": "basicText", "key": "B2C9A8F4-4F8A-401E-B133-BC44EEEEF2AE", "title": "Title"}, {"title": "Content", "type": "advancedText", "key": "D59D3667-23C6-4ABB-B75F-0B13990D775B", "height": 120}, {"placeholder": "(Get your token here: www.evernote.com/api/DeveloperToken.action)", "type": "basicText", "key": "10BB6296-7848-4280-ADB5-635C64224DE9", "title": "Dev Token"}], "7ACA768E-8A89-4415-B07C-B31BCE83FA3D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "04457BA2-8D74-4741-A93D-0B6D5205BF49": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "69F42725-4A73-4167-8B1E-A09D2BA9E24F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F54B0353-898D-4DCA-B92D-1BEB3BF7758D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "DAF66F40-F705-43B9-92AB-D5A92CEFA442": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "EEC5B36C-C818-4F5C-82D5-41AC5A6E1BA9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "CFC86F37-AB60-42D5-B646-80E6FE691A77": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C57AA5DE-33C8-4B45-AE6E-6064A62F742C": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "85840AA5-5C07-4FA1-8692-53694FB83B2C": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "796C9ABC-17C4-4F6C-8AC5-279AFE86D058": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "885E0585-088C-4C83-B82F-77577537286D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "10BB6296-7848-4280-ADB5-635C64224DE9": "", "1B77F140-097C-4127-BEE2-BB01184FC14E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "679ED8AF-7896-4C04-AC9F-E9461ABDB007": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "774B128A-6DC2-476C-B440-F3758AA39A78": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "B2C9A8F4-4F8A-401E-B133-BC44EEEEF2AE": "", "A3719759-62CC-4C4B-9AB5-4BCD38B0F3C7": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "4C710287-CB44-471C-AD45-433C9EC90D02": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "# To get a developer token, visit\n# https://www.evernote.com/api/DeveloperToken.action\nimport workflow\nimport console\n\nparams = workflow.get_parameters()\nauth_token = params.get('Dev Token', None)\nnote_title = params.get('Title', '')\nnote_content = params.get('Content', '')\n\nif not auth_token:\n\tconsole.hud_alert('Evernote Dev Token Missing', 'error', 2.0)\n\tworkflow.stop()\nelif note_title or note_content:\n\timport evernote.edam.userstore.constants as UserStoreConstants\n\timport evernote.edam.type.ttypes as Types\n\tfrom evernote.api.client import EvernoteClient\n\tfrom xml.sax.saxutils import escape\n\t\n\tclient = EvernoteClient(token=auth_token, sandbox=False)\n\tnote_store = client.get_note_store()\n\t\n\t# To create a new note, simply create a new Note object and fill in\n\t# attributes such as the note's title.\n\tnote = Types.Note()\n\tnote.title = note_title\n\tnote.content = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>'\n\tnote.content += '<!DOCTYPE en-note SYSTEM ' \\\n    '\"http://xml.evernote.com/pub/enml2.dtd\">'\n\tnote.content += '<en-note>'\n\tnote.content += escape(note_content)\n\tnote.content += '</en-note>'\n\t\n\t# Finally, send the new note to Evernote using the createNote method\n\t# The new Note object that is returned will contain server-generated\n\t# attributes such as the new note's unique GUID.\n\tcreated_note = note_store.createNote(note)\n\tconsole.hud_alert('Note Created', 'success', 1.5)\n", "D59D3667-23C6-4ABB-B75F-0B13990D775B": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "3BE8EFF8-FBD7-4DF8-B567-518194D148BA": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "29EB2687-683D-4A58-AB6B-A941402DAEF1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A32EA424-A040-4AE5-84E9-591A2D1FF2B4": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3DECDA1F-D3D2-4E90-AB8C-D12C08B58373": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "CDF9DE95-858F-4647-A126-AEF9625125A9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "EBA59274-B1ED-4393-BFE8-E98ED9128A25": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "510DBD6D-2689-4417-AC04-9553B9272267": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8F6FDF93-1B6C-4FA6-95B7-A6C477D5FFFE": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F053FE50-E285-4077-B111-325A769238C3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Define with DuckDuckGo", "parameters": {"BE534FC3-F6BA-481E-B1D8-8E62D34EFD66": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "A0C2918D-A916-40BB-92FE-6A44E2D5B045": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "575D606B-7F49-4DD6-8C1D-DD3B46840316": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8E6B3440-584F-4C2E-BA50-C11A313DB63B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C6CB5F0F-C999-4888-9B56-541AECEC2E8B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "684BBA4F-E350-4D8E-8DF3-89378A91D452": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "# http://api.duckduckgo.com/?q=define+ostensibly&format=json&pretty=1\n\nimport workflow\nimport console\nimport requests\nimport json\nfrom urllib import quote\nparams = workflow.get_parameters()\nterm = params.get('Define', '')\nif term:\n\ttry:\n\t\turl = 'http://api.duckduckgo.com/?q=define+' + quote(term) + '&format=json'\n\t\tr = requests.get(url)\n\t\td = json.loads(r.text)\n\t\tdefinition = d.get('Definition', None)\n\t\tif definition:\n\t\t\tworkflow.set_output(definition)\n\t\telse:\n\t\t\tconsole.hud_alert('No Definition Found', 'error', 1.5)\n\texcept:\n\t\tconsole.hud_alert('Definition Request Failed', 'error', 1.5)\n", "A807F7DF-164C-446F-B977-F49A20A0C26E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "330A45F9-77BA-46CA-B278-74920BE46FC3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "E1202951-73CE-4C09-8DCD-D0E79D2A61C9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "479BBA56-96B7-4BD5-A5F1-21EF22E5AF0F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F917E5C7-E300-4EF2-ABDB-2A508DCCF365": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"title": "Define", "type": "advancedText", "key": "8B8F3A1E-B83C-4B67-B3EC-87B36AB458E3", "height": 60}], "8B8F3A1E-B83C-4B67-B3EC-87B36AB458E3": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "2FBB12DC-F65C-4656-A60A-1F43B4A264FD": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8E8129E4-FC24-40FE-B647-CF0B8362FB8B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "67C57B94-3E46-49FC-8FB3-27A942833489": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "729287BB-4E46-4A54-85D1-ADAC5D25480F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "5B74E06E-E622-4F10-A7BD-EBE753AB7A86": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "EE1CF495-4B2D-4D8B-9061-18E0E5B0DBA4": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Get RSS Feed Titles", "parameters": {"C0F90D6C-DFBA-446A-A233-535E4B3B32B9": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C841B051-92A1-47B6-959B-C899CB1991ED": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "BB25125C-D24B-493F-A340-D1A962600596": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "B15FA92A-12FC-4B68-B520-420DC4E4D595": "", "A51B78B1-A5EA-48D3-861D-ECC8F00B8831": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "D110DEC1-2DF8-43F4-8A6F-2AE932CE4AF1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "5D8F6E03-6800-4D06-803A-A97C9908D48B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C859FD90-A76E-448F-8B36-1402E3C876E2": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "BDDBB8C4-EBD9-473A-B51A-A28DA62A88C4": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "4DE980FD-DA6B-4143-8809-9556986C511C": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3AFE1DCB-DF5E-46D9-8633-9D9563578386": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3788EDC6-BB26-462B-9260-352157C6005A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "12ABF778-3390-4340-9E21-38453DC6C783": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"placeholder": "http://example.com/rss.xml", "type": "basicText", "key": "B15FA92A-12FC-4B68-B520-420DC4E4D595", "title": "Feed URL"}], "AF9E2606-3AE4-41A1-A840-EC9453370702": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8B14AE50-B0C9-4B1B-A2E8-447B307D5EF1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "5A07BA4D-C17C-4CF0-B30E-21A06F44DA92": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "74CEF61F-4266-4770-A855-48937BD16B15": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "import workflow\nimport console\n\nparams = workflow.get_parameters()\nurl = params.get('Feed URL', None)\n\nif url:\n\tconsole.show_activity()\n\timport feedparser\n\tfeed = feedparser.parse(url)\n\tentries = feed.get('entries', None)\n\tif not entries:\n\t\tentries = feed.get('articles', None)\n\toutput_list = []\n\tif entries:\n\t\tfor entry in entries:\n\t\t\toutput_list.append(entry['title'])\n\tconsole.hide_activity()\n\toutput = '\\n'.join(output_list)\n\tworkflow.set_output(output)\n", "8910E9D6-F501-4575-8BE9-2130BD9271D6": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "BACDC10E-897F-4EAE-8278-8C34EE88DCA2": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Select Next Occurrence", "parameters": {"9F407BE1-E65A-47B7-BA64-505855FDB3E8": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "B35A3AA0-A70C-4EDD-AFCC-76DEB2187D16": false, "D3C6CFF4-1AC1-4ABA-B0FE-B42FC65988B2": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F39BBD2E-F3A5-429E-BA3A-ABBFFB6D2659": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "6AAB6208-3B16-438C-893E-AC46A8A92D39": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "3D67FEDB-7684-4231-971F-6D15190B7D02": true, "775CB321-0094-41DE-B86E-1C11AC3E3085": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "82159FC6-A7C5-4049-8215-773BBB1D33EA": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "D92825A3-4B7D-470E-9226-E7E77652EA77": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "7D5686AE-7498-48AA-8E47-330E4379FFCA": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C39223D9-340E-49BB-90C4-745703A27A1A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "254C16B9-A450-4F1B-BE59-208F8787B4B1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "217C9D51-D748-459F-A3E8-C9F39A07CE5B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "import workflow\nimport editor\nimport re\n\nstart, end = editor.get_selection()\ntext = editor.get_text()\nparams = workflow.get_parameters()\nterm = params.get('Select Next Occurrence of', '')\nwrap = params.get('Wrap Around', False)\nregex = params.get('Regular Expression', False)\npattern = term if regex else re.escape(term)\n\nif term and text:\n\tmatch = re.search(pattern, text[end:])\n\toffset = end\n\tif not match and wrap:\n\t\tmatch = re.search(pattern, text)\n\t\toffset = 0\n\tif match:\n\t\teditor.set_selection(match.start(0) + offset, match.end(0) + offset)\n\n", "3AE5EB6F-F72B-403D-8BB8-81A5FBD26CD7": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "9D596A84-F9A6-464A-90C1-756CE9A9FBFC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"title": "Select Next Occurrence of", "type": "advancedText", "key": "6AAB6208-3B16-438C-893E-AC46A8A92D39", "height": 60}, {"type": "switch", "key": "B35A3AA0-A70C-4EDD-AFCC-76DEB2187D16", "title": "Regular Expression"}, {"type": "switch", "key": "3D67FEDB-7684-4231-971F-6D15190B7D02", "title": "Wrap Around"}]}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Get Stock Price", "parameters": {"8DD4E127-9BC3-4E71-9906-8183EB22A71E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "0D20CE31-7551-4856-9C94-BC7A3244BEFD": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C6323715-08C9-43ED-A293-7B33AB24D6A2": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "591C26D4-766E-4427-AB5D-D3D6E0E55328": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8206FDA1-3695-44AD-8815-96DB8FD43C52": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "20AFA058-634C-4681-BEDB-0959D4D853BC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "4019B3A5-FF90-4BC3-BFE7-6D66516AB001": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"placeholder": "Example: AAPL", "type": "basicText", "key": "61E0B385-F668-463D-B0F8-1C6447815C44", "title": "Symbol"}], "6ACBE726-A3A4-4644-95CA-690DDDC1C920": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F7F44F24-B811-4091-B706-2524D9641317": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "import workflow\nimport urllib\ns = workflow.get_parameters().get('Symbol')\nif s:\n\ttry:\n\t\turl = 'http://finance.yahoo.com/d/quotes.csv?s=' + s + '&f=l1'\n\t\tf = urllib.urlopen(url)\n\t\tprice = f.read()\n\t\tworkflow.set_output(price)\n\texcept IOError:\n\t\timport console\n\t\tconsole.hud_alert('Could not get stock price', 'error', 1.5)\n", "61E0B385-F668-463D-B0F8-1C6447815C44": "AAPL", "E4D83CC2-C054-4003-AD92-2AEE7C6C0435": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Create Short URL (is.gd)", "parameters": {"10B1B7A9-80C5-4F95-9EAA-F07972B0EBFC": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "5E93090E-6437-4C55-B094-83DE96B52703": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "C567E82B-ACB7-405D-970E-72C0A2B441E3": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "import workflow\nimport clipboard\nimport re\nimport console\n\nlong_url = workflow.get_parameters()['URL']\nif re.match('http(s)?://.*', long_url):\n\timport urllib\n\ttry:\n\t\tshort_url = urllib.urlopen('http://is.gd/create.php?format=simple&url=' + urllib.quote(long_url, '')).read()\n\t\tif re.match('http://is.gd.*', short_url):\n\t\t\tworkflow.set_output(short_url)\n\t\telse:\n\t\t\tconsole.hud_alert('Failed to shorten URL', 'error', 1.5)\n\texcept IOError:\n\t\tconsole.hud_alert('Failed to shorten URL', 'error', 1.5)\nelse:\n\tconsole.hud_alert('Invalid URL', 'error', 1.5)\n", "1C90F8A2-BE1A-4A55-8233-DF038A895A06": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "4FF30A71-E12D-4EBD-8123-1F53728EC2CF": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "5B0BD096-62FD-4EAF-B723-9AC8358E2760": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "76F230D3-33FD-450E-A16B-0E5E56EDE069": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "36C39F67-72E5-47C7-8BDA-0197133DF4C5": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F9FFC76E-0679-475D-AA09-FF2CD72EF00B": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"type": "advancedText", "key": "4FF30A71-E12D-4EBD-8123-1F53728EC2CF", "title": "URL"}]}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Schedule Notification", "parameters": {"6CEEE437-165D-440A-8740-3507A8C9F330": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8BEE2000-20CF-42D9-B9C6-DFD168BBAA1D": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "862FB2F6-1EE9-4C29-A300-9CEE71BA9EF0": 2, "CE644B5C-69B0-49A0-BF4A-75A36498757C": "3", "7D651A4D-2FB1-40FF-8D5A-BD229BD1932D": {"text": "Hello", "tokenRanges": {}, "type": "advancedText"}, "E73307C2-86EA-416F-958C-515B8C50D99E": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "359B956D-9411-4CD8-99EF-C0B7B526C83A": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "9045C4C2-C0C2-45F8-94CA-FD67A056FA67": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"optionTitles": ["(None)", "Beep", "Bleep", "Coin", "Error", "Spaceship"], "type": "selectOption", "key": "862FB2F6-1EE9-4C29-A300-9CEE71BA9EF0", "title": "Sound"}, {"keyboardType": 2, "type": "basicText", "key": "CE644B5C-69B0-49A0-BF4A-75A36498757C", "title": "Delay (Minutes)"}, {"title": "Text", "type": "advancedText", "key": "7D651A4D-2FB1-40FF-8D5A-BD229BD1932D", "height": 100}, {"title": "Launch URL (optional)", "keyboardType": 3, "type": "advancedText", "key": "359B956D-9411-4CD8-99EF-C0B7B526C83A", "height": 60}], "D867DE9C-6751-493F-AB9E-7E3D66073EC2": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "#coding: utf-8\nimport workflow\nimport notification\nimport console\n\nsounds = ['Beep', 'Bleep', 'Coin_1', 'Error', 'Spaceship']\nparams = workflow.get_parameters()\neffect_index = params['Sound']\neffect_name = sounds[effect_index - 1] if effect_index > 0 else None\nmessage = params['Text']\nlaunch_url = params['Launch URL (optional)']\n\ntry:\n\tdelay = float(params['Delay (Minutes)'])\nexcept ValueError:\n\tconsole.hud_alert('Invalid Delay', 'error')\nnotification.schedule(message, delay * 60, effect_name, launch_url)\nconsole.hud_alert('Scheduled', 'success', 1.0)\n\n", "D7F3FA22-DCF5-4A30-A139-B68783ECAD05": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Cancel All Notifications", "parameters": {"E34ED55B-FBEB-4F8F-9D0C-95FFD1DE039A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "3A9BEAB2-2B3E-406C-B42B-265D62E483DA": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "F4F4B693-ADE6-47A2-B415-E0146DD88F1A": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "8F7F4DC8-A93E-4780-985C-25820AB2A56F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [], "714E0559-7484-49D8-A9DC-6010611669A6": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "#coding: utf-8\nimport workflow\nimport notification\n\nnotification.cancel_all()\n\nworkflow.set_output = workflow.get_input()\n", "85306C9A-B368-4B73-8857-FBE3ECB0922F": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "41F5C805-5E66-4A77-BC05-BBA84DC22DC2": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "2828814B-7EB1-4CD1-A5EB-9793C1A47792": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionCustom"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Compare (Diff)", "parameters": {"DD6CA9FD-BFC3-4E2A-9B4C-B00F5B046BA8": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "A25A8AE4-C956-4D2C-BF0D-4C9D247DB7D6": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "5EB394D4-92F6-4DE5-9806-6064D74F2232": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "60C613B4-0902-4F5F-9659-6CE06E71E752": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "33A0A4E3-1D89-4418-8A36-1015D59A61D7": 0, "DBAD4725-4CE7-4CD3-8F1D-109B7A1C4056": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_parameters__": [{"title": "Text A", "type": "advancedText", "key": "A25A8AE4-C956-4D2C-BF0D-4C9D247DB7D6", "height": 100}, {"title": "Text B", "type": "advancedText", "key": "DD6CA9FD-BFC3-4E2A-9B4C-B00F5B046BA8", "height": 100}, {"optionTitles": ["HTML", "Critic Markup"], "type": "selectOption", "key": "33A0A4E3-1D89-4418-8A36-1015D59A61D7", "title": "Output Format"}], "E97BF5C5-8263-49D2-9A89-007C3D4B57A1": {"text": "This action runs a Python script that can be configured with your own parameters. Tap the options (\u25bc) button to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "25384A12-A759-4853-AD50-28D2E72D3B49": {"text": "This action runs a Python script that can be configured with your own parameters. Tap and hold the action to edit the script or the parameters that are shown here. This comment is actually a text parameter itself \u2013 feel free to remove it.", "tokenRanges": {}, "type": "advancedText"}, "__custom_action_script__": "#coding: utf-8\nimport workflow\nimport difflib\nfrom StringIO import StringIO\n\ndef diff(a, b, del1, del2, ins1, ins2):\n\tseq = difflib.SequenceMatcher(None, a, b)\n\topcodes = seq.get_opcodes()\n\tout = StringIO()\n\tfor op, a0, a1, b0, b1 in opcodes:\n\t\tif op == 'equal':\n\t\t\tout.write(a[a0:a1])\n\t\tif op == 'insert' or op == 'replace':\n\t\t\tout.write(ins1 + b[b0:b1] + ins2)\n\t\tif op == 'delete' or op == 'replace':\n\t\t\tout.write(del1 + a[a0:a1] + del2)\n\treturn out.getvalue()\n\nparams = workflow.get_parameters()\na = params['Text A']\nb = params['Text B']\nif params['Output Format'] == 0:\n\timport cgi\n\ta = cgi.escape(a)\n\tb = cgi.escape(b)\n\thtml = diff(a, b, '<del>', '</del>', '<ins>', '</ins>')\n\tworkflow.set_output(html)\nelse:\n\tcritic_markup = diff(a, b, '{--', '--}', '{++', '++}')\n\tworkflow.set_output(critic_markup)\n"}, "class": "WorkflowActionCustom"}], "name": "Custom Actions Pack", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone8,4", "systemVersion": "12.1.2"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22ROBERT%20SUMNER%20JR%22%2C%20%22description%22%3A%20%22This%20is%20a%20collection%20of%20several%20unrelated%20custom%20actions.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22READ%20ME%5Cu2757%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22This%20is%20not%20an%20actual%20workflow%2C%20it%20just%20contains%20a%20collection%20of%20custom%20actions%20that%20are%20meant%20to%20be%20saved%20as%20presets.%5Cn%5CnRunning%20this%20won%27t%20do%20anything%20because%20of%20the%20following%20%27Stop%27%20action.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22---------------------------------------------------------------------------------------%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20false%2C%20%22HUDTitle%22%3A%20%22%22%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Send%20to%20Drafts%22%2C%20%22parameters%22%3A%20%7B%220217F8EB-80EF-4A2C-A9E5-7E18DC6C3248%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%221C841272-0445-4065-853D-785C8DBE61D3%22%3A%20true%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22title%22%3A%20%22Text%22%2C%20%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%22EC988DCA-5C83-43C2-9CD6-1DF50A0A448D%22%2C%20%22height%22%3A%20120%7D%2C%20%7B%22type%22%3A%20%22switch%22%2C%20%22key%22%3A%20%221C841272-0445-4065-853D-785C8DBE61D3%22%2C%20%22title%22%3A%20%22Return%20to%20Editorial%22%7D%5D%2C%20%2230D112E0-6074-4B9E-9F59-5EFA908FC9A1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22AECCCF4E-41A4-4C07-ABB0-45DF485AFD2D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229A5C7E4F-0E3F-4918-A7B2-A9F790F8BF54%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A035F565-D7EA-4F35-86F2-74B8B91721C2%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F19F7720-C188-42BA-B4F7-8A94251CBB62%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22291DA446-1159-45ED-AE69-FB0F73E3CB04%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%227EC41E5D-8181-43D3-90A6-BA7A729AD37A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E05EB8C4-3C06-48D4-91C9-E5EA271879E5%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22D890C0A9-6A00-4D3F-A997-40B6614EB9E2%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22FD8A2171-5D14-4E7B-BEE4-4440DBA53C6C%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22EC988DCA-5C83-43C2-9CD6-1DF50A0A448D%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2239FDFB9D-8D85-4A8B-A546-D7451F978EDC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%226091BAEA-7008-4A83-BC09-8B5515F8E323%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2230B1D86A-AC53-4145-8ABB-481688A09E30%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22%23NOTE%3A%20Drafts%20doesn%27t%20support%20a%20%27success%27%20callback%20URL%20when%20no%20action%20is%20triggered%2C%20so%20if%20%27Return%20to%20Editorial%27%20is%20on%2C%20the%20text%20is%20also%20copied%20to%20the%20clipboard.%5Cn%5Cnimport%20workflow%5Cnimport%20webbrowser%5Cnfrom%20urllib%20import%20quote%5Cn%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cntext%20%3D%20params.get%28%27Text%27%2C%20None%29%5Cncallback%20%3D%20params.get%28%27Return%20to%20Editorial%27%2C%20False%29%5Cn%5Cnif%20text%3A%5Cn%5Cturl%20%3D%20%27drafts%3A%2F%2Fx-callback-url%2Fcreate%3Ftext%3D%27%20%2B%20quote%28text%29%5Cn%5Ctif%20callback%3A%5Cn%5Ct%5Cturl%20%2B%3D%20%27%26action%3D%27%20%2B%20quote%28%27Copy%20to%20Clipboard%27%29%5Cn%5Ct%5Cturl%20%2B%3D%20%27%26x-success%3D%27%20%2B%20quote%28%27editorial%3A%2F%2F%27%29%5Cn%5Ctsuccess%20%3D%20webbrowser.open%28url%29%5Cn%5Ctif%20not%20success%3A%5Cn%5Ct%5Ctimport%20console%5Cn%5Ct%5Ctconsole.hud_alert%28%27Drafts%20not%20installed%27%2C%20%27error%27%2C%201.5%29%5Cn%22%2C%20%221E231904-26B6-41A8-BB69-7583AFB757A8%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%226FA027B3-2E1F-46DA-9CF8-D4EEA393730D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%227A90A31B-EC7D-44F5-89B5-63A8CB4C207F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A0980BAA-E704-49D7-962E-DAB627E9F402%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Post%20with%20TweetBot%22%2C%20%22parameters%22%3A%20%7B%22DF194431-87BB-4812-80C3-9E5AB43F2C37%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22CAE1B3C9-DF24-4AA3-8BE6-C1068A34CE7C%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22placeholder%22%3A%20%22%28Default%20Account%29%22%2C%20%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%22CEB04CDB-BADD-4409-9B8F-8E073222E446%22%2C%20%22title%22%3A%20%22Account%22%7D%2C%20%7B%22title%22%3A%20%22Tweet%22%2C%20%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%220A5A0AF9-F928-44FC-B995-EC4087050735%22%2C%20%22height%22%3A%20100%7D%2C%20%7B%22type%22%3A%20%22switch%22%2C%20%22key%22%3A%20%2299FAF415-0381-4238-B15F-4D5C50F6B413%22%2C%20%22title%22%3A%20%22Return%20to%20Editorial%22%7D%5D%2C%20%22EE6DFE6A-3257-42AF-AFA6-C11ADE65559D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2299FAF415-0381-4238-B15F-4D5C50F6B413%22%3A%20true%2C%20%22CDB2FAE9-2230-4B4B-ABA2-673267CA0166%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223F5656FF-CA7E-42BF-9B5A-56ACD9F7E5A7%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%227ABE0A9A-6749-4C3B-8719-915584215A14%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A494C1C1-6722-401A-ACE9-7A18E4E74E55%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22CEB04CDB-BADD-4409-9B8F-8E073222E446%22%3A%20%22%22%2C%20%22534B636B-1D5F-4A10-B4C5-32CBFC0AF3C6%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A3B2161D-4604-43D8-A6B9-18A62C7CA6C9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F09FE15E-180F-4C30-9ADF-008BFC540D2B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22D0AB689E-465F-4E6B-A61D-AFED521EE8E9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2249F9F435-2FDE-463F-BCBB-AE681D4578B2%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%220C4BA658-9E6E-4404-83DE-F909D40CDEF1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E511A644-13BE-47B1-9D71-511D750D6BB4%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%220A5A0AF9-F928-44FC-B995-EC4087050735%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22222622CB-9B38-42A7-847F-43A98BA19764%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22import%20workflow%5Cnimport%20webbrowser%5Cnfrom%20urllib%20import%20quote%5Cn%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cn%5Cnaccount%20%3D%20params.get%28%27Account%27%2C%20None%29%5Cntweet%20%3D%20params.get%28%27Tweet%27%2C%20None%29%5Cncallback%20%3D%20params.get%28%27Return%20to%20Editorial%27%2C%20False%29%5Cn%5Cn%23tweetbot%3A%2F%2F%3Cscreenname%3E%2Fpost%3Ftext%3D%3Ctext%3E%26callback_url%3D%3Curl%3E%26in_reply_to_status_id%3D%3Ctweet_id%3E%5Cn%5Cnif%20tweet%3A%5Cn%5Cturl%20%3D%20%27tweetbot%3A%2F%2F%27%5Cn%5Ctif%20account%3A%5Cn%5Ct%5Cturl%20%2B%3D%20quote%28account%29%5Cn%5Cturl%20%2B%3D%20%27%2Fpost%3Ftext%3D%27%20%2B%20quote%28tweet%29%5Cn%5Ctif%20callback%3A%5Cn%5Ct%5Cturl%20%2B%3D%20%27%26callback_url%3D%27%20%2B%20quote%28%27editorial%3A%2F%2F%27%29%5Cn%5Ctwebbrowser.open%28url%29%5Cn%5Cn%22%2C%20%22156F61D9-0566-48F6-A7B9-4D349BE78AE3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22674B8A7B-F599-45F0-BAB8-71ED1E45A19E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2236D42353-DB32-4C63-B266-EC5AADA5B00D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229EB2C8A0-07D7-436C-92BA-7B74777BBD34%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2281A29078-05D8-4975-B647-77E494DBF3BC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22204F7CD1-A4FF-41FD-AAA0-DDC598476C04%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2251D1C493-CFCE-44F5-BA52-108C97E54933%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Add%20to%20Evernote%22%2C%20%22parameters%22%3A%20%7B%220352C55C-3F35-44FA-AB29-7E6A904A0613%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22456E0613-00B2-48DC-B291-21B2EC27D75A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2282720418-3940-4B9C-A2D1-3B70204D2304%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E110AD21-BE84-432A-B0EC-386C3C44352E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229631D935-B88F-4C69-8BCC-3F049AF483F0%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22AE2F6C40-53E2-404F-A846-8A29D40E6CF7%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22EB421585-1A18-45FD-8ABC-1DBE5E8619B6%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%22B2C9A8F4-4F8A-401E-B133-BC44EEEEF2AE%22%2C%20%22title%22%3A%20%22Title%22%7D%2C%20%7B%22title%22%3A%20%22Content%22%2C%20%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%22D59D3667-23C6-4ABB-B75F-0B13990D775B%22%2C%20%22height%22%3A%20120%7D%2C%20%7B%22placeholder%22%3A%20%22%28Get%20your%20token%20here%3A%20www.evernote.com%2Fapi%2FDeveloperToken.action%29%22%2C%20%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%2210BB6296-7848-4280-ADB5-635C64224DE9%22%2C%20%22title%22%3A%20%22Dev%20Token%22%7D%5D%2C%20%227ACA768E-8A89-4415-B07C-B31BCE83FA3D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2204457BA2-8D74-4741-A93D-0B6D5205BF49%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2269F42725-4A73-4167-8B1E-A09D2BA9E24F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F54B0353-898D-4DCA-B92D-1BEB3BF7758D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22DAF66F40-F705-43B9-92AB-D5A92CEFA442%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22EEC5B36C-C818-4F5C-82D5-41AC5A6E1BA9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22CFC86F37-AB60-42D5-B646-80E6FE691A77%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C57AA5DE-33C8-4B45-AE6E-6064A62F742C%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2285840AA5-5C07-4FA1-8692-53694FB83B2C%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22796C9ABC-17C4-4F6C-8AC5-279AFE86D058%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22885E0585-088C-4C83-B82F-77577537286D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2210BB6296-7848-4280-ADB5-635C64224DE9%22%3A%20%22%22%2C%20%221B77F140-097C-4127-BEE2-BB01184FC14E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22679ED8AF-7896-4C04-AC9F-E9461ABDB007%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22774B128A-6DC2-476C-B440-F3758AA39A78%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22B2C9A8F4-4F8A-401E-B133-BC44EEEEF2AE%22%3A%20%22%22%2C%20%22A3719759-62CC-4C4B-9AB5-4BCD38B0F3C7%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%224C710287-CB44-471C-AD45-433C9EC90D02%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22%23%20To%20get%20a%20developer%20token%2C%20visit%5Cn%23%20https%3A%2F%2Fwww.evernote.com%2Fapi%2FDeveloperToken.action%5Cnimport%20workflow%5Cnimport%20console%5Cn%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cnauth_token%20%3D%20params.get%28%27Dev%20Token%27%2C%20None%29%5Cnnote_title%20%3D%20params.get%28%27Title%27%2C%20%27%27%29%5Cnnote_content%20%3D%20params.get%28%27Content%27%2C%20%27%27%29%5Cn%5Cnif%20not%20auth_token%3A%5Cn%5Ctconsole.hud_alert%28%27Evernote%20Dev%20Token%20Missing%27%2C%20%27error%27%2C%202.0%29%5Cn%5Ctworkflow.stop%28%29%5Cnelif%20note_title%20or%20note_content%3A%5Cn%5Ctimport%20evernote.edam.userstore.constants%20as%20UserStoreConstants%5Cn%5Ctimport%20evernote.edam.type.ttypes%20as%20Types%5Cn%5Ctfrom%20evernote.api.client%20import%20EvernoteClient%5Cn%5Ctfrom%20xml.sax.saxutils%20import%20escape%5Cn%5Ct%5Cn%5Ctclient%20%3D%20EvernoteClient%28token%3Dauth_token%2C%20sandbox%3DFalse%29%5Cn%5Ctnote_store%20%3D%20client.get_note_store%28%29%5Cn%5Ct%5Cn%5Ct%23%20To%20create%20a%20new%20note%2C%20simply%20create%20a%20new%20Note%20object%20and%20fill%20in%5Cn%5Ct%23%20attributes%20such%20as%20the%20note%27s%20title.%5Cn%5Ctnote%20%3D%20Types.Note%28%29%5Cn%5Ctnote.title%20%3D%20note_title%5Cn%5Ctnote.content%20%3D%20%27%3C%3Fxml%20version%3D%5C%221.0%5C%22%20encoding%3D%5C%22UTF-8%5C%22%3F%3E%27%5Cn%5Ctnote.content%20%2B%3D%20%27%3C%21DOCTYPE%20en-note%20SYSTEM%20%27%20%5C%5C%5Cn%20%20%20%20%27%5C%22http%3A%2F%2Fxml.evernote.com%2Fpub%2Fenml2.dtd%5C%22%3E%27%5Cn%5Ctnote.content%20%2B%3D%20%27%3Cen-note%3E%27%5Cn%5Ctnote.content%20%2B%3D%20escape%28note_content%29%5Cn%5Ctnote.content%20%2B%3D%20%27%3C%2Fen-note%3E%27%5Cn%5Ct%5Cn%5Ct%23%20Finally%2C%20send%20the%20new%20note%20to%20Evernote%20using%20the%20createNote%20method%5Cn%5Ct%23%20The%20new%20Note%20object%20that%20is%20returned%20will%20contain%20server-generated%5Cn%5Ct%23%20attributes%20such%20as%20the%20new%20note%27s%20unique%20GUID.%5Cn%5Ctcreated_note%20%3D%20note_store.createNote%28note%29%5Cn%5Ctconsole.hud_alert%28%27Note%20Created%27%2C%20%27success%27%2C%201.5%29%5Cn%22%2C%20%22D59D3667-23C6-4ABB-B75F-0B13990D775B%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223BE8EFF8-FBD7-4DF8-B567-518194D148BA%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2229EB2687-683D-4A58-AB6B-A941402DAEF1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A32EA424-A040-4AE5-84E9-591A2D1FF2B4%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223DECDA1F-D3D2-4E90-AB8C-D12C08B58373%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22CDF9DE95-858F-4647-A126-AEF9625125A9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22EBA59274-B1ED-4393-BFE8-E98ED9128A25%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22510DBD6D-2689-4417-AC04-9553B9272267%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228F6FDF93-1B6C-4FA6-95B7-A6C477D5FFFE%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F053FE50-E285-4077-B111-325A769238C3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Define%20with%20DuckDuckGo%22%2C%20%22parameters%22%3A%20%7B%22BE534FC3-F6BA-481E-B1D8-8E62D34EFD66%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A0C2918D-A916-40BB-92FE-6A44E2D5B045%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22575D606B-7F49-4DD6-8C1D-DD3B46840316%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228E6B3440-584F-4C2E-BA50-C11A313DB63B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C6CB5F0F-C999-4888-9B56-541AECEC2E8B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22684BBA4F-E350-4D8E-8DF3-89378A91D452%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22%23%20http%3A%2F%2Fapi.duckduckgo.com%2F%3Fq%3Ddefine%2Bostensibly%26format%3Djson%26pretty%3D1%5Cn%5Cnimport%20workflow%5Cnimport%20console%5Cnimport%20requests%5Cnimport%20json%5Cnfrom%20urllib%20import%20quote%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cnterm%20%3D%20params.get%28%27Define%27%2C%20%27%27%29%5Cnif%20term%3A%5Cn%5Cttry%3A%5Cn%5Ct%5Cturl%20%3D%20%27http%3A%2F%2Fapi.duckduckgo.com%2F%3Fq%3Ddefine%2B%27%20%2B%20quote%28term%29%20%2B%20%27%26format%3Djson%27%5Cn%5Ct%5Ctr%20%3D%20requests.get%28url%29%5Cn%5Ct%5Ctd%20%3D%20json.loads%28r.text%29%5Cn%5Ct%5Ctdefinition%20%3D%20d.get%28%27Definition%27%2C%20None%29%5Cn%5Ct%5Ctif%20definition%3A%5Cn%5Ct%5Ct%5Ctworkflow.set_output%28definition%29%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctconsole.hud_alert%28%27No%20Definition%20Found%27%2C%20%27error%27%2C%201.5%29%5Cn%5Ctexcept%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27Definition%20Request%20Failed%27%2C%20%27error%27%2C%201.5%29%5Cn%22%2C%20%22A807F7DF-164C-446F-B977-F49A20A0C26E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22330A45F9-77BA-46CA-B278-74920BE46FC3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E1202951-73CE-4C09-8DCD-D0E79D2A61C9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22479BBA56-96B7-4BD5-A5F1-21EF22E5AF0F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F917E5C7-E300-4EF2-ABDB-2A508DCCF365%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22title%22%3A%20%22Define%22%2C%20%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%228B8F3A1E-B83C-4B67-B3EC-87B36AB458E3%22%2C%20%22height%22%3A%2060%7D%5D%2C%20%228B8F3A1E-B83C-4B67-B3EC-87B36AB458E3%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%222FBB12DC-F65C-4656-A60A-1F43B4A264FD%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228E8129E4-FC24-40FE-B647-CF0B8362FB8B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2267C57B94-3E46-49FC-8FB3-27A942833489%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22729287BB-4E46-4A54-85D1-ADAC5D25480F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225B74E06E-E622-4F10-A7BD-EBE753AB7A86%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22EE1CF495-4B2D-4D8B-9061-18E0E5B0DBA4%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Get%20RSS%20Feed%20Titles%22%2C%20%22parameters%22%3A%20%7B%22C0F90D6C-DFBA-446A-A233-535E4B3B32B9%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C841B051-92A1-47B6-959B-C899CB1991ED%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22BB25125C-D24B-493F-A340-D1A962600596%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22B15FA92A-12FC-4B68-B520-420DC4E4D595%22%3A%20%22%22%2C%20%22A51B78B1-A5EA-48D3-861D-ECC8F00B8831%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22D110DEC1-2DF8-43F4-8A6F-2AE932CE4AF1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225D8F6E03-6800-4D06-803A-A97C9908D48B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C859FD90-A76E-448F-8B36-1402E3C876E2%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22BDDBB8C4-EBD9-473A-B51A-A28DA62A88C4%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%224DE980FD-DA6B-4143-8809-9556986C511C%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223AFE1DCB-DF5E-46D9-8633-9D9563578386%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223788EDC6-BB26-462B-9260-352157C6005A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2212ABF778-3390-4340-9E21-38453DC6C783%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22placeholder%22%3A%20%22http%3A%2F%2Fexample.com%2Frss.xml%22%2C%20%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%22B15FA92A-12FC-4B68-B520-420DC4E4D595%22%2C%20%22title%22%3A%20%22Feed%20URL%22%7D%5D%2C%20%22AF9E2606-3AE4-41A1-A840-EC9453370702%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228B14AE50-B0C9-4B1B-A2E8-447B307D5EF1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225A07BA4D-C17C-4CF0-B30E-21A06F44DA92%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2274CEF61F-4266-4770-A855-48937BD16B15%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22import%20workflow%5Cnimport%20console%5Cn%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cnurl%20%3D%20params.get%28%27Feed%20URL%27%2C%20None%29%5Cn%5Cnif%20url%3A%5Cn%5Ctconsole.show_activity%28%29%5Cn%5Ctimport%20feedparser%5Cn%5Ctfeed%20%3D%20feedparser.parse%28url%29%5Cn%5Ctentries%20%3D%20feed.get%28%27entries%27%2C%20None%29%5Cn%5Ctif%20not%20entries%3A%5Cn%5Ct%5Ctentries%20%3D%20feed.get%28%27articles%27%2C%20None%29%5Cn%5Ctoutput_list%20%3D%20%5B%5D%5Cn%5Ctif%20entries%3A%5Cn%5Ct%5Ctfor%20entry%20in%20entries%3A%5Cn%5Ct%5Ct%5Ctoutput_list.append%28entry%5B%27title%27%5D%29%5Cn%5Ctconsole.hide_activity%28%29%5Cn%5Ctoutput%20%3D%20%27%5C%5Cn%27.join%28output_list%29%5Cn%5Ctworkflow.set_output%28output%29%5Cn%22%2C%20%228910E9D6-F501-4575-8BE9-2130BD9271D6%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22BACDC10E-897F-4EAE-8278-8C34EE88DCA2%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Select%20Next%20Occurrence%22%2C%20%22parameters%22%3A%20%7B%229F407BE1-E65A-47B7-BA64-505855FDB3E8%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22B35A3AA0-A70C-4EDD-AFCC-76DEB2187D16%22%3A%20false%2C%20%22D3C6CFF4-1AC1-4ABA-B0FE-B42FC65988B2%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F39BBD2E-F3A5-429E-BA3A-ABBFFB6D2659%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%226AAB6208-3B16-438C-893E-AC46A8A92D39%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223D67FEDB-7684-4231-971F-6D15190B7D02%22%3A%20true%2C%20%22775CB321-0094-41DE-B86E-1C11AC3E3085%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2282159FC6-A7C5-4049-8215-773BBB1D33EA%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22D92825A3-4B7D-470E-9226-E7E77652EA77%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%227D5686AE-7498-48AA-8E47-330E4379FFCA%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C39223D9-340E-49BB-90C4-745703A27A1A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22254C16B9-A450-4F1B-BE59-208F8787B4B1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22217C9D51-D748-459F-A3E8-C9F39A07CE5B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22import%20workflow%5Cnimport%20editor%5Cnimport%20re%5Cn%5Cnstart%2C%20end%20%3D%20editor.get_selection%28%29%5Cntext%20%3D%20editor.get_text%28%29%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cnterm%20%3D%20params.get%28%27Select%20Next%20Occurrence%20of%27%2C%20%27%27%29%5Cnwrap%20%3D%20params.get%28%27Wrap%20Around%27%2C%20False%29%5Cnregex%20%3D%20params.get%28%27Regular%20Expression%27%2C%20False%29%5Cnpattern%20%3D%20term%20if%20regex%20else%20re.escape%28term%29%5Cn%5Cnif%20term%20and%20text%3A%5Cn%5Ctmatch%20%3D%20re.search%28pattern%2C%20text%5Bend%3A%5D%29%5Cn%5Ctoffset%20%3D%20end%5Cn%5Ctif%20not%20match%20and%20wrap%3A%5Cn%5Ct%5Ctmatch%20%3D%20re.search%28pattern%2C%20text%29%5Cn%5Ct%5Ctoffset%20%3D%200%5Cn%5Ctif%20match%3A%5Cn%5Ct%5Cteditor.set_selection%28match.start%280%29%20%2B%20offset%2C%20match.end%280%29%20%2B%20offset%29%5Cn%5Cn%22%2C%20%223AE5EB6F-F72B-403D-8BB8-81A5FBD26CD7%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229D596A84-F9A6-464A-90C1-756CE9A9FBFC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22title%22%3A%20%22Select%20Next%20Occurrence%20of%22%2C%20%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%226AAB6208-3B16-438C-893E-AC46A8A92D39%22%2C%20%22height%22%3A%2060%7D%2C%20%7B%22type%22%3A%20%22switch%22%2C%20%22key%22%3A%20%22B35A3AA0-A70C-4EDD-AFCC-76DEB2187D16%22%2C%20%22title%22%3A%20%22Regular%20Expression%22%7D%2C%20%7B%22type%22%3A%20%22switch%22%2C%20%22key%22%3A%20%223D67FEDB-7684-4231-971F-6D15190B7D02%22%2C%20%22title%22%3A%20%22Wrap%20Around%22%7D%5D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Get%20Stock%20Price%22%2C%20%22parameters%22%3A%20%7B%228DD4E127-9BC3-4E71-9906-8183EB22A71E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%220D20CE31-7551-4856-9C94-BC7A3244BEFD%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C6323715-08C9-43ED-A293-7B33AB24D6A2%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22591C26D4-766E-4427-AB5D-D3D6E0E55328%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228206FDA1-3695-44AD-8815-96DB8FD43C52%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2220AFA058-634C-4681-BEDB-0959D4D853BC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%224019B3A5-FF90-4BC3-BFE7-6D66516AB001%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22placeholder%22%3A%20%22Example%3A%20AAPL%22%2C%20%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%2261E0B385-F668-463D-B0F8-1C6447815C44%22%2C%20%22title%22%3A%20%22Symbol%22%7D%5D%2C%20%226ACBE726-A3A4-4644-95CA-690DDDC1C920%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F7F44F24-B811-4091-B706-2524D9641317%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22import%20workflow%5Cnimport%20urllib%5Cns%20%3D%20workflow.get_parameters%28%29.get%28%27Symbol%27%29%5Cnif%20s%3A%5Cn%5Cttry%3A%5Cn%5Ct%5Cturl%20%3D%20%27http%3A%2F%2Ffinance.yahoo.com%2Fd%2Fquotes.csv%3Fs%3D%27%20%2B%20s%20%2B%20%27%26f%3Dl1%27%5Cn%5Ct%5Ctf%20%3D%20urllib.urlopen%28url%29%5Cn%5Ct%5Ctprice%20%3D%20f.read%28%29%5Cn%5Ct%5Ctworkflow.set_output%28price%29%5Cn%5Ctexcept%20IOError%3A%5Cn%5Ct%5Ctimport%20console%5Cn%5Ct%5Ctconsole.hud_alert%28%27Could%20not%20get%20stock%20price%27%2C%20%27error%27%2C%201.5%29%5Cn%22%2C%20%2261E0B385-F668-463D-B0F8-1C6447815C44%22%3A%20%22AAPL%22%2C%20%22E4D83CC2-C054-4003-AD92-2AEE7C6C0435%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Create%20Short%20URL%20%28is.gd%29%22%2C%20%22parameters%22%3A%20%7B%2210B1B7A9-80C5-4F95-9EAA-F07972B0EBFC%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225E93090E-6437-4C55-B094-83DE96B52703%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22C567E82B-ACB7-405D-970E-72C0A2B441E3%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22import%20workflow%5Cnimport%20clipboard%5Cnimport%20re%5Cnimport%20console%5Cn%5Cnlong_url%20%3D%20workflow.get_parameters%28%29%5B%27URL%27%5D%5Cnif%20re.match%28%27http%28s%29%3F%3A%2F%2F.%2A%27%2C%20long_url%29%3A%5Cn%5Ctimport%20urllib%5Cn%5Cttry%3A%5Cn%5Ct%5Ctshort_url%20%3D%20urllib.urlopen%28%27http%3A%2F%2Fis.gd%2Fcreate.php%3Fformat%3Dsimple%26url%3D%27%20%2B%20urllib.quote%28long_url%2C%20%27%27%29%29.read%28%29%5Cn%5Ct%5Ctif%20re.match%28%27http%3A%2F%2Fis.gd.%2A%27%2C%20short_url%29%3A%5Cn%5Ct%5Ct%5Ctworkflow.set_output%28short_url%29%5Cn%5Ct%5Ctelse%3A%5Cn%5Ct%5Ct%5Ctconsole.hud_alert%28%27Failed%20to%20shorten%20URL%27%2C%20%27error%27%2C%201.5%29%5Cn%5Ctexcept%20IOError%3A%5Cn%5Ct%5Ctconsole.hud_alert%28%27Failed%20to%20shorten%20URL%27%2C%20%27error%27%2C%201.5%29%5Cnelse%3A%5Cn%5Ctconsole.hud_alert%28%27Invalid%20URL%27%2C%20%27error%27%2C%201.5%29%5Cn%22%2C%20%221C90F8A2-BE1A-4A55-8233-DF038A895A06%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%224FF30A71-E12D-4EBD-8123-1F53728EC2CF%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225B0BD096-62FD-4EAF-B723-9AC8358E2760%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2276F230D3-33FD-450E-A16B-0E5E56EDE069%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2236C39F67-72E5-47C7-8BDA-0197133DF4C5%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F9FFC76E-0679-475D-AA09-FF2CD72EF00B%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%224FF30A71-E12D-4EBD-8123-1F53728EC2CF%22%2C%20%22title%22%3A%20%22URL%22%7D%5D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Schedule%20Notification%22%2C%20%22parameters%22%3A%20%7B%226CEEE437-165D-440A-8740-3507A8C9F330%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228BEE2000-20CF-42D9-B9C6-DFD168BBAA1D%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22862FB2F6-1EE9-4C29-A300-9CEE71BA9EF0%22%3A%202%2C%20%22CE644B5C-69B0-49A0-BF4A-75A36498757C%22%3A%20%223%22%2C%20%227D651A4D-2FB1-40FF-8D5A-BD229BD1932D%22%3A%20%7B%22text%22%3A%20%22Hello%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22E73307C2-86EA-416F-958C-515B8C50D99E%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22359B956D-9411-4CD8-99EF-C0B7B526C83A%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%229045C4C2-C0C2-45F8-94CA-FD67A056FA67%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22optionTitles%22%3A%20%5B%22%28None%29%22%2C%20%22Beep%22%2C%20%22Bleep%22%2C%20%22Coin%22%2C%20%22Error%22%2C%20%22Spaceship%22%5D%2C%20%22type%22%3A%20%22selectOption%22%2C%20%22key%22%3A%20%22862FB2F6-1EE9-4C29-A300-9CEE71BA9EF0%22%2C%20%22title%22%3A%20%22Sound%22%7D%2C%20%7B%22keyboardType%22%3A%202%2C%20%22type%22%3A%20%22basicText%22%2C%20%22key%22%3A%20%22CE644B5C-69B0-49A0-BF4A-75A36498757C%22%2C%20%22title%22%3A%20%22Delay%20%28Minutes%29%22%7D%2C%20%7B%22title%22%3A%20%22Text%22%2C%20%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%227D651A4D-2FB1-40FF-8D5A-BD229BD1932D%22%2C%20%22height%22%3A%20100%7D%2C%20%7B%22title%22%3A%20%22Launch%20URL%20%28optional%29%22%2C%20%22keyboardType%22%3A%203%2C%20%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%22359B956D-9411-4CD8-99EF-C0B7B526C83A%22%2C%20%22height%22%3A%2060%7D%5D%2C%20%22D867DE9C-6751-493F-AB9E-7E3D66073EC2%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20notification%5Cnimport%20console%5Cn%5Cnsounds%20%3D%20%5B%27Beep%27%2C%20%27Bleep%27%2C%20%27Coin_1%27%2C%20%27Error%27%2C%20%27Spaceship%27%5D%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cneffect_index%20%3D%20params%5B%27Sound%27%5D%5Cneffect_name%20%3D%20sounds%5Beffect_index%20-%201%5D%20if%20effect_index%20%3E%200%20else%20None%5Cnmessage%20%3D%20params%5B%27Text%27%5D%5Cnlaunch_url%20%3D%20params%5B%27Launch%20URL%20%28optional%29%27%5D%5Cn%5Cntry%3A%5Cn%5Ctdelay%20%3D%20float%28params%5B%27Delay%20%28Minutes%29%27%5D%29%5Cnexcept%20ValueError%3A%5Cn%5Ctconsole.hud_alert%28%27Invalid%20Delay%27%2C%20%27error%27%29%5Cnnotification.schedule%28message%2C%20delay%20%2A%2060%2C%20effect_name%2C%20launch_url%29%5Cnconsole.hud_alert%28%27Scheduled%27%2C%20%27success%27%2C%201.0%29%5Cn%5Cn%22%2C%20%22D7F3FA22-DCF5-4A30-A139-B68783ECAD05%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Cancel%20All%20Notifications%22%2C%20%22parameters%22%3A%20%7B%22E34ED55B-FBEB-4F8F-9D0C-95FFD1DE039A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%223A9BEAB2-2B3E-406C-B42B-265D62E483DA%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22F4F4B693-ADE6-47A2-B415-E0146DD88F1A%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%228F7F4DC8-A93E-4780-985C-25820AB2A56F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%5D%2C%20%22714E0559-7484-49D8-A9DC-6010611669A6%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20notification%5Cn%5Cnnotification.cancel_all%28%29%5Cn%5Cnworkflow.set_output%20%3D%20workflow.get_input%28%29%5Cn%22%2C%20%2285306C9A-B368-4B73-8857-FBE3ECB0922F%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2241F5C805-5E66-4A77-BC05-BBA84DC22DC2%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%222828814B-7EB1-4CD1-A5EB-9793C1A47792%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Compare%20%28Diff%29%22%2C%20%22parameters%22%3A%20%7B%22DD6CA9FD-BFC3-4E2A-9B4C-B00F5B046BA8%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22A25A8AE4-C956-4D2C-BF0D-4C9D247DB7D6%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%225EB394D4-92F6-4DE5-9806-6064D74F2232%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2260C613B4-0902-4F5F-9659-6CE06E71E752%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2233A0A4E3-1D89-4418-8A36-1015D59A61D7%22%3A%200%2C%20%22DBAD4725-4CE7-4CD3-8F1D-109B7A1C4056%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_parameters__%22%3A%20%5B%7B%22title%22%3A%20%22Text%20A%22%2C%20%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%22A25A8AE4-C956-4D2C-BF0D-4C9D247DB7D6%22%2C%20%22height%22%3A%20100%7D%2C%20%7B%22title%22%3A%20%22Text%20B%22%2C%20%22type%22%3A%20%22advancedText%22%2C%20%22key%22%3A%20%22DD6CA9FD-BFC3-4E2A-9B4C-B00F5B046BA8%22%2C%20%22height%22%3A%20100%7D%2C%20%7B%22optionTitles%22%3A%20%5B%22HTML%22%2C%20%22Critic%20Markup%22%5D%2C%20%22type%22%3A%20%22selectOption%22%2C%20%22key%22%3A%20%2233A0A4E3-1D89-4418-8A36-1015D59A61D7%22%2C%20%22title%22%3A%20%22Output%20Format%22%7D%5D%2C%20%22E97BF5C5-8263-49D2-9A89-007C3D4B57A1%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20the%20options%20%28%5Cu25bc%29%20button%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%2225384A12-A759-4853-AD50-28D2E72D3B49%22%3A%20%7B%22text%22%3A%20%22This%20action%20runs%20a%20Python%20script%20that%20can%20be%20configured%20with%20your%20own%20parameters.%20Tap%20and%20hold%20the%20action%20to%20edit%20the%20script%20or%20the%20parameters%20that%20are%20shown%20here.%20This%20comment%20is%20actually%20a%20text%20parameter%20itself%20%5Cu2013%20feel%20free%20to%20remove%20it.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22__custom_action_script__%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20difflib%5Cnfrom%20StringIO%20import%20StringIO%5Cn%5Cndef%20diff%28a%2C%20b%2C%20del1%2C%20del2%2C%20ins1%2C%20ins2%29%3A%5Cn%5Ctseq%20%3D%20difflib.SequenceMatcher%28None%2C%20a%2C%20b%29%5Cn%5Ctopcodes%20%3D%20seq.get_opcodes%28%29%5Cn%5Ctout%20%3D%20StringIO%28%29%5Cn%5Ctfor%20op%2C%20a0%2C%20a1%2C%20b0%2C%20b1%20in%20opcodes%3A%5Cn%5Ct%5Ctif%20op%20%3D%3D%20%27equal%27%3A%5Cn%5Ct%5Ct%5Ctout.write%28a%5Ba0%3Aa1%5D%29%5Cn%5Ct%5Ctif%20op%20%3D%3D%20%27insert%27%20or%20op%20%3D%3D%20%27replace%27%3A%5Cn%5Ct%5Ct%5Ctout.write%28ins1%20%2B%20b%5Bb0%3Ab1%5D%20%2B%20ins2%29%5Cn%5Ct%5Ctif%20op%20%3D%3D%20%27delete%27%20or%20op%20%3D%3D%20%27replace%27%3A%5Cn%5Ct%5Ct%5Ctout.write%28del1%20%2B%20a%5Ba0%3Aa1%5D%20%2B%20del2%29%5Cn%5Ctreturn%20out.getvalue%28%29%5Cn%5Cnparams%20%3D%20workflow.get_parameters%28%29%5Cna%20%3D%20params%5B%27Text%20A%27%5D%5Cnb%20%3D%20params%5B%27Text%20B%27%5D%5Cnif%20params%5B%27Output%20Format%27%5D%20%3D%3D%200%3A%5Cn%5Ctimport%20cgi%5Cn%5Cta%20%3D%20cgi.escape%28a%29%5Cn%5Ctb%20%3D%20cgi.escape%28b%29%5Cn%5Cthtml%20%3D%20diff%28a%2C%20b%2C%20%27%3Cdel%3E%27%2C%20%27%3C%2Fdel%3E%27%2C%20%27%3Cins%3E%27%2C%20%27%3C%2Fins%3E%27%29%5Cn%5Ctworkflow.set_output%28html%29%5Cnelse%3A%5Cn%5Ctcritic_markup%20%3D%20diff%28a%2C%20b%2C%20%27%7B--%27%2C%20%27--%7D%27%2C%20%27%7B%2B%2B%27%2C%20%27%2B%2B%7D%27%29%5Cn%5Ctworkflow.set_output%28critic_markup%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionCustom%22%7D%5D%2C%20%22name%22%3A%20%22Custom%20Actions%20Pack%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone8%2C4%22%2C%20%22systemVersion%22%3A%20%2212.1.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "This is a collection of several unrelated custom actions.", "title": "Custom Actions Pack"}, {"url": "http://editorial-app.appspot.com/workflow/5805622016606208/FCIU7_dNi-c", "workflow_data": {"username": "ROBERT SUMNER JR", "description": "", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 1}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionExtractURLs"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "If no URLs are found...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"showHUD": true, "HUDTitle": "No URLs found", "stopOption": 0}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"list": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "", "showInPopover": true, "allowMultipleSelection": false}, "class": "WorkflowActionSelectFromList"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "If URL is selected...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"URL": {"text": "?\t\t\t", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "waitUntilLoaded": false, "revealBrowserAutomatically": true, "openIn": 1, "tabOption": 0}, "class": "WorkflowActionOpenURL"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}], "name": "List URLs...", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone8,4", "systemVersion": "12.1.2"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22ROBERT%20SUMNER%20JR%22%2C%20%22description%22%3A%20%22%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionExtractURLs%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22If%20no%20URLs%20are%20found...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20true%2C%20%22HUDTitle%22%3A%20%22No%20URLs%20found%22%2C%20%22stopOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22list%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22%22%2C%20%22showInPopover%22%3A%20true%2C%20%22allowMultipleSelection%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionSelectFromList%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22If%20URL%20is%20selected...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22URL%22%3A%20%7B%22text%22%3A%20%22%3F%5Ct%5Ct%5Ct%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22waitUntilLoaded%22%3A%20false%2C%20%22revealBrowserAutomatically%22%3A%20true%2C%20%22openIn%22%3A%201%2C%20%22tabOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%5D%2C%20%22name%22%3A%20%22List%20URLs...%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone8%2C4%22%2C%20%22systemVersion%22%3A%20%2212.1.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "", "title": "List URLs..."}, {"url": "http://editorial-app.appspot.com/workflow/5874726161350656/cWuAzC0nXXk", "workflow_data": {"username": "", "description": "Modified version of Clean Up Completed Tasks workflow. Intended to be run every now and then on a Main.taskpaper file to empty the archive by filtering lines tagged as @done and prepending them to an Archive.taskpaper. The lack of disclosure triangles in Editorial means having to look at that eventually unwieldy archive, but I don't always want to just delete completed tasks. Thanks to @scottzero for the original workflow this is based on. \n\nNote: all I did was change the filenames (and paths) in the proper actions and then change the line filtering to @done.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"includeExtension": true, "includeFolder": false}, "class": "WorkflowActionGetFileName"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "todo.taskpaper", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression": {"text": "@done", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionFilterLines"}, {"pauseWithoutShowingParameters": true, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "completed", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression": {"text": "@done", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionFilterLines"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "todo", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": true, "ifNotExists": 0, "filename": "done.taskpaper"}, "class": "WorkflowActionGetFileContents"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "done", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": true, "text": {"text": "?\n?", "tokenRanges": {"{0, 1}": "completed", "{2, 1}": "done"}, "type": "advancedText"}, "ifNotExists": 0, "filename": "done.taskpaper"}, "class": "WorkflowActionSetFileContents"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": true, "text": {"text": "?", "tokenRanges": {"{0, 1}": "todo"}, "type": "advancedText"}, "ifNotExists": 0, "filename": "todo.taskpaper"}, "class": "WorkflowActionSetFileContents"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}], "name": "Clean Up TaskPaper Archive", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad4,4", "systemVersion": "12.1.1"}, "type": "wkflw", "public": true, "icon": "minicons-icons-folder-validate.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Modified%20version%20of%20Clean%20Up%20Completed%20Tasks%20workflow.%20Intended%20to%20be%20run%20every%20now%20and%20then%20on%20a%20Main.taskpaper%20file%20to%20empty%20the%20archive%20by%20filtering%20lines%20tagged%20as%20%40done%20and%20prepending%20them%20to%20an%20Archive.taskpaper.%20The%20lack%20of%20disclosure%20triangles%20in%20Editorial%20means%20having%20to%20look%20at%20that%20eventually%20unwieldy%20archive%2C%20but%20I%20don%27t%20always%20want%20to%20just%20delete%20completed%20tasks.%20Thanks%20to%20%40scottzero%20for%20the%20original%20workflow%20this%20is%20based%20on.%20%5Cn%5CnNote%3A%20all%20I%20did%20was%20change%20the%20filenames%20%28and%20paths%29%20in%20the%20proper%20actions%20and%20then%20change%20the%20line%20filtering%20to%20%40done.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22includeExtension%22%3A%20true%2C%20%22includeFolder%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionGetFileName%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22todo.taskpaper%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression%22%3A%20%7B%22text%22%3A%20%22%40done%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionFilterLines%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20true%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22completed%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression%22%3A%20%7B%22text%22%3A%20%22%40done%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionFilterLines%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22todo%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20true%2C%20%22ifNotExists%22%3A%200%2C%20%22filename%22%3A%20%22done.taskpaper%22%7D%2C%20%22class%22%3A%20%22WorkflowActionGetFileContents%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22done%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20true%2C%20%22text%22%3A%20%7B%22text%22%3A%20%22%3F%5Cn%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22completed%22%2C%20%22%7B2%2C%201%7D%22%3A%20%22done%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ifNotExists%22%3A%200%2C%20%22filename%22%3A%20%22done.taskpaper%22%7D%2C%20%22class%22%3A%20%22WorkflowActionSetFileContents%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20true%2C%20%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22todo%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ifNotExists%22%3A%200%2C%20%22filename%22%3A%20%22todo.taskpaper%22%7D%2C%20%22class%22%3A%20%22WorkflowActionSetFileContents%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%5D%2C%20%22name%22%3A%20%22Clean%20Up%20TaskPaper%20Archive%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad4%2C4%22%2C%20%22systemVersion%22%3A%20%2212.1.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-folder-validate.png%22%7D", "description": "Modified version of Clean Up Completed Tasks workflow. Intended to be run every now and then on a Main.taskpaper file to empty the archive by filtering lines tagged as @done and prepending them to an Archive.taskpaper. The lack of disclosure triangles in Editorial means having to look at that eventually unwieldy archive, but I don't always want to just delete completed tasks. Thanks to @scottzero for the original workflow this is based on. \n\nNote: all I did was change the filenames (and paths) in the proper actions and then change the line filtering to @done.", "title": "Clean Up TaskPaper Archive"}, {"url": "http://editorial-app.appspot.com/workflow/5798027507793920/Xl4kzoufYs0", "workflow_data": {"username": "jjd1217-122318TS", "description": "Saves or restores a backup of all Editorial workflows, snippets, bookmarks, and local documents as a zip file in Dropbox (this requires the Dropbox account to be linked).\r\n\r\nPlease note: If you want to restore a backup on a different device, you first have to download the backup file (just tap on it in the document list). This is required because Editorial doesn't sync zip files by default.\r\n\r\nRestoring a backup will *overwrite* all existing workflows, snippets, and bookmarks, so it's possible that you'll lose data this way. The best way to avoid any data loss is to create a backup before restoring anything.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"button1Value": {"text": "backup", "tokenRanges": {}, "type": "advancedText"}, "button3Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button2Value": {"text": "restore", "tokenRanges": {}, "type": "advancedText"}, "title": "Create or Restore?", "button3Title": "", "button2Title": "Restore...", "button1Title": "Create Backup", "message": {"text": "The backup of your workflows, snippets, bookmarks, and local documents will be created as a zip file in your Dropbox (EditorialBackup_?_?_?-?_?.zip). Editorial needs to be linked to Dropbox for this to work.", "tokenRanges": {"{142, 1}": "%date:mm", "{134, 1}": "%date:yyyy", "{136, 1}": "%date:MM", "{140, 1}": "%date:HH", "{138, 1}": "%date:dd"}, "type": "advancedText"}, "showCancelButton": true}, "class": "WorkflowActionShowAlert"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "Action", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "If \"Backup\" was selected...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Action"}, "type": "advancedText"}, "expression2": {"text": "backup", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Create the Backup (Python)", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport editor\nimport os\nfrom zipfile import ZipFile\nimport datetime\nfrom io import BytesIO\nimport json\nimport shutil\n\nt = datetime.datetime.today()\nbackup_filename = 'EditorialBackup_' + t.strftime('%Y_%m_%d-%H_%M') + '.zip'\nwf_path = editor.get_workflows_path()\nwf_files = os.listdir(wf_path)\nsnpt_path = os.path.expanduser('~/Library/Application Support/Snippets')\nsnpt_files = os.listdir(snpt_path)\n\nzip_buffer = BytesIO()\nwith ZipFile(zip_buffer, 'w') as z:\n\t# Backup workflows:\n\tfor filename in wf_files:\n\t\tname, extension = os.path.splitext(filename)\n\t\tif extension in ('.wkflw', '.edcmd'):\n\t\t\tz.write(filename)\n\t# Backup snippets:\n\tos.chdir(snpt_path)\n\tfor filename in snpt_files:\n\t\tname, extension = os.path.splitext(filename)\n\t\tif extension in ('.snpt', '.edcmd'):\n\t\t\tz.write(filename)\n\t# Backup bookmarks\n\tz.writestr('EditorBookmarks.json', json.dumps(editor.get_bookmarks('editor')))\n\tz.writestr('BrowserBookmarks.json', json.dumps(editor.get_bookmarks('browser')))\n\t# Backup local documents:\n\tdoc_path = os.path.expanduser('~/Documents')\n\tshutil.make_archive('Documents', 'zip', doc_path)\n\tz.write('Documents.zip')\n\tos.remove('Documents.zip')\n\nzip_data = zip_buffer.getvalue()\neditor.set_file_contents(backup_filename, zip_data, 'dropbox')\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"duration": 1, "HUDText": {"text": "Backup Created", "tokenRanges": {}, "type": "advancedText"}, "icon": 0}, "class": "WorkflowActionShowHUD"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "If \"Restore\" was selected....", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Action"}, "type": "advancedText"}, "expression2": {"text": "restore", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "List Backups (Python)", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport editor\nimport os\nimport re\n\nwf_path = editor.get_workflows_path()\ndb_path = os.path.join(os.path.split(wf_path)[0], 'Dropbox')\n\nbackups = []\nfiles = os.listdir(db_path)\nfor filename in files:\n\tif re.match('EditorialBackup_.*\\\\.zip$', filename):\n\t\tbackups.append(filename)\nworkflow.set_output('\\n'.join(backups))\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Stop if no backups are found...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"button1Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button3Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button2Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "title": "No Backups Found", "button3Title": "", "button2Title": "", "button1Title": "", "message": {"text": "No backup files were found. You might need to download them first, if you see grayed-out backup files in your Dropbox folder.", "tokenRanges": {}, "type": "advancedText"}, "showCancelButton": false}, "class": "WorkflowActionShowAlert"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"showHUD": false, "HUDTitle": "", "stopOption": 0}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"list": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "Select a Backup", "showInPopover": false, "allowMultipleSelection": false}, "class": "WorkflowActionSelectFromList"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Show Warning Alert", "parameters": {"button1Value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "button3Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button2Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "title": "Warning", "button3Title": "", "button2Title": "", "button1Title": "Continue", "message": {"text": "This will replace all your workflows, snippets, bookmarks, and local documents with the ones that are stored in the selected backup (?).\n\nDocuments that are synced with Dropbox will not be changed.", "tokenRanges": {"{133, 1}": "Input"}, "type": "advancedText"}, "showCancelButton": true}, "class": "WorkflowActionShowAlert"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Restore the Backup (Python)", "parameters": {"script": "#coding: utf-8\nimport workflow\nimport editor\nfrom os import path\nimport os\nfrom zipfile import ZipFile\nimport shutil\nimport json\n\nbackup_filename = workflow.get_input()\ndb_path = path.join(path.split(editor.get_workflows_path())[0], 'Dropbox')\nbackup_path = path.join(db_path, backup_filename)\n\nwith ZipFile(backup_path, 'r') as z:\n\tz.extractall(editor.get_workflows_path())\nwf_path = editor.get_workflows_path()\nsnpt_path = os.path.expanduser('~/Library/Application Support/Snippets')\nfiles = os.listdir(wf_path)\nfor filename in files:\n\tif filename == 'Snippets.edcmd' or path.splitext(filename)[1] == '.snpt':\n\t\tshutil.move(os.path.join(wf_path, filename), os.path.join(snpt_path, filename))\n\tif filename == 'EditorBookmarks.json':\n\t\twith open(os.path.join(wf_path, filename), 'r') as f:\n\t\t\tbookmarks = json.load(f)\n\t\t\teditor.set_bookmarks(bookmarks, 'editor')\n\t\tos.remove(os.path.join(wf_path, filename))\n\tif filename == 'BrowserBookmarks.json':\n\t\twith open(os.path.join(wf_path, filename), 'r') as f:\n\t\t\tbookmarks = json.load(f)\n\t\t\teditor.set_bookmarks(bookmarks, 'browser')\n\t\tos.remove(os.path.join(wf_path, filename))\n\tif filename == 'Documents.zip':\n\t\tdoc_path = os.path.expanduser('~/Documents')\n\t\twith ZipFile(filename, 'r') as docszip:\n\t\t\tnames = docszip.namelist()\n\t\t\tfor name in names:\n\t\t\t\tif not name.startswith('Inbox/'):\n\t\t\t\t\tdocszip.extract(name, doc_path)\n\t\tos.remove(os.path.join(wf_path, filename))\n\neditor.reload_workflows()\neditor.reload_files()\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"duration": 1, "HUDText": {"text": "Backup Restored", "tokenRanges": {}, "type": "advancedText"}, "icon": 0}, "class": "WorkflowActionShowHUD"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}], "name": "Editorial Backup", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone8,4", "systemVersion": "12.0.1"}, "type": "wkflw", "public": true, "icon": "minicons-icons-file-zip.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22jjd1217-122318TS%22%2C%20%22description%22%3A%20%22Saves%20or%20restores%20a%20backup%20of%20all%20Editorial%20workflows%2C%20snippets%2C%20bookmarks%2C%20and%20local%20documents%20as%20a%20zip%20file%20in%20Dropbox%20%28this%20requires%20the%20Dropbox%20account%20to%20be%20linked%29.%5Cr%5Cn%5Cr%5CnPlease%20note%3A%20If%20you%20want%20to%20restore%20a%20backup%20on%20a%20different%20device%2C%20you%20first%20have%20to%20download%20the%20backup%20file%20%28just%20tap%20on%20it%20in%20the%20document%20list%29.%20This%20is%20required%20because%20Editorial%20doesn%27t%20sync%20zip%20files%20by%20default.%5Cr%5Cn%5Cr%5CnRestoring%20a%20backup%20will%20%2Aoverwrite%2A%20all%20existing%20workflows%2C%20snippets%2C%20and%20bookmarks%2C%20so%20it%27s%20possible%20that%20you%27ll%20lose%20data%20this%20way.%20The%20best%20way%20to%20avoid%20any%20data%20loss%20is%20to%20create%20a%20backup%20before%20restoring%20anything.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22button1Value%22%3A%20%7B%22text%22%3A%20%22backup%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button3Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button2Value%22%3A%20%7B%22text%22%3A%20%22restore%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Create%20or%20Restore%3F%22%2C%20%22button3Title%22%3A%20%22%22%2C%20%22button2Title%22%3A%20%22Restore...%22%2C%20%22button1Title%22%3A%20%22Create%20Backup%22%2C%20%22message%22%3A%20%7B%22text%22%3A%20%22The%20backup%20of%20your%20workflows%2C%20snippets%2C%20bookmarks%2C%20and%20local%20documents%20will%20be%20created%20as%20a%20zip%20file%20in%20your%20Dropbox%20%28EditorialBackup_%3F_%3F_%3F-%3F_%3F.zip%29.%20Editorial%20needs%20to%20be%20linked%20to%20Dropbox%20for%20this%20to%20work.%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B142%2C%201%7D%22%3A%20%22%25date%3Amm%22%2C%20%22%7B134%2C%201%7D%22%3A%20%22%25date%3Ayyyy%22%2C%20%22%7B136%2C%201%7D%22%3A%20%22%25date%3AMM%22%2C%20%22%7B140%2C%201%7D%22%3A%20%22%25date%3AHH%22%2C%20%22%7B138%2C%201%7D%22%3A%20%22%25date%3Add%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22showCancelButton%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionShowAlert%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22Action%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22If%20%5C%22Backup%5C%22%20was%20selected...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Action%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22backup%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Create%20the%20Backup%20%28Python%29%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20editor%5Cnimport%20os%5Cnfrom%20zipfile%20import%20ZipFile%5Cnimport%20datetime%5Cnfrom%20io%20import%20BytesIO%5Cnimport%20json%5Cnimport%20shutil%5Cn%5Cnt%20%3D%20datetime.datetime.today%28%29%5Cnbackup_filename%20%3D%20%27EditorialBackup_%27%20%2B%20t.strftime%28%27%25Y_%25m_%25d-%25H_%25M%27%29%20%2B%20%27.zip%27%5Cnwf_path%20%3D%20editor.get_workflows_path%28%29%5Cnwf_files%20%3D%20os.listdir%28wf_path%29%5Cnsnpt_path%20%3D%20os.path.expanduser%28%27%7E%2FLibrary%2FApplication%20Support%2FSnippets%27%29%5Cnsnpt_files%20%3D%20os.listdir%28snpt_path%29%5Cn%5Cnzip_buffer%20%3D%20BytesIO%28%29%5Cnwith%20ZipFile%28zip_buffer%2C%20%27w%27%29%20as%20z%3A%5Cn%5Ct%23%20Backup%20workflows%3A%5Cn%5Ctfor%20filename%20in%20wf_files%3A%5Cn%5Ct%5Ctname%2C%20extension%20%3D%20os.path.splitext%28filename%29%5Cn%5Ct%5Ctif%20extension%20in%20%28%27.wkflw%27%2C%20%27.edcmd%27%29%3A%5Cn%5Ct%5Ct%5Ctz.write%28filename%29%5Cn%5Ct%23%20Backup%20snippets%3A%5Cn%5Ctos.chdir%28snpt_path%29%5Cn%5Ctfor%20filename%20in%20snpt_files%3A%5Cn%5Ct%5Ctname%2C%20extension%20%3D%20os.path.splitext%28filename%29%5Cn%5Ct%5Ctif%20extension%20in%20%28%27.snpt%27%2C%20%27.edcmd%27%29%3A%5Cn%5Ct%5Ct%5Ctz.write%28filename%29%5Cn%5Ct%23%20Backup%20bookmarks%5Cn%5Ctz.writestr%28%27EditorBookmarks.json%27%2C%20json.dumps%28editor.get_bookmarks%28%27editor%27%29%29%29%5Cn%5Ctz.writestr%28%27BrowserBookmarks.json%27%2C%20json.dumps%28editor.get_bookmarks%28%27browser%27%29%29%29%5Cn%5Ct%23%20Backup%20local%20documents%3A%5Cn%5Ctdoc_path%20%3D%20os.path.expanduser%28%27%7E%2FDocuments%27%29%5Cn%5Ctshutil.make_archive%28%27Documents%27%2C%20%27zip%27%2C%20doc_path%29%5Cn%5Ctz.write%28%27Documents.zip%27%29%5Cn%5Ctos.remove%28%27Documents.zip%27%29%5Cn%5Cnzip_data%20%3D%20zip_buffer.getvalue%28%29%5Cneditor.set_file_contents%28backup_filename%2C%20zip_data%2C%20%27dropbox%27%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22duration%22%3A%201%2C%20%22HUDText%22%3A%20%7B%22text%22%3A%20%22Backup%20Created%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22icon%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionShowHUD%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22If%20%5C%22Restore%5C%22%20was%20selected....%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Action%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22restore%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22List%20Backups%20%28Python%29%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20editor%5Cnimport%20os%5Cnimport%20re%5Cn%5Cnwf_path%20%3D%20editor.get_workflows_path%28%29%5Cndb_path%20%3D%20os.path.join%28os.path.split%28wf_path%29%5B0%5D%2C%20%27Dropbox%27%29%5Cn%5Cnbackups%20%3D%20%5B%5D%5Cnfiles%20%3D%20os.listdir%28db_path%29%5Cnfor%20filename%20in%20files%3A%5Cn%5Ctif%20re.match%28%27EditorialBackup_.%2A%5C%5C%5C%5C.zip%24%27%2C%20filename%29%3A%5Cn%5Ct%5Ctbackups.append%28filename%29%5Cnworkflow.set_output%28%27%5C%5Cn%27.join%28backups%29%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Stop%20if%20no%20backups%20are%20found...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22button1Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button3Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button2Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22No%20Backups%20Found%22%2C%20%22button3Title%22%3A%20%22%22%2C%20%22button2Title%22%3A%20%22%22%2C%20%22button1Title%22%3A%20%22%22%2C%20%22message%22%3A%20%7B%22text%22%3A%20%22No%20backup%20files%20were%20found.%20You%20might%20need%20to%20download%20them%20first%2C%20if%20you%20see%20grayed-out%20backup%20files%20in%20your%20Dropbox%20folder.%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22showCancelButton%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionShowAlert%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20false%2C%20%22HUDTitle%22%3A%20%22%22%2C%20%22stopOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22list%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Select%20a%20Backup%22%2C%20%22showInPopover%22%3A%20false%2C%20%22allowMultipleSelection%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionSelectFromList%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Show%20Warning%20Alert%22%2C%20%22parameters%22%3A%20%7B%22button1Value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button3Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button2Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Warning%22%2C%20%22button3Title%22%3A%20%22%22%2C%20%22button2Title%22%3A%20%22%22%2C%20%22button1Title%22%3A%20%22Continue%22%2C%20%22message%22%3A%20%7B%22text%22%3A%20%22This%20will%20replace%20all%20your%20workflows%2C%20snippets%2C%20bookmarks%2C%20and%20local%20documents%20with%20the%20ones%20that%20are%20stored%20in%20the%20selected%20backup%20%28%3F%29.%5Cn%5CnDocuments%20that%20are%20synced%20with%20Dropbox%20will%20not%20be%20changed.%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B133%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22showCancelButton%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionShowAlert%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Restore%20the%20Backup%20%28Python%29%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cnimport%20editor%5Cnfrom%20os%20import%20path%5Cnimport%20os%5Cnfrom%20zipfile%20import%20ZipFile%5Cnimport%20shutil%5Cnimport%20json%5Cn%5Cnbackup_filename%20%3D%20workflow.get_input%28%29%5Cndb_path%20%3D%20path.join%28path.split%28editor.get_workflows_path%28%29%29%5B0%5D%2C%20%27Dropbox%27%29%5Cnbackup_path%20%3D%20path.join%28db_path%2C%20backup_filename%29%5Cn%5Cnwith%20ZipFile%28backup_path%2C%20%27r%27%29%20as%20z%3A%5Cn%5Ctz.extractall%28editor.get_workflows_path%28%29%29%5Cnwf_path%20%3D%20editor.get_workflows_path%28%29%5Cnsnpt_path%20%3D%20os.path.expanduser%28%27%7E%2FLibrary%2FApplication%20Support%2FSnippets%27%29%5Cnfiles%20%3D%20os.listdir%28wf_path%29%5Cnfor%20filename%20in%20files%3A%5Cn%5Ctif%20filename%20%3D%3D%20%27Snippets.edcmd%27%20or%20path.splitext%28filename%29%5B1%5D%20%3D%3D%20%27.snpt%27%3A%5Cn%5Ct%5Ctshutil.move%28os.path.join%28wf_path%2C%20filename%29%2C%20os.path.join%28snpt_path%2C%20filename%29%29%5Cn%5Ctif%20filename%20%3D%3D%20%27EditorBookmarks.json%27%3A%5Cn%5Ct%5Ctwith%20open%28os.path.join%28wf_path%2C%20filename%29%2C%20%27r%27%29%20as%20f%3A%5Cn%5Ct%5Ct%5Ctbookmarks%20%3D%20json.load%28f%29%5Cn%5Ct%5Ct%5Cteditor.set_bookmarks%28bookmarks%2C%20%27editor%27%29%5Cn%5Ct%5Ctos.remove%28os.path.join%28wf_path%2C%20filename%29%29%5Cn%5Ctif%20filename%20%3D%3D%20%27BrowserBookmarks.json%27%3A%5Cn%5Ct%5Ctwith%20open%28os.path.join%28wf_path%2C%20filename%29%2C%20%27r%27%29%20as%20f%3A%5Cn%5Ct%5Ct%5Ctbookmarks%20%3D%20json.load%28f%29%5Cn%5Ct%5Ct%5Cteditor.set_bookmarks%28bookmarks%2C%20%27browser%27%29%5Cn%5Ct%5Ctos.remove%28os.path.join%28wf_path%2C%20filename%29%29%5Cn%5Ctif%20filename%20%3D%3D%20%27Documents.zip%27%3A%5Cn%5Ct%5Ctdoc_path%20%3D%20os.path.expanduser%28%27%7E%2FDocuments%27%29%5Cn%5Ct%5Ctwith%20ZipFile%28filename%2C%20%27r%27%29%20as%20docszip%3A%5Cn%5Ct%5Ct%5Ctnames%20%3D%20docszip.namelist%28%29%5Cn%5Ct%5Ct%5Ctfor%20name%20in%20names%3A%5Cn%5Ct%5Ct%5Ct%5Ctif%20not%20name.startswith%28%27Inbox%2F%27%29%3A%5Cn%5Ct%5Ct%5Ct%5Ct%5Ctdocszip.extract%28name%2C%20doc_path%29%5Cn%5Ct%5Ctos.remove%28os.path.join%28wf_path%2C%20filename%29%29%5Cn%5Cneditor.reload_workflows%28%29%5Cneditor.reload_files%28%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22duration%22%3A%201%2C%20%22HUDText%22%3A%20%7B%22text%22%3A%20%22Backup%20Restored%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22icon%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionShowHUD%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%5D%2C%20%22name%22%3A%20%22Editorial%20Backup%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone8%2C4%22%2C%20%22systemVersion%22%3A%20%2212.0.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-file-zip.png%22%7D", "description": "Saves or restores a backup of all Editorial workflows, snippets, bookmarks, and local documents as a zip file in Dropbox (this requires the Dropbox account to be linked).\r\n\r\nPlease note: If you want to restore a backup on a different device, you first have to download the backup file (just tap on it in the document list). This is required because Editorial doesn't sync zip files by default.\r\n\r\nRestoring a backup will *overwrite* all existing workflows, snippets, and bookmarks, so it's possible that you'll lose data this way. The best way to avoid any data loss is to create a backup before restoring anything.", "title": "Editorial Backup"}, {"url": "http://editorial-app.appspot.com/workflow/5910126489763840/jA-XLNdMnH4", "workflow_data": {"username": "tsumner868", "description": "Shows a list of URLs in the current document. Selecting one of the URLs opens it in the browser panel.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionExtractURLs"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "If no URLs are found...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"showHUD": true, "HUDTitle": "No URLs found", "stopOption": 0}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"list": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "title": "", "showInPopover": true, "allowMultipleSelection": false}, "class": "WorkflowActionSelectFromList"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "If URL is selected...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"URL": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "waitUntilLoaded": false, "revealBrowserAutomatically": true, "openIn": 0, "tabOption": 0}, "class": "WorkflowActionOpenURL"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}], "name": "List URLs...", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone8,4", "systemVersion": "12.1.2"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_EDIT.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22tsumner868%22%2C%20%22description%22%3A%20%22Shows%20a%20list%20of%20URLs%20in%20the%20current%20document.%20Selecting%20one%20of%20the%20URLs%20opens%20it%20in%20the%20browser%20panel.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionExtractURLs%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22If%20no%20URLs%20are%20found...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20true%2C%20%22HUDTitle%22%3A%20%22No%20URLs%20found%22%2C%20%22stopOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22list%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22%22%2C%20%22showInPopover%22%3A%20true%2C%20%22allowMultipleSelection%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionSelectFromList%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22If%20URL%20is%20selected...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22URL%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22waitUntilLoaded%22%3A%20false%2C%20%22revealBrowserAutomatically%22%3A%20true%2C%20%22openIn%22%3A%200%2C%20%22tabOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%5D%2C%20%22name%22%3A%20%22List%20URLs...%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone8%2C4%22%2C%20%22systemVersion%22%3A%20%2212.1.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_EDIT.png%22%7D", "description": "Shows a list of URLs in the current document. Selecting one of the URLs opens it in the browser panel.", "title": "List URLs..."}, {"url": "http://editorial-app.appspot.com/workflow/5785580961005568/S2feID9gFGk", "workflow_data": {"username": "https://rayalez.com", "description": "Paste text from iBooks, removes annoying Excerpt From message.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionGetClipboard"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport workflow\n\ntext = workflow.get_input()\n\ntext = text.split(\"Excerpt From\", 1)[0]\n\ntext = text.strip()\n\ntext = text[1:-1] # get rid of quotes\n\ntext += \"\\n\"\n\nworkflow.set_output(text)\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}], "name": "Paste from iBooks", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad5,1", "systemVersion": "12.1"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22https%3A%2F%2Frayalez.com%22%2C%20%22description%22%3A%20%22Paste%20text%20from%20iBooks%2C%20removes%20annoying%20Excerpt%20From%20message.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionGetClipboard%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20workflow%5Cn%5Cntext%20%3D%20workflow.get_input%28%29%5Cn%5Cntext%20%3D%20text.split%28%5C%22Excerpt%20From%5C%22%2C%201%29%5B0%5D%5Cn%5Cntext%20%3D%20text.strip%28%29%5Cn%5Cntext%20%3D%20text%5B1%3A-1%5D%20%23%20get%20rid%20of%20quotes%5Cn%5Cntext%20%2B%3D%20%5C%22%5C%5Cn%5C%22%5Cn%5Cnworkflow.set_output%28text%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%5D%2C%20%22name%22%3A%20%22Paste%20from%20iBooks%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad5%2C1%22%2C%20%22systemVersion%22%3A%20%2212.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "Paste text from iBooks, removes annoying Excerpt From message.", "title": "Paste from iBooks"}, {"url": "http://editorial-app.appspot.com/workflow/5886877966008320/007_yPWV8Lg", "workflow_data": {"username": "https://rayalez.com", "description": "Insert current date", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?-?-?", "tokenRanges": {"{0, 1}": "%date:yyyy", "{4, 1}": "%date:dd", "{2, 1}": "%date:MM"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}], "name": "Insert current date", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad4,4", "systemVersion": "10.0.2"}, "type": "wkflw", "public": true, "icon": "minicons-icons-pages-text-&-picture-2.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22https%3A%2F%2Frayalez.com%22%2C%20%22description%22%3A%20%22Insert%20current%20date%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F-%3F-%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25date%3Ayyyy%22%2C%20%22%7B4%2C%201%7D%22%3A%20%22%25date%3Add%22%2C%20%22%7B2%2C%201%7D%22%3A%20%22%25date%3AMM%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%5D%2C%20%22name%22%3A%20%22Insert%20current%20date%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad4%2C4%22%2C%20%22systemVersion%22%3A%20%2210.0.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-pages-text-%26-picture-2.png%22%7D", "description": "Insert current date", "title": "Insert current date"}, {"url": "http://editorial-app.appspot.com/workflow/5873448609906688/5JPhHS4_Sk4", "workflow_data": {"username": "https://rayalez.com", "description": "Move cursor to the end of document", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"numberOfSteps": {"text": "1", "tokenRanges": {}, "type": "advancedText"}, "direction": 1, "unit": 0}, "class": "WorkflowActionMoveCaret"}], "name": "Move cursor to the end of document", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad4,4", "systemVersion": "10.0.2"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_DOWN.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22https%3A%2F%2Frayalez.com%22%2C%20%22description%22%3A%20%22Move%20cursor%20to%20the%20end%20of%20document%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22numberOfSteps%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22direction%22%3A%201%2C%20%22unit%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionMoveCaret%22%7D%5D%2C%20%22name%22%3A%20%22Move%20cursor%20to%20the%20end%20of%20document%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad4%2C4%22%2C%20%22systemVersion%22%3A%20%2210.0.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_DOWN.png%22%7D", "description": "Move cursor to the end of document", "title": "Move cursor to the end of document"}, {"url": "http://editorial-app.appspot.com/workflow/5851851501076480/XzDrXl_drOE", "workflow_data": {"username": "http://rayalez.com", "description": "Insert current time", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?:?", "tokenRanges": {"{0, 1}": "%date:HH", "{2, 1}": "%date:mm"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}], "name": "Insert current time", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad4,4", "systemVersion": "10.0.2"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_TIME.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22http%3A%2F%2Frayalez.com%22%2C%20%22description%22%3A%20%22Insert%20current%20time%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%3A%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25date%3AHH%22%2C%20%22%7B2%2C%201%7D%22%3A%20%22%25date%3Amm%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%5D%2C%20%22name%22%3A%20%22Insert%20current%20time%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad4%2C4%22%2C%20%22systemVersion%22%3A%20%2210.0.2%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_TIME.png%22%7D", "description": "Insert current time", "title": "Insert current time"}, {"url": "http://editorial-app.appspot.com/workflow/5810959385886720/0c514NJYyWE", "workflow_data": {"username": "", "description": "Saves an image from the camera roll as a jpeg file in the relatively 'resources' directory, and inserts a markdown image reference,using current time.\n\nyou can change the label 'yypE' into anything you want.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "A document has to be open...", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:filename"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"showHUD": true, "HUDTitle": "No Document Selected"}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"script": "#coding: utf-8\nimport photos\nimport workflow\nimport console\nimport editor\nimport os\nimport io\nimport datetime\nimport time\n\n\n\nimg = photos.pick_image()\nif not img:\n\tworkflow.stop()\n\ndefault_name = 'resources/yypEImage'+str(int(time.time()))+'.jpg'\n\nimg_data = io.BytesIO()\nimg.save(img_data, 'jpeg')\n\neditor.set_file_contents(default_name,img_data.getvalue(), '')\nworkflow.set_output(default_name)\n"}, "class": "WorkflowActionRunScript"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "![Image](?)\n", "tokenRanges": {"{9, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}], "name": "Insert Image...", "version": "133001", "device": {"userInterfaceIdiom": 1, "model": "iPad7,3", "systemVersion": "12.1"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_PLUS.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Saves%20an%20image%20from%20the%20camera%20roll%20as%20a%20jpeg%20file%20in%20the%20relatively%20%27resources%27%20directory%2C%20and%20inserts%20a%20markdown%20image%20reference%2Cusing%20current%20time.%5Cn%5Cnyou%20can%20change%20the%20label%20%27yypE%27%20into%20anything%20you%20want.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22A%20document%20has%20to%20be%20open...%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Afilename%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20true%2C%20%22HUDTitle%22%3A%20%22No%20Document%20Selected%22%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22script%22%3A%20%22%23coding%3A%20utf-8%5Cnimport%20photos%5Cnimport%20workflow%5Cnimport%20console%5Cnimport%20editor%5Cnimport%20os%5Cnimport%20io%5Cnimport%20datetime%5Cnimport%20time%5Cn%5Cn%5Cn%5Cnimg%20%3D%20photos.pick_image%28%29%5Cnif%20not%20img%3A%5Cn%5Ctworkflow.stop%28%29%5Cn%5Cndefault_name%20%3D%20%27resources%2FyypEImage%27%2Bstr%28int%28time.time%28%29%29%29%2B%27.jpg%27%5Cn%5Cnimg_data%20%3D%20io.BytesIO%28%29%5Cnimg.save%28img_data%2C%20%27jpeg%27%29%5Cn%5Cneditor.set_file_contents%28default_name%2Cimg_data.getvalue%28%29%2C%20%27%27%29%5Cnworkflow.set_output%28default_name%29%5Cn%22%7D%2C%20%22class%22%3A%20%22WorkflowActionRunScript%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%21%5BImage%5D%28%3F%29%5Cn%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B9%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%5D%2C%20%22name%22%3A%20%22Insert%20Image...%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%201%2C%20%22model%22%3A%20%22iPad7%2C3%22%2C%20%22systemVersion%22%3A%20%2212.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_PLUS.png%22%7D", "description": "Saves an image from the camera roll as a jpeg file in the relatively 'resources' directory, and inserts a markdown image reference,using current time.\n\nyou can change the label 'yypE' into anything you want.", "title": "Insert Image..."}, {"url": "http://editorial-app.appspot.com/workflow/5809178450853888/XvM-UdM2ckU", "workflow_data": {"username": "Sac", "name": "Working Copy", "description": "Workflow for transferring files from Working Copy to Editorial and back again.\n\nWhen called with input, it will pick the filename from the first line and write the other lines into this file, which lets Working Copy create a new file with predefined content. The filename contains a unique identifier for remembering where it belongs. To avoid overwriting files in Editorial by mistake, the previous contents of files are put in WorkingCopy.bak\n\nWhen this workflow is called without any input the contents of the current file is written back to Working Copy.\n\nChange askcommit variable to 0 if you just want to save and not be asked to commit.\n\nTo install a new version of this workflow delete or rename this one and perform Edit in Editorial from Working Copy.", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "all", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "all"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "key", "value": {"text": "UBVR35BMSA", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "askcommit", "value": {"text": "1", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "path", "value": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:filename"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "%editor:file-extension"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "path", "value": {"text": "?.?", "tokenRanges": {"{0, 1}": "%editor:filename", "{2, 1}": "%editor:file-extension"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"revealBrowserAutomatically": true, "URL:__URL_ESCAPE__": 1, "URL": {"text": "working-copy://x-callback-url/write/?key=?&askcommit=?&path=?&text=?", "tokenRanges": {"{53, 1}": "askcommit", "{67, 1}": "Input", "{60, 1}": "path", "{41, 1}": "key"}, "type": "advancedText"}, "openIn": 1, "tabOption": 0, "waitUntilLoaded": false}, "class": "WorkflowActionOpenURL"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"showHUD": false, "HUDTitle": ""}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"regex": {"text": "(.*)\\n", "tokenRanges": {}, "type": "advancedText"}, "matchGroup": "1", "searchTypeOption": 0}, "class": "WorkflowActionMatchRegularExpression"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "filename", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "all"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"findOption": 1, "find": {"text": "?\n", "tokenRanges": {"{0, 1}": "filename"}, "type": "advancedText"}, "replace": {"text": "", "tokenRanges": {}, "type": "advancedText"}}, "class": "WorkflowActionFindReplace"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "text", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": false, "ifNotExists": 0, "filename": "%var:filename"}, "class": "WorkflowActionGetFileContents"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 1}, "class": "WorkflowActionCondition"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": false, "text": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}, "ifNotExists": 0, "filename": "WorkingCopy.bak"}, "class": "WorkflowActionSetFileContents"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"duration": 2, "HUDText": {"text": "Previous content of ? put in WorkingCopy.bak", "tokenRanges": {"{20, 1}": "filename"}, "type": "advancedText"}, "icon": 0}, "class": "WorkflowActionShowHUD"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": false, "text": {"text": "?", "tokenRanges": {"{0, 1}": "text"}, "type": "advancedText"}, "ifNotExists": 0, "filename": "%var:filename"}, "class": "WorkflowActionSetFileContents"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"inDropbox": false, "filename": "%var:filename"}, "class": "WorkflowActionOpenDocument"}], "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone10,3", "systemVersion": "12.1"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_ELECTRICITY.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22Sac%22%2C%20%22name%22%3A%20%22Working%20Copy%22%2C%20%22description%22%3A%20%22Workflow%20for%20transferring%20files%20from%20Working%20Copy%20to%20Editorial%20and%20back%20again.%5Cn%5CnWhen%20called%20with%20input%2C%20it%20will%20pick%20the%20filename%20from%20the%20first%20line%20and%20write%20the%20other%20lines%20into%20this%20file%2C%20which%20lets%20Working%20Copy%20create%20a%20new%20file%20with%20predefined%20content.%20The%20filename%20contains%20a%20unique%20identifier%20for%20remembering%20where%20it%20belongs.%20To%20avoid%20overwriting%20files%20in%20Editorial%20by%20mistake%2C%20the%20previous%20contents%20of%20files%20are%20put%20in%20WorkingCopy.bak%5Cn%5CnWhen%20this%20workflow%20is%20called%20without%20any%20input%20the%20contents%20of%20the%20current%20file%20is%20written%20back%20to%20Working%20Copy.%5Cn%5CnChange%20askcommit%20variable%20to%200%20if%20you%20just%20want%20to%20save%20and%20not%20be%20asked%20to%20commit.%5Cn%5CnTo%20install%20a%20new%20version%20of%20this%20workflow%20delete%20or%20rename%20this%20one%20and%20perform%20Edit%20in%20Editorial%20from%20Working%20Copy.%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22all%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22all%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22key%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22UBVR35BMSA%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22askcommit%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%221%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22path%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Afilename%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Afile-extension%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22path%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F.%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22%25editor%3Afilename%22%2C%20%22%7B2%2C%201%7D%22%3A%20%22%25editor%3Afile-extension%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22revealBrowserAutomatically%22%3A%20true%2C%20%22URL%3A__URL_ESCAPE__%22%3A%201%2C%20%22URL%22%3A%20%7B%22text%22%3A%20%22working-copy%3A%2F%2Fx-callback-url%2Fwrite%2F%3Fkey%3D%3F%26askcommit%3D%3F%26path%3D%3F%26text%3D%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B53%2C%201%7D%22%3A%20%22askcommit%22%2C%20%22%7B67%2C%201%7D%22%3A%20%22Input%22%2C%20%22%7B60%2C%201%7D%22%3A%20%22path%22%2C%20%22%7B41%2C%201%7D%22%3A%20%22key%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22openIn%22%3A%201%2C%20%22tabOption%22%3A%200%2C%20%22waitUntilLoaded%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20false%2C%20%22HUDTitle%22%3A%20%22%22%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22regex%22%3A%20%7B%22text%22%3A%20%22%28.%2A%29%5C%5Cn%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22matchGroup%22%3A%20%221%22%2C%20%22searchTypeOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionMatchRegularExpression%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22filename%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22all%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22findOption%22%3A%201%2C%20%22find%22%3A%20%7B%22text%22%3A%20%22%3F%5Cn%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22filename%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22replace%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFindReplace%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22text%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20false%2C%20%22ifNotExists%22%3A%200%2C%20%22filename%22%3A%20%22%25var%3Afilename%22%7D%2C%20%22class%22%3A%20%22WorkflowActionGetFileContents%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%201%7D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20false%2C%20%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ifNotExists%22%3A%200%2C%20%22filename%22%3A%20%22WorkingCopy.bak%22%7D%2C%20%22class%22%3A%20%22WorkflowActionSetFileContents%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22duration%22%3A%202%2C%20%22HUDText%22%3A%20%7B%22text%22%3A%20%22Previous%20content%20of%20%3F%20put%20in%20WorkingCopy.bak%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B20%2C%201%7D%22%3A%20%22filename%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22icon%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionShowHUD%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20false%2C%20%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22text%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22ifNotExists%22%3A%200%2C%20%22filename%22%3A%20%22%25var%3Afilename%22%7D%2C%20%22class%22%3A%20%22WorkflowActionSetFileContents%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22inDropbox%22%3A%20false%2C%20%22filename%22%3A%20%22%25var%3Afilename%22%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenDocument%22%7D%5D%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone10%2C3%22%2C%20%22systemVersion%22%3A%20%2212.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_ELECTRICITY.png%22%7D", "description": "Workflow for transferring files from Working Copy to Editorial and back again.\n\nWhen called with input, it will pick the filename from the first line and write the other lines into this file, which lets Working Copy create a new file with predefined content. The filename contains a unique identifier for remembering where it belongs. To avoid overwriting files in Editorial by mistake, the previous contents of files are put in WorkingCopy.bak\n\nWhen this workflow is called without any input the contents of the current file is written back to Working Copy.\n\nChange askcommit variable to 0 if you just want to save and not be asked to commit.\n\nTo install a new version of this workflow delete or rename this one and perform Edit in Editorial from Working Copy.", "title": "Working Copy"}, {"url": "http://editorial-app.appspot.com/workflow/5779156361019392/BgLeoUtFeRY", "workflow_data": {"username": "", "description": "Pastes the contents of the clipboard as a Markdown block quote, code block, or regular paragraph.", "actions": [{"customTitle": "Stop if empty", "parameters": {"expression1": {"text": "?", "tokenRanges": {"{0, 1}": "Clipboard"}, "type": "advancedText"}, "expression2": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "comparisonType": 0}, "pauseWithoutShowingParameters": false, "subActions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"showHUD": true, "HUDTitle": "Clipboard Empty"}, "class": "WorkflowActionStopWorkflow"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {}, "class": "WorkflowActionConditionEnd"}], "class": "WorkflowActionCondition", "pauseBeforeRunning": false}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Get Clipboard", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "Clipboard"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Count Words", "parameters": {"countOption": 0}, "class": "WorkflowActionCountWords"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"button1Value": {"text": "> ", "tokenRanges": {}, "type": "advancedText"}, "button3Value": {"text": "", "tokenRanges": {}, "type": "advancedText"}, "button2Value": {"text": "    ", "tokenRanges": {}, "type": "advancedText"}, "title": "Paste as...", "button3Title": "Paragraph", "button2Title": "Code Block", "button1Title": "Block Quote", "message": {"text": "(? words)", "tokenRanges": {"{1, 1}": "Input"}, "type": "advancedText"}, "showCancelButton": true}, "class": "WorkflowActionShowAlert"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "Prefix", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "Get Clipboard", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "Clipboard"}, "type": "advancedText"}}, "class": "WorkflowActionFormatString"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": "?", "tokenRanges": {"{0, 1}": "Prefix"}, "type": "advancedText"}, "prefixOrSuffix": 0}, "class": "WorkflowActionPrefixSuffixLines"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"replacement": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionReplaceSelectedText"}], "name": "Paste as...", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone9,4", "systemVersion": "12.1"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_EXPORT.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22%22%2C%20%22description%22%3A%20%22Pastes%20the%20contents%20of%20the%20clipboard%20as%20a%20Markdown%20block%20quote%2C%20code%20block%2C%20or%20regular%20paragraph.%22%2C%20%22actions%22%3A%20%5B%7B%22customTitle%22%3A%20%22Stop%20if%20empty%22%2C%20%22parameters%22%3A%20%7B%22expression1%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Clipboard%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22expression2%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22comparisonType%22%3A%200%7D%2C%20%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22subActions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22showHUD%22%3A%20true%2C%20%22HUDTitle%22%3A%20%22Clipboard%20Empty%22%7D%2C%20%22class%22%3A%20%22WorkflowActionStopWorkflow%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%7D%2C%20%22class%22%3A%20%22WorkflowActionConditionEnd%22%7D%5D%2C%20%22class%22%3A%20%22WorkflowActionCondition%22%2C%20%22pauseBeforeRunning%22%3A%20false%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Get%20Clipboard%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Clipboard%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Count%20Words%22%2C%20%22parameters%22%3A%20%7B%22countOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionCountWords%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22button1Value%22%3A%20%7B%22text%22%3A%20%22%3E%20%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button3Value%22%3A%20%7B%22text%22%3A%20%22%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22button2Value%22%3A%20%7B%22text%22%3A%20%22%20%20%20%20%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22Paste%20as...%22%2C%20%22button3Title%22%3A%20%22Paragraph%22%2C%20%22button2Title%22%3A%20%22Code%20Block%22%2C%20%22button1Title%22%3A%20%22Block%20Quote%22%2C%20%22message%22%3A%20%7B%22text%22%3A%20%22%28%3F%20words%29%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B1%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22showCancelButton%22%3A%20true%7D%2C%20%22class%22%3A%20%22WorkflowActionShowAlert%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22Prefix%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22Get%20Clipboard%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Clipboard%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionFormatString%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Prefix%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22prefixOrSuffix%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionPrefixSuffixLines%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22replacement%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionReplaceSelectedText%22%7D%5D%2C%20%22name%22%3A%20%22Paste%20as...%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone9%2C4%22%2C%20%22systemVersion%22%3A%20%2212.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_EXPORT.png%22%7D", "description": "Pastes the contents of the clipboard as a Markdown block quote, code block, or regular paragraph.", "title": "Paste as..."}, {"url": "http://editorial-app.appspot.com/workflow/5816692563247104/nnMLnJ2k-ME", "workflow_data": {"username": "derek", "description": "Paired with the connected Drafts Actions, this workflow allows you to send a Draft here for editing, then send edited text back to the original Draft, overwriting it. \n\nEditorial Roundtrip: https://actions.getdrafts.com/a/1Q9\nEditorial Return: https://actions.getdrafts.com/a/1Q0", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"foldedTextReplacement": "\u2026", "foldedTextOption": 0}, "class": "WorkflowActionGetEditorText"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"revealBrowserAutomatically": true, "URL:__URL_ESCAPE__": 1, "URL": {"text": "drafts5://x-callback-url/runAction?text=?&action=Editorial%20Return", "tokenRanges": {"{40, 1}": "Input"}, "type": "advancedText"}, "openIn": 1, "tabOption": 0, "waitUntilLoaded": false}, "class": "WorkflowActionOpenURL"}], "name": "back to drafts", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone10,2", "systemVersion": "12.1"}, "type": "wkflw", "public": true, "icon": "TYPICONS-ALL_SPANNER.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22derek%22%2C%20%22description%22%3A%20%22Paired%20with%20the%20connected%20Drafts%20Actions%2C%20this%20workflow%20allows%20you%20to%20send%20a%20Draft%20here%20for%20editing%2C%20then%20send%20edited%20text%20back%20to%20the%20original%20Draft%2C%20overwriting%20it.%20%5Cn%5CnEditorial%20Roundtrip%3A%20https%3A%2F%2Factions.getdrafts.com%2Fa%2F1Q9%5CnEditorial%20Return%3A%20https%3A%2F%2Factions.getdrafts.com%2Fa%2F1Q0%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22foldedTextReplacement%22%3A%20%22%5Cu2026%22%2C%20%22foldedTextOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionGetEditorText%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22revealBrowserAutomatically%22%3A%20true%2C%20%22URL%3A__URL_ESCAPE__%22%3A%201%2C%20%22URL%22%3A%20%7B%22text%22%3A%20%22drafts5%3A%2F%2Fx-callback-url%2FrunAction%3Ftext%3D%3F%26action%3DEditorial%2520Return%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B40%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22openIn%22%3A%201%2C%20%22tabOption%22%3A%200%2C%20%22waitUntilLoaded%22%3A%20false%7D%2C%20%22class%22%3A%20%22WorkflowActionOpenURL%22%7D%5D%2C%20%22name%22%3A%20%22back%20to%20drafts%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone10%2C2%22%2C%20%22systemVersion%22%3A%20%2212.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22TYPICONS-ALL_SPANNER.png%22%7D", "description": "Paired with the connected Drafts Actions, this workflow allows you to send a Draft here for editing, then send edited text back to the original Draft, overwriting it. \n\nEditorial Roundtrip: https://actions.getdrafts.com/a/1Q9\nEditorial Return: https://actions.getdrafts.com/a/1Q0", "title": "back to drafts"}, {"url": "http://editorial-app.appspot.com/workflow/5846063428665344/1K1ZVcgCAiY", "workflow_data": {"username": "ReceiveEdit", "description": "Receive a new content and edit it in Editorial. Useful to callback with Shortcuts ", "actions": [{"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "text", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"text": {"text": ".txt", "tokenRanges": {}, "type": "advancedText"}, "title": "enter file name to create", "multiLineOption": 0}, "class": "WorkflowActionRequestTextInput"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"name": "fn", "value": {"text": "?", "tokenRanges": {"{0, 1}": "Input"}, "type": "advancedText"}}, "class": "WorkflowActionStoreVariable"}, {"pauseWithoutShowingParameters": false, "pauseBeforeRunning": false, "customTitle": "", "parameters": {"content": {"text": "?", "tokenRanges": {"{0, 1}": "text"}, "type": "advancedText"}, "open": true, "filename": {"text": "?", "tokenRanges": {"{0, 1}": "fn"}, "type": "advancedText"}}, "class": "WorkflowActionCreateNewDocument"}], "name": "ReceiveEdit", "version": "133001", "device": {"userInterfaceIdiom": 0, "model": "iPhone10,5", "systemVersion": "12.0.1"}, "type": "wkflw", "public": true, "icon": "minicons-icons-actions-add-big-1.png"}, "install_url": "editorial://add-workflow?workflow-data=%7B%22username%22%3A%20%22ReceiveEdit%22%2C%20%22description%22%3A%20%22Receive%20a%20new%20content%20and%20edit%20it%20in%20Editorial.%20Useful%20to%20callback%20with%20Shortcuts%20%22%2C%20%22actions%22%3A%20%5B%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22text%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22text%22%3A%20%7B%22text%22%3A%20%22.txt%22%2C%20%22tokenRanges%22%3A%20%7B%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22title%22%3A%20%22enter%20file%20name%20to%20create%22%2C%20%22multiLineOption%22%3A%200%7D%2C%20%22class%22%3A%20%22WorkflowActionRequestTextInput%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22name%22%3A%20%22fn%22%2C%20%22value%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22Input%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionStoreVariable%22%7D%2C%20%7B%22pauseWithoutShowingParameters%22%3A%20false%2C%20%22pauseBeforeRunning%22%3A%20false%2C%20%22customTitle%22%3A%20%22%22%2C%20%22parameters%22%3A%20%7B%22content%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22text%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%2C%20%22open%22%3A%20true%2C%20%22filename%22%3A%20%7B%22text%22%3A%20%22%3F%22%2C%20%22tokenRanges%22%3A%20%7B%22%7B0%2C%201%7D%22%3A%20%22fn%22%7D%2C%20%22type%22%3A%20%22advancedText%22%7D%7D%2C%20%22class%22%3A%20%22WorkflowActionCreateNewDocument%22%7D%5D%2C%20%22name%22%3A%20%22ReceiveEdit%22%2C%20%22version%22%3A%20%22133001%22%2C%20%22device%22%3A%20%7B%22userInterfaceIdiom%22%3A%200%2C%20%22model%22%3A%20%22iPhone10%2C5%22%2C%20%22systemVersion%22%3A%20%2212.0.1%22%7D%2C%20%22type%22%3A%20%22wkflw%22%2C%20%22public%22%3A%20true%2C%20%22icon%22%3A%20%22minicons-icons-actions-add-big-1.png%22%7D", "description": "Receive a new content and edit it in Editorial. Useful to callback with Shortcuts ", "title": "ReceiveEdit"}]}