@magic-xpa/engine 4.1100.0-dev4110.99 → 4.1101.0-dev4111.271
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +7 -7
- package/{esm2020 → esm2022}/index.mjs +188 -188
- package/{esm2020 → esm2022}/magic-xpa-engine.mjs +1 -1
- package/esm2022/src/AccessHelper.mjs +15 -0
- package/esm2022/src/ClientManager.mjs +421 -0
- package/esm2022/src/CommandsProcessorBase.mjs +56 -0
- package/{esm2020 → esm2022}/src/CommandsProcessorManager.mjs +25 -25
- package/esm2022/src/CommandsTable.mjs +162 -0
- package/esm2022/src/ConstInterface.mjs +517 -0
- package/{esm2020 → esm2022}/src/CurrentClientVersion.mjs +2 -2
- package/esm2022/src/FlowMonitorInterface.mjs +16 -0
- package/esm2022/src/GUIManager.mjs +62 -0
- package/esm2022/src/GlobalCommandsManager.mjs +34 -0
- package/esm2022/src/GuiEventsProcessor.mjs +156 -0
- package/{esm2020 → esm2022}/src/ICommandsTable.mjs +1 -1
- package/esm2022/src/ServerConfig.mjs +122 -0
- package/{esm2020 → esm2022}/src/bridge/IGuiEvent.mjs +19 -19
- package/esm2022/src/bridge/MagicBridge.mjs +41 -0
- package/esm2022/src/commands/ClientOriginatedCommandTaskTag.mjs +12 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserLocateDataViewCommand.mjs +8 -8
- package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserRangeDataviewCommand.mjs +9 -9
- package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserSortDataViewCommand.mjs +9 -9
- package/esm2022/src/commands/ClientToServer/BrowserEscEventCommand.mjs +26 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ClientOriginatedCommand.mjs +14 -14
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs +59 -59
- package/esm2022/src/commands/ClientToServer/ColumnSortEventCommand.mjs +29 -0
- package/esm2022/src/commands/ClientToServer/CommandFactory.mjs +261 -0
- package/esm2022/src/commands/ClientToServer/CommandSerializationHelper.mjs +67 -0
- package/esm2022/src/commands/ClientToServer/ComputeEventCommand.mjs +26 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ContextTerminationEventCommand.mjs +24 -21
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ContextTimeoutResetCommand.mjs +23 -20
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ControlItemsRefreshCommand.mjs +8 -8
- package/esm2022/src/commands/ClientToServer/DataViewOutputCommand.mjs +13 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/DataviewCommand.mjs +44 -44
- package/esm2022/src/commands/ClientToServer/EvaluateCommand.mjs +40 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/EventCommand.mjs +43 -40
- package/esm2022/src/commands/ClientToServer/ExecOperCommand.mjs +70 -0
- package/esm2022/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs +25 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/GlobalParamsQueryCommand.mjs +10 -10
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ICommandTaskTag.mjs +1 -1
- package/esm2022/src/commands/ClientToServer/IndexChangeEventCommand.mjs +24 -0
- package/esm2022/src/commands/ClientToServer/IniputForceWriteCommand.mjs +26 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/NonReversibleExitEventCommand.mjs +26 -23
- package/{esm2020 → esm2022}/src/commands/ClientToServer/QueryCommand.mjs +20 -20
- package/esm2022/src/commands/ClientToServer/RecomputeCommand.mjs +30 -0
- package/esm2022/src/commands/ClientToServer/RefreshEventCommand.mjs +30 -0
- package/esm2022/src/commands/ClientToServer/RefreshScreenEventCommand.mjs +27 -0
- package/esm2022/src/commands/ClientToServer/RollbackEventCommand.mjs +43 -0
- package/esm2022/src/commands/ClientToServer/SelectProgramCommand.mjs +19 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/SetTransactionStateDataviewCommand.mjs +9 -9
- package/esm2022/src/commands/ClientToServer/SubformOpenEventCommand.mjs +24 -0
- package/esm2022/src/commands/ClientToServer/SubformRefreshEventCommand.mjs +27 -0
- package/esm2022/src/commands/ClientToServer/TransactionCommand.mjs +34 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/UnloadCommand.mjs +18 -15
- package/esm2022/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs +18 -0
- package/esm2022/src/commands/DataViewCommandBase.mjs +8 -0
- package/{esm2020 → esm2022}/src/commands/IClientCommand.mjs +1 -1
- package/esm2022/src/commands/IClientTargetedCommand.mjs +13 -0
- package/{esm2020 → esm2022}/src/commands/IClientToServerCommandInfo.mjs +2 -2
- package/esm2022/src/commands/ServerToClient/AbortCommand.mjs +65 -0
- package/{esm2020 → esm2022}/src/commands/ServerToClient/AddLocateCommand.mjs +21 -21
- package/{esm2020 → esm2022}/src/commands/ServerToClient/AddRangeCommand.mjs +62 -62
- package/{esm2020 → esm2022}/src/commands/ServerToClient/AddSortCommand.mjs +33 -33
- package/esm2022/src/commands/ServerToClient/ClientRefreshCommand.mjs +25 -0
- package/esm2022/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +24 -0
- package/esm2022/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +45 -0
- package/esm2022/src/commands/ServerToClient/OpenURLCommand.mjs +221 -0
- package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetLocateCommand.mjs +14 -14
- package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetRangeCommand.mjs +14 -14
- package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetSortCommand.mjs +14 -14
- package/esm2022/src/commands/ServerToClient/ResultCommand.mjs +37 -0
- package/esm2022/src/commands/ServerToClient/VerifyCommand.mjs +83 -0
- package/{esm2020 → esm2022}/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs +132 -132
- package/{esm2020 → esm2022}/src/communications/IConnectionStateManager.mjs +1 -1
- package/esm2022/src/communications/InteractiveCommunicationsFailureHandler.mjs +15 -0
- package/{esm2020 → esm2022}/src/data/DataSourceIdKey.mjs +2 -2
- package/esm2022/src/data/DataView.mjs +1613 -0
- package/{esm2020 → esm2022}/src/data/DataViewBase.mjs +3 -3
- package/esm2022/src/data/DataviewManager.mjs +28 -0
- package/esm2022/src/data/DataviewManagerBase.mjs +15 -0
- package/esm2022/src/data/DvCache.mjs +67 -0
- package/esm2022/src/data/Field.mjs +646 -0
- package/esm2022/src/data/FieldBase.mjs +15 -0
- package/esm2022/src/data/FieldsTable.mjs +103 -0
- package/{esm2020 → esm2022}/src/data/IRecordsTable.mjs +1 -1
- package/{esm2020 → esm2022}/src/data/Key.mjs +88 -88
- package/esm2022/src/data/Record.mjs +880 -0
- package/{esm2020 → esm2022}/src/data/RecordOutOfDataViewException.mjs +15 -15
- package/esm2022/src/data/RecordsTable.mjs +267 -0
- package/{esm2020 → esm2022}/src/data/TaskTransactionManager.mjs +107 -103
- package/{esm2020 → esm2022}/src/data/XMLBasedDcValuesBuilder.mjs +74 -74
- package/{esm2020 → esm2022}/src/enums.mjs +23 -23
- package/esm2022/src/env/EnvVariablesTable.mjs +340 -0
- package/esm2022/src/env/Environment.mjs +487 -0
- package/{esm2020 → esm2022}/src/env/ILanguageData.mjs +1 -1
- package/esm2022/src/env/LanguageData.mjs +227 -0
- package/{esm2020 → esm2022}/src/env/MirrorString.mjs +65 -65
- package/esm2022/src/event/ActionManager.mjs +91 -0
- package/esm2022/src/event/Event.mjs +1333 -0
- package/esm2022/src/event/EventHandler.mjs +766 -0
- package/esm2022/src/event/EventHandlerPosition.mjs +204 -0
- package/esm2022/src/event/EventsManager.mjs +2988 -0
- package/{esm2020 → esm2022}/src/event/IEventsManager.mjs +6 -6
- package/esm2022/src/event/RunTimeEvent.mjs +399 -0
- package/{esm2020 → esm2022}/src/event/RunTimeEventBase.mjs +3 -3
- package/esm2022/src/event/UserEventsTable.mjs +47 -0
- package/esm2022/src/exp/ExpTable.mjs +57 -0
- package/esm2022/src/exp/Expression.mjs +200 -0
- package/esm2022/src/exp/ExpressionDict.mjs +727 -0
- package/esm2022/src/exp/ExpressionEvaluator.mjs +4206 -0
- package/esm2022/src/exp/ExpressionLocalJpn.mjs +314 -0
- package/{esm2020 → esm2022}/src/exp/GlobalParamsTable.mjs +85 -85
- package/esm2022/src/exp/YesNoExp.mjs +36 -0
- package/esm2022/src/gui/CreatedFormVector.mjs +23 -0
- package/esm2022/src/gui/FormsTable.mjs +66 -0
- package/esm2022/src/gui/MgControl.mjs +363 -0
- package/esm2022/src/gui/MgForm.mjs +1224 -0
- package/esm2022/src/http/HttpManager.mjs +97 -0
- package/esm2022/src/http/client/HttpClientAsync.mjs +68 -0
- package/{esm2020 → esm2022}/src/http/client/HttpClientBase.mjs +132 -132
- package/esm2022/src/http/client/HttpClientEvents.mjs +39 -0
- package/esm2022/src/http/client/HttpClientSync.mjs +42 -0
- package/esm2022/src/http/client/HttpUtility.mjs +84 -0
- package/{esm2020 → esm2022}/src/http/client/ICommunicationsFailureHandler.mjs +1 -1
- package/{esm2020 → esm2022}/src/remote/AddUserLocateRemoteDataViewCommand.mjs +18 -18
- package/{esm2020 → esm2022}/src/remote/AddUserRangeRemoteDataViewCommand.mjs +18 -18
- package/{esm2020 → esm2022}/src/remote/AddUserSortRemoteDataViewCommand.mjs +18 -18
- package/esm2022/src/remote/RemoteCommandsProcessor.mjs +883 -0
- package/{esm2020 → esm2022}/src/remote/RemoteControlItemsRefreshCommand.mjs +25 -25
- package/{esm2020 → esm2022}/src/remote/RemoteDataViewCommandBase.mjs +24 -24
- package/{esm2020 → esm2022}/src/remote/RemoteDataViewCommandFactory.mjs +60 -60
- package/{esm2020 → esm2022}/src/remote/RemoteDataViewCommandUpdateNonModifiable.mjs +15 -15
- package/{esm2020 → esm2022}/src/remote/RemoteDataviewManager.mjs +17 -17
- package/{esm2020 → esm2022}/src/remote/RemoteInitDataViewCommand.mjs +10 -10
- package/{esm2020 → esm2022}/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +16 -16
- package/{esm2020 → esm2022}/src/remote/ResetUserRangeRemoteDataviewCommand.mjs +12 -12
- package/{esm2020 → esm2022}/src/remote/ResetUserSortRemoteDataviewCommand.mjs +15 -15
- package/esm2022/src/remote/ServerError.mjs +40 -0
- package/{esm2020 → esm2022}/src/remote/SetTransactionStateRemoteDataViewCommand.mjs +19 -19
- package/esm2022/src/rt/Argument.mjs +265 -0
- package/esm2022/src/rt/ArgumentsList.mjs +103 -0
- package/esm2022/src/rt/Boundary.mjs +152 -0
- package/esm2022/src/rt/CompMainPrgTable.mjs +63 -0
- package/esm2022/src/rt/DataviewHeaderBase.mjs +98 -0
- package/{esm2020 → esm2022}/src/rt/DataviewHeaderFactory.mjs +6 -6
- package/esm2022/src/rt/DataviewHeaders.mjs +53 -0
- package/{esm2020 → esm2022}/src/rt/DataviewHeadersSaxHandler.mjs +38 -38
- package/{esm2020 → esm2022}/src/rt/ExecutionStack.mjs +94 -94
- package/{esm2020 → esm2022}/src/rt/ExecutionStackEntry.mjs +17 -17
- package/{esm2020 → esm2022}/src/rt/HandlersTable.mjs +96 -96
- package/{esm2020 → esm2022}/src/rt/IDataSourceViewDefinition.mjs +1 -1
- package/{esm2020 → esm2022}/src/rt/IDataviewHeader.mjs +1 -1
- package/{esm2020 → esm2022}/src/rt/IResultValue.mjs +1 -1
- package/esm2022/src/rt/LastFocusedManager.mjs +65 -0
- package/esm2022/src/rt/Operation.mjs +735 -0
- package/esm2022/src/rt/OperationTable.mjs +67 -0
- package/esm2022/src/rt/Recompute.mjs +355 -0
- package/{esm2020 → esm2022}/src/rt/RecomputeTable.mjs +62 -62
- package/{esm2020 → esm2022}/src/rt/RemoteDataviewHeader.mjs +108 -108
- package/esm2022/src/rt/ResultValue.mjs +10 -0
- package/esm2022/src/rt/TableCache.mjs +177 -0
- package/esm2022/src/rt/TableCacheManager.mjs +67 -0
- package/esm2022/src/rt/Transaction.mjs +53 -0
- package/esm2022/src/security/UserDetails.mjs +71 -0
- package/{esm2020 → esm2022}/src/tasks/IMGDataCollection.mjs +1 -1
- package/esm2022/src/tasks/MGData.mjs +552 -0
- package/esm2022/src/tasks/MGDataCollection.mjs +252 -0
- package/esm2022/src/tasks/RCTimer.mjs +63 -0
- package/{esm2020 → esm2022}/src/tasks/RemoteTaskService.mjs +44 -44
- package/esm2022/src/tasks/Task.mjs +2499 -0
- package/esm2022/src/tasks/TaskBase.mjs +83 -0
- package/{esm2020 → esm2022}/src/tasks/TaskServiceBase.mjs +24 -24
- package/esm2022/src/tasks/TasksTable.mjs +80 -0
- package/esm2022/src/tasks/sort/Sort.mjs +5 -0
- package/{esm2020 → esm2022}/src/tasks/sort/SortCollection.mjs +67 -67
- package/{esm2020 → esm2022}/src/util/ConstUtils.mjs +13 -13
- package/esm2022/src/util/FlowMonitorQueue.mjs +451 -0
- package/{esm2020 → esm2022}/src/util/HeapSort.mjs +69 -69
- package/{esm2020 → esm2022}/src/util/IMirrorXML.mjs +1 -1
- package/{esm2020 → esm2022}/src/util/IServerConfig.mjs +1 -1
- package/{esm2020 → esm2022}/src/util/MgBlockingQueue.mjs +1 -1
- package/esm2022/src/util/MgPriorityBlockingQueue.mjs +74 -0
- package/esm2022/src/util/MgPriorityQueue.mjs +66 -0
- package/{esm2020 → esm2022}/src/util/ParamParseResult.mjs +7 -7
- package/esm2022/src/util/PrmMap.mjs +152 -0
- package/esm2022/src/util/ReturnResult.mjs +46 -0
- package/esm2022/src/util/ReturnResultBase.mjs +18 -0
- package/esm2022/src/util/Scrambler.mjs +89 -0
- package/esm2022/src/util/UniqueIDUtils.mjs +13 -0
- package/{esm2020 → esm2022}/src/util/cookie.service.mjs +92 -92
- package/{fesm2020 → fesm2022}/magic-xpa-engine.mjs +29888 -29690
- package/fesm2022/magic-xpa-engine.mjs.map +1 -0
- package/index.d.ts +187 -187
- package/package.json +8 -14
- package/src/AccessHelper.d.ts +20 -20
- package/src/ClientManager.d.ts +35 -32
- package/src/CommandsProcessorBase.d.ts +23 -23
- package/src/CommandsProcessorManager.d.ts +6 -6
- package/src/CommandsTable.d.ts +22 -22
- package/src/ConstInterface.d.ts +516 -515
- package/src/CurrentClientVersion.d.ts +1 -1
- package/src/FlowMonitorInterface.d.ts +15 -15
- package/src/GUIManager.d.ts +17 -17
- package/src/GlobalCommandsManager.d.ts +17 -17
- package/src/GuiEventsProcessor.d.ts +24 -24
- package/src/ICommandsTable.d.ts +9 -9
- package/src/ServerConfig.d.ts +35 -34
- package/src/bridge/IGuiEvent.d.ts +19 -19
- package/src/bridge/MagicBridge.d.ts +16 -16
- package/src/commands/ClientOriginatedCommandTaskTag.d.ts +8 -8
- package/src/commands/ClientToServer/AddUserLocateDataViewCommand.d.ts +4 -4
- package/src/commands/ClientToServer/AddUserRangeDataviewCommand.d.ts +6 -6
- package/src/commands/ClientToServer/AddUserSortDataViewCommand.d.ts +6 -6
- package/src/commands/ClientToServer/BrowserEscEventCommand.d.ts +9 -8
- package/src/commands/ClientToServer/ClientOriginatedCommand.d.ts +8 -8
- package/src/commands/ClientToServer/ClientOriginatedCommandSerializer.d.ts +6 -6
- package/src/commands/ClientToServer/ColumnSortEventCommand.d.ts +11 -10
- package/src/commands/ClientToServer/CommandFactory.d.ts +64 -64
- package/src/commands/ClientToServer/CommandSerializationHelper.d.ts +20 -20
- package/src/commands/ClientToServer/ComputeEventCommand.d.ts +9 -8
- package/src/commands/ClientToServer/ContextTerminationEventCommand.d.ts +8 -7
- package/src/commands/ClientToServer/ContextTimeoutResetCommand.d.ts +8 -7
- package/src/commands/ClientToServer/ControlItemsRefreshCommand.d.ts +6 -6
- package/src/commands/ClientToServer/DataViewOutputCommand.d.ts +9 -9
- package/src/commands/ClientToServer/DataviewCommand.d.ts +32 -32
- package/src/commands/ClientToServer/EvaluateCommand.d.ts +16 -15
- package/src/commands/ClientToServer/EventCommand.d.ts +16 -15
- package/src/commands/ClientToServer/ExecOperCommand.d.ts +24 -23
- package/src/commands/ClientToServer/FetchDataControlValuesEventCommand.d.ts +9 -8
- package/src/commands/ClientToServer/GlobalParamsQueryCommand.d.ts +5 -5
- package/src/commands/ClientToServer/ICommandTaskTag.d.ts +3 -3
- package/src/commands/ClientToServer/IndexChangeEventCommand.d.ts +9 -8
- package/src/commands/ClientToServer/IniputForceWriteCommand.d.ts +11 -10
- package/src/commands/ClientToServer/NonReversibleExitEventCommand.d.ts +9 -8
- package/src/commands/ClientToServer/QueryCommand.d.ts +8 -8
- package/src/commands/ClientToServer/RecomputeCommand.d.ts +12 -11
- package/src/commands/ClientToServer/RefreshEventCommand.d.ts +13 -12
- package/src/commands/ClientToServer/RefreshScreenEventCommand.d.ts +11 -10
- package/src/commands/ClientToServer/RollbackEventCommand.d.ts +15 -14
- package/src/commands/ClientToServer/SelectProgramCommand.d.ts +7 -6
- package/src/commands/ClientToServer/SetTransactionStateDataviewCommand.d.ts +5 -5
- package/src/commands/ClientToServer/SubformOpenEventCommand.d.ts +9 -8
- package/src/commands/ClientToServer/SubformRefreshEventCommand.d.ts +10 -9
- package/src/commands/ClientToServer/TransactionCommand.d.ts +14 -12
- package/src/commands/ClientToServer/UnloadCommand.d.ts +8 -7
- package/src/commands/ClientToServer/WriteMessageToServerLogCommand.d.ts +6 -6
- package/src/commands/DataViewCommandBase.d.ts +6 -6
- package/src/commands/IClientCommand.d.ts +2 -2
- package/src/commands/IClientTargetedCommand.d.ts +12 -12
- package/src/commands/IClientToServerCommandInfo.d.ts +4 -3
- package/src/commands/ServerToClient/AbortCommand.d.ts +11 -11
- package/src/commands/ServerToClient/AddLocateCommand.d.ts +6 -6
- package/src/commands/ServerToClient/AddRangeCommand.d.ts +10 -10
- package/src/commands/ServerToClient/AddSortCommand.d.ts +9 -9
- package/src/commands/ServerToClient/ClientRefreshCommand.d.ts +7 -7
- package/src/commands/ServerToClient/ClientTargetedCommandBase.d.ts +12 -12
- package/src/commands/ServerToClient/EnhancedVerifyCommand.d.ts +13 -13
- package/src/commands/ServerToClient/OpenURLCommand.d.ts +21 -21
- package/src/commands/ServerToClient/ResetLocateCommand.d.ts +6 -6
- package/src/commands/ServerToClient/ResetRangeCommand.d.ts +6 -6
- package/src/commands/ServerToClient/ResetSortCommand.d.ts +6 -6
- package/src/commands/ServerToClient/ResultCommand.d.ts +10 -10
- package/src/commands/ServerToClient/VerifyCommand.d.ts +17 -17
- package/src/commands/ServerToClient/XMLBasedCommandBuilder.d.ts +11 -11
- package/src/communications/IConnectionStateManager.d.ts +4 -4
- package/src/communications/InteractiveCommunicationsFailureHandler.d.ts +6 -6
- package/src/data/DataSourceIdKey.d.ts +2 -2
- package/src/data/DataView.d.ts +162 -162
- package/src/data/DataViewBase.d.ts +12 -12
- package/src/data/DataviewManager.d.ts +14 -14
- package/src/data/DataviewManagerBase.d.ts +11 -11
- package/src/data/DvCache.d.ts +15 -15
- package/src/data/Field.d.ts +103 -103
- package/src/data/FieldBase.d.ts +23 -23
- package/src/data/FieldsTable.d.ts +27 -27
- package/src/data/IRecordsTable.d.ts +7 -7
- package/src/data/Key.d.ts +15 -15
- package/src/data/Record.d.ts +157 -156
- package/src/data/RecordOutOfDataViewException.d.ts +10 -10
- package/src/data/RecordsTable.d.ts +38 -38
- package/src/data/TaskTransactionManager.d.ts +17 -17
- package/src/data/XMLBasedDcValuesBuilder.d.ts +11 -11
- package/src/enums.d.ts +21 -21
- package/src/env/EnvVariablesTable.d.ts +17 -17
- package/src/env/Environment.d.ts +118 -118
- package/src/env/ILanguageData.d.ts +3 -3
- package/src/env/LanguageData.d.ts +20 -20
- package/src/env/MirrorString.d.ts +15 -15
- package/src/event/ActionManager.d.ts +14 -14
- package/src/event/Event.d.ts +79 -79
- package/src/event/EventHandler.d.ts +66 -66
- package/src/event/EventHandlerPosition.d.ts +25 -25
- package/src/event/EventsManager.d.ts +205 -204
- package/src/event/IEventsManager.d.ts +77 -77
- package/src/event/RunTimeEvent.d.ts +126 -123
- package/src/event/RunTimeEventBase.d.ts +5 -5
- package/src/event/UserEventsTable.d.ts +11 -11
- package/src/exp/ExpTable.d.ts +11 -11
- package/src/exp/Expression.d.ts +37 -37
- package/src/exp/ExpressionDict.d.ts +12 -12
- package/src/exp/ExpressionEvaluator.d.ts +198 -198
- package/src/exp/ExpressionLocalJpn.d.ts +18 -18
- package/src/exp/GlobalParamsTable.d.ts +19 -19
- package/src/exp/YesNoExp.d.ts +9 -9
- package/src/gui/CreatedFormVector.d.ts +10 -10
- package/src/gui/FormsTable.d.ts +15 -15
- package/src/gui/MgControl.d.ts +60 -60
- package/src/gui/MgForm.d.ts +96 -93
- package/src/http/HttpManager.d.ts +25 -25
- package/src/http/client/HttpClientAsync.d.ts +16 -16
- package/src/http/client/HttpClientBase.d.ts +30 -30
- package/src/http/client/HttpClientEvents.d.ts +18 -18
- package/src/http/client/HttpClientSync.d.ts +17 -17
- package/src/http/client/HttpUtility.d.ts +10 -10
- package/src/http/client/ICommunicationsFailureHandler.d.ts +5 -5
- package/src/remote/AddUserLocateRemoteDataViewCommand.d.ts +8 -8
- package/src/remote/AddUserRangeRemoteDataViewCommand.d.ts +8 -8
- package/src/remote/AddUserSortRemoteDataViewCommand.d.ts +8 -8
- package/src/remote/RemoteCommandsProcessor.d.ts +51 -51
- package/src/remote/RemoteControlItemsRefreshCommand.d.ts +8 -8
- package/src/remote/RemoteDataViewCommandBase.d.ts +10 -10
- package/src/remote/RemoteDataViewCommandFactory.d.ts +6 -6
- package/src/remote/RemoteDataViewCommandUpdateNonModifiable.d.ts +8 -8
- package/src/remote/RemoteDataviewManager.d.ts +9 -9
- package/src/remote/RemoteInitDataViewCommand.d.ts +7 -7
- package/src/remote/ResetUserLocateRemoteDataviewCommand.d.ts +7 -7
- package/src/remote/ResetUserRangeRemoteDataviewCommand.d.ts +7 -7
- package/src/remote/ResetUserSortRemoteDataviewCommand.d.ts +7 -7
- package/src/remote/ServerError.d.ts +16 -16
- package/src/remote/SetTransactionStateRemoteDataViewCommand.d.ts +8 -8
- package/src/rt/Argument.d.ts +36 -36
- package/src/rt/ArgumentsList.d.ts +24 -24
- package/src/rt/Boundary.d.ts +27 -27
- package/src/rt/CompMainPrgTable.d.ts +10 -10
- package/src/rt/DataviewHeaderBase.d.ts +34 -34
- package/src/rt/DataviewHeaderFactory.d.ts +5 -5
- package/src/rt/DataviewHeaders.d.ts +12 -12
- package/src/rt/DataviewHeadersSaxHandler.d.ts +10 -10
- package/src/rt/ExecutionStack.d.ts +22 -22
- package/src/rt/ExecutionStackEntry.d.ts +7 -7
- package/src/rt/HandlersTable.d.ts +19 -19
- package/src/rt/IDataSourceViewDefinition.d.ts +6 -6
- package/src/rt/IDataviewHeader.d.ts +10 -10
- package/src/rt/IResultValue.d.ts +4 -4
- package/src/rt/LastFocusedManager.d.ts +23 -23
- package/src/rt/Operation.d.ts +97 -97
- package/src/rt/OperationTable.d.ts +15 -15
- package/src/rt/Recompute.d.ts +41 -41
- package/src/rt/RecomputeTable.d.ts +9 -9
- package/src/rt/RemoteDataviewHeader.d.ts +14 -14
- package/src/rt/ResultValue.d.ts +7 -7
- package/src/rt/TableCache.d.ts +29 -29
- package/src/rt/TableCacheManager.d.ts +10 -10
- package/src/rt/Transaction.d.ts +23 -23
- package/src/security/UserDetails.d.ts +16 -16
- package/src/tasks/IMGDataCollection.d.ts +26 -26
- package/src/tasks/MGData.d.ts +63 -63
- package/src/tasks/MGDataCollection.d.ts +42 -42
- package/src/tasks/RCTimer.d.ts +13 -13
- package/src/tasks/RemoteTaskService.d.ts +16 -16
- package/src/tasks/Task.d.ts +312 -312
- package/src/tasks/TaskBase.d.ts +123 -123
- package/src/tasks/TaskServiceBase.d.ts +16 -16
- package/src/tasks/TasksTable.d.ts +21 -21
- package/src/tasks/sort/Sort.d.ts +4 -4
- package/src/tasks/sort/SortCollection.d.ts +11 -11
- package/src/util/ConstUtils.d.ts +3 -3
- package/src/util/FlowMonitorQueue.d.ts +70 -70
- package/src/util/HeapSort.d.ts +6 -6
- package/src/util/IMirrorXML.d.ts +6 -6
- package/src/util/IServerConfig.d.ts +11 -11
- package/src/util/MgBlockingQueue.d.ts +5 -5
- package/src/util/MgPriorityBlockingQueue.d.ts +17 -17
- package/src/util/MgPriorityQueue.d.ts +13 -13
- package/src/util/ParamParseResult.d.ts +6 -6
- package/src/util/PrmMap.d.ts +28 -28
- package/src/util/ReturnResult.d.ts +18 -18
- package/src/util/ReturnResultBase.d.ts +11 -11
- package/src/util/Scrambler.d.ts +10 -10
- package/src/util/UniqueIDUtils.d.ts +4 -4
- package/src/util/cookie.service.d.ts +8 -8
- package/esm2020/src/AccessHelper.mjs +0 -9
- package/esm2020/src/ClientManager.mjs +0 -399
- package/esm2020/src/CommandsProcessorBase.mjs +0 -58
- package/esm2020/src/CommandsTable.mjs +0 -162
- package/esm2020/src/ConstInterface.mjs +0 -516
- package/esm2020/src/FlowMonitorInterface.mjs +0 -16
- package/esm2020/src/GUIManager.mjs +0 -62
- package/esm2020/src/GlobalCommandsManager.mjs +0 -34
- package/esm2020/src/GuiEventsProcessor.mjs +0 -154
- package/esm2020/src/ServerConfig.mjs +0 -117
- package/esm2020/src/bridge/MagicBridge.mjs +0 -41
- package/esm2020/src/commands/ClientOriginatedCommandTaskTag.mjs +0 -11
- package/esm2020/src/commands/ClientToServer/BrowserEscEventCommand.mjs +0 -23
- package/esm2020/src/commands/ClientToServer/ColumnSortEventCommand.mjs +0 -26
- package/esm2020/src/commands/ClientToServer/CommandFactory.mjs +0 -260
- package/esm2020/src/commands/ClientToServer/CommandSerializationHelper.mjs +0 -69
- package/esm2020/src/commands/ClientToServer/ComputeEventCommand.mjs +0 -23
- package/esm2020/src/commands/ClientToServer/DataViewOutputCommand.mjs +0 -13
- package/esm2020/src/commands/ClientToServer/EvaluateCommand.mjs +0 -36
- package/esm2020/src/commands/ClientToServer/ExecOperCommand.mjs +0 -67
- package/esm2020/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs +0 -22
- package/esm2020/src/commands/ClientToServer/IndexChangeEventCommand.mjs +0 -21
- package/esm2020/src/commands/ClientToServer/IniputForceWriteCommand.mjs +0 -23
- package/esm2020/src/commands/ClientToServer/RecomputeCommand.mjs +0 -27
- package/esm2020/src/commands/ClientToServer/RefreshEventCommand.mjs +0 -27
- package/esm2020/src/commands/ClientToServer/RefreshScreenEventCommand.mjs +0 -24
- package/esm2020/src/commands/ClientToServer/RollbackEventCommand.mjs +0 -39
- package/esm2020/src/commands/ClientToServer/SelectProgramCommand.mjs +0 -15
- package/esm2020/src/commands/ClientToServer/SubformOpenEventCommand.mjs +0 -21
- package/esm2020/src/commands/ClientToServer/SubformRefreshEventCommand.mjs +0 -24
- package/esm2020/src/commands/ClientToServer/TransactionCommand.mjs +0 -28
- package/esm2020/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs +0 -18
- package/esm2020/src/commands/DataViewCommandBase.mjs +0 -10
- package/esm2020/src/commands/IClientTargetedCommand.mjs +0 -9
- package/esm2020/src/commands/ServerToClient/AbortCommand.mjs +0 -65
- package/esm2020/src/commands/ServerToClient/ClientRefreshCommand.mjs +0 -25
- package/esm2020/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +0 -27
- package/esm2020/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +0 -45
- package/esm2020/src/commands/ServerToClient/OpenURLCommand.mjs +0 -221
- package/esm2020/src/commands/ServerToClient/ResultCommand.mjs +0 -37
- package/esm2020/src/commands/ServerToClient/VerifyCommand.mjs +0 -83
- package/esm2020/src/communications/InteractiveCommunicationsFailureHandler.mjs +0 -17
- package/esm2020/src/data/DataView.mjs +0 -1610
- package/esm2020/src/data/DataviewManager.mjs +0 -28
- package/esm2020/src/data/DataviewManagerBase.mjs +0 -15
- package/esm2020/src/data/DvCache.mjs +0 -67
- package/esm2020/src/data/Field.mjs +0 -646
- package/esm2020/src/data/FieldBase.mjs +0 -18
- package/esm2020/src/data/FieldsTable.mjs +0 -103
- package/esm2020/src/data/Record.mjs +0 -846
- package/esm2020/src/data/RecordsTable.mjs +0 -267
- package/esm2020/src/env/EnvVariablesTable.mjs +0 -340
- package/esm2020/src/env/Environment.mjs +0 -489
- package/esm2020/src/env/LanguageData.mjs +0 -226
- package/esm2020/src/event/ActionManager.mjs +0 -91
- package/esm2020/src/event/Event.mjs +0 -1333
- package/esm2020/src/event/EventHandler.mjs +0 -766
- package/esm2020/src/event/EventHandlerPosition.mjs +0 -204
- package/esm2020/src/event/EventsManager.mjs +0 -2975
- package/esm2020/src/event/RunTimeEvent.mjs +0 -392
- package/esm2020/src/event/UserEventsTable.mjs +0 -47
- package/esm2020/src/exp/ExpTable.mjs +0 -59
- package/esm2020/src/exp/Expression.mjs +0 -200
- package/esm2020/src/exp/ExpressionDict.mjs +0 -727
- package/esm2020/src/exp/ExpressionEvaluator.mjs +0 -4208
- package/esm2020/src/exp/ExpressionLocalJpn.mjs +0 -314
- package/esm2020/src/exp/YesNoExp.mjs +0 -36
- package/esm2020/src/gui/CreatedFormVector.mjs +0 -23
- package/esm2020/src/gui/FormsTable.mjs +0 -66
- package/esm2020/src/gui/MgControl.mjs +0 -353
- package/esm2020/src/gui/MgForm.mjs +0 -1181
- package/esm2020/src/http/HttpManager.mjs +0 -97
- package/esm2020/src/http/client/HttpClientAsync.mjs +0 -67
- package/esm2020/src/http/client/HttpClientEvents.mjs +0 -39
- package/esm2020/src/http/client/HttpClientSync.mjs +0 -42
- package/esm2020/src/http/client/HttpUtility.mjs +0 -84
- package/esm2020/src/remote/RemoteCommandsProcessor.mjs +0 -880
- package/esm2020/src/remote/ServerError.mjs +0 -40
- package/esm2020/src/rt/Argument.mjs +0 -265
- package/esm2020/src/rt/ArgumentsList.mjs +0 -103
- package/esm2020/src/rt/Boundary.mjs +0 -152
- package/esm2020/src/rt/CompMainPrgTable.mjs +0 -65
- package/esm2020/src/rt/DataviewHeaderBase.mjs +0 -96
- package/esm2020/src/rt/DataviewHeaders.mjs +0 -53
- package/esm2020/src/rt/LastFocusedManager.mjs +0 -67
- package/esm2020/src/rt/Operation.mjs +0 -735
- package/esm2020/src/rt/OperationTable.mjs +0 -67
- package/esm2020/src/rt/Recompute.mjs +0 -355
- package/esm2020/src/rt/ResultValue.mjs +0 -12
- package/esm2020/src/rt/TableCache.mjs +0 -177
- package/esm2020/src/rt/TableCacheManager.mjs +0 -67
- package/esm2020/src/rt/Transaction.mjs +0 -53
- package/esm2020/src/security/UserDetails.mjs +0 -71
- package/esm2020/src/tasks/MGData.mjs +0 -552
- package/esm2020/src/tasks/MGDataCollection.mjs +0 -252
- package/esm2020/src/tasks/RCTimer.mjs +0 -63
- package/esm2020/src/tasks/Task.mjs +0 -2496
- package/esm2020/src/tasks/TaskBase.mjs +0 -87
- package/esm2020/src/tasks/TasksTable.mjs +0 -80
- package/esm2020/src/tasks/sort/Sort.mjs +0 -7
- package/esm2020/src/util/FlowMonitorQueue.mjs +0 -453
- package/esm2020/src/util/MgPriorityBlockingQueue.mjs +0 -74
- package/esm2020/src/util/MgPriorityQueue.mjs +0 -66
- package/esm2020/src/util/PrmMap.mjs +0 -151
- package/esm2020/src/util/ReturnResult.mjs +0 -46
- package/esm2020/src/util/ReturnResultBase.mjs +0 -18
- package/esm2020/src/util/Scrambler.mjs +0 -89
- package/esm2020/src/util/UniqueIDUtils.mjs +0 -12
- package/fesm2015/magic-xpa-engine.mjs +0 -30837
- package/fesm2015/magic-xpa-engine.mjs.map +0 -1
- package/fesm2020/magic-xpa-engine.mjs.map +0 -1
@@ -1,40 +0,0 @@
|
|
1
|
-
import { ApplicationException, NString, isNullOrUndefined } from "@magic-xpa/mscorelib";
|
2
|
-
import { MsgInterface, StrUtil } from "@magic-xpa/utils";
|
3
|
-
import { ServerConfig } from "../ServerConfig";
|
4
|
-
import { AccessHelper } from "../AccessHelper";
|
5
|
-
export class ServerError extends ApplicationException {
|
6
|
-
constructor(msg, codeOrInnerException) {
|
7
|
-
super(msg);
|
8
|
-
this._code = 0;
|
9
|
-
if (arguments.length === 1 || isNullOrUndefined(codeOrInnerException))
|
10
|
-
return;
|
11
|
-
if (typeof codeOrInnerException == 'number')
|
12
|
-
this._code = codeOrInnerException;
|
13
|
-
else
|
14
|
-
this.InnerException = codeOrInnerException;
|
15
|
-
this.errorLevel = 3;
|
16
|
-
}
|
17
|
-
GetCode() {
|
18
|
-
return this._code;
|
19
|
-
}
|
20
|
-
GetMessage() {
|
21
|
-
let message;
|
22
|
-
let shouldDisplayGenericError = ServerConfig.Instance.ShouldDisplayGenericError();
|
23
|
-
if (shouldDisplayGenericError && this.GetCode() > 0) {
|
24
|
-
let genericErrorMessage = AccessHelper.languageData.getConstMessage(MsgInterface.STR_GENERIC_ERROR_MESSAGE);
|
25
|
-
genericErrorMessage = StrUtil.replaceStringTokens(genericErrorMessage, "%d", 1, "{0}");
|
26
|
-
message = NString.Format(genericErrorMessage, this.GetCode());
|
27
|
-
}
|
28
|
-
else
|
29
|
-
message = this.Message;
|
30
|
-
return message;
|
31
|
-
}
|
32
|
-
}
|
33
|
-
ServerError.INF_NO_RESULT = -11;
|
34
|
-
ServerError.ERR_CTX_NOT_FOUND = -197;
|
35
|
-
ServerError.ERR_AUTHENTICATION = -157;
|
36
|
-
ServerError.ERR_ACCESS_DENIED = -133;
|
37
|
-
ServerError.ERR_WEBCLIENT_PROGRAM_RELOADED = -278;
|
38
|
-
ServerError.ERR_EXECUTED_PROGRAM_CHANGED = -283;
|
39
|
-
ServerError.ERR_THREAD_ABORTED = -138;
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmVyRXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3JlbW90ZS9TZXJ2ZXJFcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsb0JBQW9CLEVBQWEsT0FBTyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDakcsT0FBTyxFQUFDLFlBQVksRUFBRSxPQUFPLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE1BQU0sT0FBTyxXQUFZLFNBQVEsb0JBQW9CO0lBZW5ELFlBQVksR0FBVyxFQUFFLG9CQUEwQjtRQUNqRCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFOTCxVQUFLLEdBQVcsQ0FBQyxDQUFDO1FBT3hCLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksaUJBQWlCLENBQUMsb0JBQW9CLENBQUM7WUFDbkUsT0FBTztRQUVULElBQUksT0FBTyxvQkFBb0IsSUFBSSxRQUFRO1lBQ3pDLElBQUksQ0FBQyxLQUFLLEdBQUcsb0JBQW9CLENBQUM7O1lBRWxDLElBQUksQ0FBQyxjQUFjLEdBQUcsb0JBQW9CLENBQUM7UUFFN0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQVVELFVBQVU7UUFDUixJQUFJLE9BQWUsQ0FBQztRQUVwQixJQUFJLHlCQUF5QixHQUFZLFlBQVksQ0FBQyxRQUFRLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUMzRixJQUFJLHlCQUF5QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDbkQsSUFBSSxtQkFBbUIsR0FBVyxZQUFZLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUNwSCxtQkFBbUIsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN2RixPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUMvRDs7WUFFQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN6QixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOztBQW5ETSx5QkFBYSxHQUFXLENBQUMsRUFBRSxDQUFDO0FBQzVCLDZCQUFpQixHQUFXLENBQUMsR0FBRyxDQUFDO0FBQ2pDLDhCQUFrQixHQUFXLENBQUMsR0FBRyxDQUFDO0FBQ2xDLDZCQUFpQixHQUFXLENBQUMsR0FBRyxDQUFDO0FBRWpDLDBDQUE4QixHQUFHLENBQUMsR0FBRyxDQUFDO0FBQ3RDLHdDQUE0QixHQUFHLENBQUMsR0FBRyxDQUFDO0FBQ3BDLDhCQUFrQixHQUFHLENBQUMsR0FBRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcHBsaWNhdGlvbkV4Y2VwdGlvbiwgRXhjZXB0aW9uLCBOU3RyaW5nLCBpc051bGxPclVuZGVmaW5lZH0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7TXNnSW50ZXJmYWNlLCBTdHJVdGlsfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQgeyBTZXJ2ZXJDb25maWcgfSBmcm9tIFwiLi4vU2VydmVyQ29uZmlnXCI7XHJcbmltcG9ydCB7IEFjY2Vzc0hlbHBlciB9IGZyb20gXCIuLi9BY2Nlc3NIZWxwZXJcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBTZXJ2ZXJFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXhjZXB0aW9uIHtcclxuICBzdGF0aWMgSU5GX05PX1JFU1VMVDogbnVtYmVyID0gLTExO1xyXG4gIHN0YXRpYyBFUlJfQ1RYX05PVF9GT1VORDogbnVtYmVyID0gLTE5NztcclxuICBzdGF0aWMgRVJSX0FVVEhFTlRJQ0FUSU9OOiBudW1iZXIgPSAtMTU3O1xyXG4gIHN0YXRpYyBFUlJfQUNDRVNTX0RFTklFRDogbnVtYmVyID0gLTEzMztcclxuXHJcbiAgc3RhdGljIEVSUl9XRUJDTElFTlRfUFJPR1JBTV9SRUxPQURFRCA9IC0yNzg7XHJcbiAgc3RhdGljIEVSUl9FWEVDVVRFRF9QUk9HUkFNX0NIQU5HRUQgPSAtMjgzO1xyXG4gIHN0YXRpYyBFUlJfVEhSRUFEX0FCT1JURUQgPSAtMTM4O1xyXG5cclxuICBwcml2YXRlIF9jb2RlOiBudW1iZXIgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihtc2c6IHN0cmluZyk7XHJcbiAgY29uc3RydWN0b3IobXNnOiBzdHJpbmcsIGNvZGU6IG51bWJlcik7XHJcbiAgY29uc3RydWN0b3IobXNnOiBzdHJpbmcsIGlubmVyRXhjZXB0aW9uOiBFeGNlcHRpb24pO1xyXG4gIGNvbnN0cnVjdG9yKG1zZzogc3RyaW5nLCBjb2RlT3JJbm5lckV4Y2VwdGlvbj86IGFueSkge1xyXG4gICAgc3VwZXIobXNnKTtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxIHx8IGlzTnVsbE9yVW5kZWZpbmVkKGNvZGVPcklubmVyRXhjZXB0aW9uKSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGlmICh0eXBlb2YgY29kZU9ySW5uZXJFeGNlcHRpb24gPT0gJ251bWJlcicpXHJcbiAgICAgIHRoaXMuX2NvZGUgPSBjb2RlT3JJbm5lckV4Y2VwdGlvbjtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5Jbm5lckV4Y2VwdGlvbiA9IGNvZGVPcklubmVyRXhjZXB0aW9uO1xyXG5cclxuICAgIHRoaXMuZXJyb3JMZXZlbCA9IDM7XHJcbiAgfVxyXG5cclxuICBHZXRDb2RlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29kZTtcclxuICB9XHJcblxyXG4gIC8vLzxzdW1tYXJ5PlxyXG4gIC8vLyAgUmV0dXJuIGVycm9yIG1lc3NhZ2UgZm9yIFNlcnZlckVycm9yIGV4Y2VwdGlvbi5cclxuICAvLy8gIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGRldGFpbGVkIGVycm9yIG1lc3NhZ2Ugd2hlbiA6LVxyXG4gIC8vLyAgICAgIDEpIHdoZW4gZGV0YWlsZWQgbWVzc2FnZSBpcyB0byBiZSBzaG93biAoaS5lLiBEaXNwbGF5R2VuZXJpY0Vycm9yID0gTiBpbiBleGVjdXRpb24ucHJvcGVydGllcylcclxuICAvLy8gICAgICAyKSB3aGVuIFNlcnZlckVycm9yLkNvZGUgaXMgMC5cclxuICAvLy8gIE90aGVyd2lzZSBnZW5lcmljIGVycm9yIG1lc3NhZ2Ugd2lsbCBiZSByZXR1cm5lZC5cclxuICAvLy88L3N1bW1hcnk+XHJcbiAgLy8vPHJldHVybnM+ISEuPC9yZXR1cm5zPlxyXG4gIEdldE1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIGxldCBtZXNzYWdlOiBzdHJpbmc7XHJcblxyXG4gICAgbGV0IHNob3VsZERpc3BsYXlHZW5lcmljRXJyb3I6IGJvb2xlYW4gPSBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuU2hvdWxkRGlzcGxheUdlbmVyaWNFcnJvcigpO1xyXG4gICAgaWYgKHNob3VsZERpc3BsYXlHZW5lcmljRXJyb3IgJiYgdGhpcy5HZXRDb2RlKCkgPiAwKSB7XHJcbiAgICAgIGxldCBnZW5lcmljRXJyb3JNZXNzYWdlOiBzdHJpbmcgPSBBY2Nlc3NIZWxwZXIubGFuZ3VhZ2VEYXRhLmdldENvbnN0TWVzc2FnZShNc2dJbnRlcmZhY2UuU1RSX0dFTkVSSUNfRVJST1JfTUVTU0FHRSk7XHJcbiAgICAgIGdlbmVyaWNFcnJvck1lc3NhZ2UgPSBTdHJVdGlsLnJlcGxhY2VTdHJpbmdUb2tlbnMoZ2VuZXJpY0Vycm9yTWVzc2FnZSwgXCIlZFwiLCAxLCBcInswfVwiKTtcclxuICAgICAgbWVzc2FnZSA9IE5TdHJpbmcuRm9ybWF0KGdlbmVyaWNFcnJvck1lc3NhZ2UsIHRoaXMuR2V0Q29kZSgpKTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgbWVzc2FnZSA9IHRoaXMuTWVzc2FnZTtcclxuICAgIHJldHVybiBtZXNzYWdlO1xyXG4gIH1cclxufVxyXG4iXX0=
|
@@ -1,265 +0,0 @@
|
|
1
|
-
import { ApplicationException, NNumber } from '@magic-xpa/mscorelib';
|
2
|
-
import { Logger, StorageAttribute, StorageAttributeCheck } from '@magic-xpa/utils';
|
3
|
-
import { BlobType, ExpVal, FieldDef } from '@magic-xpa/gui';
|
4
|
-
import { ConstInterface } from '../ConstInterface';
|
5
|
-
import { FieldBase } from '../data/FieldBase';
|
6
|
-
export class Argument {
|
7
|
-
constructor(fieldOrExpValOrSrcArg) {
|
8
|
-
this._exp = null;
|
9
|
-
this._fld = null;
|
10
|
-
this._skip = false;
|
11
|
-
this._type = '\0';
|
12
|
-
this._val = null;
|
13
|
-
this._valueAttr = StorageAttribute.NONE;
|
14
|
-
this._valueIsNull = false;
|
15
|
-
if (arguments.length === 0) {
|
16
|
-
this.constructor_0();
|
17
|
-
return;
|
18
|
-
}
|
19
|
-
if (arguments.length === 1 && (fieldOrExpValOrSrcArg === null || fieldOrExpValOrSrcArg instanceof FieldBase)) {
|
20
|
-
this.constructor_1(fieldOrExpValOrSrcArg);
|
21
|
-
return;
|
22
|
-
}
|
23
|
-
if (arguments.length === 1 && (fieldOrExpValOrSrcArg === null || fieldOrExpValOrSrcArg instanceof ExpVal)) {
|
24
|
-
this.constructor_2(fieldOrExpValOrSrcArg);
|
25
|
-
return;
|
26
|
-
}
|
27
|
-
this.constructor_3(fieldOrExpValOrSrcArg);
|
28
|
-
}
|
29
|
-
constructor_0() {
|
30
|
-
this._type = '\0';
|
31
|
-
this._fld = null;
|
32
|
-
this._exp = null;
|
33
|
-
this._skip = false;
|
34
|
-
}
|
35
|
-
constructor_1(field) {
|
36
|
-
this._fld = field;
|
37
|
-
this._type = ConstInterface.ARG_TYPE_FIELD;
|
38
|
-
this._exp = null;
|
39
|
-
this._skip = false;
|
40
|
-
}
|
41
|
-
constructor_2(expVal) {
|
42
|
-
this._type = ConstInterface.ARG_TYPE_VALUE;
|
43
|
-
this._fld = null;
|
44
|
-
this._exp = null;
|
45
|
-
this._skip = false;
|
46
|
-
if (expVal.IsNull)
|
47
|
-
this._val = null;
|
48
|
-
else
|
49
|
-
this._val = expVal.ToMgVal();
|
50
|
-
this._valueIsNull = (this._val === null);
|
51
|
-
this._valueAttr = expVal.Attr;
|
52
|
-
}
|
53
|
-
constructor_3(srcArg) {
|
54
|
-
this._type = ConstInterface.ARG_TYPE_VALUE;
|
55
|
-
switch (srcArg._type) {
|
56
|
-
case ConstInterface.ARG_TYPE_FIELD:
|
57
|
-
this._valueAttr = srcArg._fld.getType();
|
58
|
-
break;
|
59
|
-
case ConstInterface.ARG_TYPE_EXP:
|
60
|
-
break;
|
61
|
-
case ConstInterface.ARG_TYPE_SKIP:
|
62
|
-
this._skip = true;
|
63
|
-
break;
|
64
|
-
default:
|
65
|
-
throw new ApplicationException("in Argument.Argument(): illegal source Argument type!");
|
66
|
-
}
|
67
|
-
}
|
68
|
-
async Initialize(srcArg) {
|
69
|
-
switch (srcArg._type) {
|
70
|
-
case ConstInterface.ARG_TYPE_FIELD:
|
71
|
-
this._val = srcArg._fld.getValue(true);
|
72
|
-
this._valueIsNull = srcArg._fld.isNull();
|
73
|
-
break;
|
74
|
-
case ConstInterface.ARG_TYPE_EXP:
|
75
|
-
let retVal = await srcArg._exp.evaluateWithResLength(255);
|
76
|
-
this._val = retVal.mgVal;
|
77
|
-
this._valueAttr = retVal.type;
|
78
|
-
this._valueIsNull = (this._val == null);
|
79
|
-
if (this._valueIsNull)
|
80
|
-
this._val = Argument.getEmptyValue((retVal.type === StorageAttribute.BLOB ||
|
81
|
-
retVal.type === StorageAttribute.BLOB_VECTOR));
|
82
|
-
break;
|
83
|
-
}
|
84
|
-
}
|
85
|
-
fillData(arg, srcTask) {
|
86
|
-
this._type = arg[0];
|
87
|
-
let argElements = arg.substr(2);
|
88
|
-
switch (this._type) {
|
89
|
-
case ConstInterface.ARG_TYPE_FIELD:
|
90
|
-
{
|
91
|
-
let fieldId = argElements.split(',');
|
92
|
-
let parent = NNumber.Parse(fieldId[0]);
|
93
|
-
let fldIdx = NNumber.Parse(fieldId[1]);
|
94
|
-
this._fld = srcTask.getFieldDef(parent, fldIdx);
|
95
|
-
}
|
96
|
-
break;
|
97
|
-
case ConstInterface.ARG_TYPE_EXP:
|
98
|
-
let expNum = NNumber.Parse(argElements);
|
99
|
-
this._exp = srcTask.getExpById(expNum);
|
100
|
-
break;
|
101
|
-
case ConstInterface.ARG_TYPE_SKIP:
|
102
|
-
this._skip = true;
|
103
|
-
break;
|
104
|
-
default:
|
105
|
-
Logger.Instance.WriteExceptionToLogWithMsg("in Argument.FillData() illegal type: " + arg);
|
106
|
-
break;
|
107
|
-
}
|
108
|
-
}
|
109
|
-
buildXML(message) {
|
110
|
-
switch (this._type) {
|
111
|
-
case ConstInterface.ARG_TYPE_FIELD:
|
112
|
-
message.Append("F:" + this._fld.getTask().getTaskTag() + "," + this._fld.getId());
|
113
|
-
break;
|
114
|
-
case ConstInterface.ARG_TYPE_EXP:
|
115
|
-
message.Append("E:" + this._exp.getId());
|
116
|
-
break;
|
117
|
-
case ConstInterface.ARG_TYPE_SKIP:
|
118
|
-
message.Append("X:0");
|
119
|
-
break;
|
120
|
-
default:
|
121
|
-
Logger.Instance.WriteExceptionToLogWithMsg("in Argument.buildXML() illegal type: " + this._type);
|
122
|
-
break;
|
123
|
-
}
|
124
|
-
}
|
125
|
-
getType() {
|
126
|
-
return this._type;
|
127
|
-
}
|
128
|
-
getField() {
|
129
|
-
if (this._type === ConstInterface.ARG_TYPE_FIELD)
|
130
|
-
return this._fld;
|
131
|
-
return null;
|
132
|
-
}
|
133
|
-
getExp() {
|
134
|
-
if (this._type === ConstInterface.ARG_TYPE_EXP)
|
135
|
-
return this._exp;
|
136
|
-
return null;
|
137
|
-
}
|
138
|
-
async setValueToField(destFld) {
|
139
|
-
let val;
|
140
|
-
let isNull;
|
141
|
-
switch (this._type) {
|
142
|
-
case ConstInterface.ARG_TYPE_FIELD:
|
143
|
-
val = this._fld.getValue(true);
|
144
|
-
val = Argument.convertArgs(val, this._fld.getType(), destFld.getType());
|
145
|
-
isNull = this._fld.isNull() || val == null;
|
146
|
-
break;
|
147
|
-
case ConstInterface.ARG_TYPE_EXP:
|
148
|
-
val = await this._exp.evaluateWithResultTypeAndLength(destFld.getType(), destFld.getSize());
|
149
|
-
isNull = (val == null);
|
150
|
-
if (isNull)
|
151
|
-
val = Argument.getEmptyValue((destFld.getType() === StorageAttribute.BLOB ||
|
152
|
-
destFld.getType() === StorageAttribute.BLOB_VECTOR));
|
153
|
-
break;
|
154
|
-
case ConstInterface.ARG_TYPE_VALUE:
|
155
|
-
val = Argument.convertArgs(this._val, this._valueAttr, destFld.getType());
|
156
|
-
isNull = this._valueIsNull || val == null;
|
157
|
-
break;
|
158
|
-
default:
|
159
|
-
return;
|
160
|
-
}
|
161
|
-
destFld.takeValFromRec();
|
162
|
-
await destFld.setValueAndStartRecompute(val, isNull, destFld.getTask().DataViewWasRetrieved, false, true);
|
163
|
-
}
|
164
|
-
static convertArgs(value, srcAttr, expectedType) {
|
165
|
-
let invalidArg = false;
|
166
|
-
switch (expectedType) {
|
167
|
-
case StorageAttribute.ALPHA:
|
168
|
-
case StorageAttribute.UNICODE:
|
169
|
-
if (srcAttr === StorageAttribute.BLOB) {
|
170
|
-
if (BlobType.isValidBlob(value))
|
171
|
-
value = BlobType.getString(value);
|
172
|
-
}
|
173
|
-
else if (!StorageAttributeCheck.IsTypeAlphaOrUnicode(srcAttr))
|
174
|
-
invalidArg = true;
|
175
|
-
break;
|
176
|
-
case StorageAttribute.NUMERIC:
|
177
|
-
case StorageAttribute.DATE:
|
178
|
-
case StorageAttribute.TIME:
|
179
|
-
if (!StorageAttributeCheck.isTypeNumeric(srcAttr))
|
180
|
-
invalidArg = true;
|
181
|
-
break;
|
182
|
-
case StorageAttribute.BLOB:
|
183
|
-
if (StorageAttributeCheck.IsTypeAlphaOrUnicode(srcAttr)) {
|
184
|
-
let contentType = srcAttr === StorageAttribute.ALPHA
|
185
|
-
? BlobType.CONTENT_TYPE_ANSI
|
186
|
-
: BlobType.CONTENT_TYPE_UNICODE;
|
187
|
-
value = BlobType.createFromString(value, contentType);
|
188
|
-
}
|
189
|
-
else if (!StorageAttributeCheck.isTypeBlob(srcAttr))
|
190
|
-
invalidArg = true;
|
191
|
-
break;
|
192
|
-
}
|
193
|
-
if (invalidArg)
|
194
|
-
value = FieldDef.getMagicDefaultValue(expectedType);
|
195
|
-
return value;
|
196
|
-
}
|
197
|
-
async getValue(expType, expSize) {
|
198
|
-
switch (this._type) {
|
199
|
-
case ConstInterface.ARG_TYPE_EXP:
|
200
|
-
this._val = await this._exp.evaluateWithResultTypeAndLength(expType, expSize);
|
201
|
-
if (this._val == null)
|
202
|
-
this._val = Argument.getEmptyValue(expType === StorageAttribute.BLOB
|
203
|
-
|| expType === StorageAttribute.BLOB_VECTOR);
|
204
|
-
break;
|
205
|
-
case ConstInterface.ARG_TYPE_FIELD:
|
206
|
-
this._val = this._fld.getValue(true);
|
207
|
-
break;
|
208
|
-
case ConstInterface.ARG_TYPE_VALUE:
|
209
|
-
break;
|
210
|
-
default:
|
211
|
-
return null;
|
212
|
-
}
|
213
|
-
return this._val;
|
214
|
-
}
|
215
|
-
skipArg() {
|
216
|
-
return this._skip;
|
217
|
-
}
|
218
|
-
fillDataByParams(paramValueAttr, paramValue, paramNull) {
|
219
|
-
this._valueAttr = paramValueAttr;
|
220
|
-
this._val = paramValue;
|
221
|
-
this._valueIsNull = paramNull;
|
222
|
-
if (this._valueAttr === StorageAttribute.SKIP) {
|
223
|
-
this._type = ConstInterface.ARG_TYPE_SKIP;
|
224
|
-
this._skip = true;
|
225
|
-
}
|
226
|
-
else {
|
227
|
-
this._type = ConstInterface.ARG_TYPE_VALUE;
|
228
|
-
}
|
229
|
-
}
|
230
|
-
static getEmptyValue(isBlob) {
|
231
|
-
return isBlob ? (BlobType.getEmptyBlobPrefix('\0') + ";") : "";
|
232
|
-
}
|
233
|
-
FillFromString(argStr) {
|
234
|
-
this._type = ConstInterface.ARG_TYPE_VALUE;
|
235
|
-
let argType = null;
|
236
|
-
if (argStr.length > 2)
|
237
|
-
argType = argStr.substr(0, 2);
|
238
|
-
switch (argType) {
|
239
|
-
case ConstInterface.REQ_ARG_ALPHA:
|
240
|
-
this._valueAttr = StorageAttribute.ALPHA;
|
241
|
-
break;
|
242
|
-
case ConstInterface.REQ_ARG_UNICODE:
|
243
|
-
this._valueAttr = StorageAttribute.UNICODE;
|
244
|
-
break;
|
245
|
-
case ConstInterface.REQ_ARG_NUMERIC:
|
246
|
-
this._valueAttr = StorageAttribute.NUMERIC;
|
247
|
-
break;
|
248
|
-
case ConstInterface.REQ_ARG_DOUBLE:
|
249
|
-
this._valueAttr = StorageAttribute.NUMERIC;
|
250
|
-
break;
|
251
|
-
case ConstInterface.REQ_ARG_LOGICAL:
|
252
|
-
this._valueAttr = StorageAttribute.BOOLEAN;
|
253
|
-
break;
|
254
|
-
case ConstInterface.REQ_ARG_NULL:
|
255
|
-
this._valueAttr = StorageAttribute.NONE;
|
256
|
-
break;
|
257
|
-
default:
|
258
|
-
this._valueAttr = StorageAttribute.ALPHA;
|
259
|
-
this._val = argStr;
|
260
|
-
return;
|
261
|
-
}
|
262
|
-
this._val = argStr.substr(2);
|
263
|
-
}
|
264
|
-
}
|
265
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJndW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L0FyZ3VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQWlCLE1BQU0sc0JBQXNCLENBQUM7QUFDcEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHOUMsTUFBTSxPQUFPLFFBQVE7SUFhbkIsWUFBWSxxQkFBMkI7UUFaL0IsU0FBSSxHQUFlLElBQUksQ0FBQztRQUN4QixTQUFJLEdBQWMsSUFBSSxDQUFDO1FBQ3ZCLFVBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsVUFBSyxHQUFXLElBQUksQ0FBQztRQUNyQixTQUFJLEdBQVcsSUFBSSxDQUFDO1FBQ3BCLGVBQVUsR0FBcUIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1FBQ3JELGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBT3BDLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLE9BQU87U0FDUjtRQUNELElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxJQUFJLElBQUkscUJBQXFCLFlBQVksU0FBUyxDQUFDLEVBQUU7WUFDNUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQzFDLE9BQU87U0FDUjtRQUNELElBQUksU0FB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QUksQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO2dCQUN6QyxNQUFNO1lBQ1IsS0FBSyxjQUFjLENBQUMsZUFBZTtnQkFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7Z0JBQzNDLE1BQU07WUFDUixLQUFLLGNBQWMsQ0FBQyxlQUFlO2dCQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztnQkFDM0MsTUFBTTtZQUNSLEtBQUssY0FBYyxDQUFDLGNBQWM7Z0JBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO2dCQUMzQyxNQUFNO1lBQ1IsS0FBSyxjQUFjLENBQUMsZUFBZTtnQkFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7Z0JBQzNDLE1BQU07WUFDUixLQUFLLGNBQWMsQ0FBQyxZQUFZO2dCQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQztnQkFDeEMsTUFBTTtZQUNSO2dCQUVFLElBQUksQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztnQkFDbkIsT0FBTztTQUNWO1FBR0QsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7Q0FHRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uRXhjZXB0aW9uLCBOTnVtYmVyLCBTdHJpbmdCdWlsZGVyIH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQgeyBMb2dnZXIsIFN0b3JhZ2VBdHRyaWJ1dGUsIFN0b3JhZ2VBdHRyaWJ1dGVDaGVja30gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7IEJsb2JUeXBlLCBFeHBWYWwsIEZpZWxkRGVmIH0gZnJvbSAnQG1hZ2ljLXhwYS9ndWknO1xyXG5pbXBvcnQgeyBFeHByZXNzaW9uIH0gZnJvbSAnLi4vZXhwL0V4cHJlc3Npb24nO1xyXG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAnLi4vdGFza3MvVGFzayc7XHJcbmltcG9ydCB7IENvbnN0SW50ZXJmYWNlIH0gZnJvbSAnLi4vQ29uc3RJbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBGaWVsZEJhc2UgfSBmcm9tICcuLi9kYXRhL0ZpZWxkQmFzZSc7XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEFyZ3VtZW50IHtcclxuICBwcml2YXRlIF9leHA6IEV4cHJlc3Npb24gPSBudWxsO1xyXG4gIHByaXZhdGUgX2ZsZDogRmllbGRCYXNlID0gbnVsbDtcclxuICBwcml2YXRlIF9za2lwOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfdHlwZTogc3RyaW5nID0gJ1xcMCc7IC8vIEZpZWxkQmFzZXxFeHByZXNzaW9ufFZhbHVlXHJcbiAgcHJpdmF0ZSBfdmFsOiBzdHJpbmcgPSBudWxsO1xyXG4gIHByaXZhdGUgX3ZhbHVlQXR0cjogU3RvcmFnZUF0dHJpYnV0ZSA9IFN0b3JhZ2VBdHRyaWJ1dGUuTk9ORTsgLy8gdHJ1ZSBpcyBhcmd1bWVudCBpcyBvZiB0eXBlIEFSR19UWVBFX1ZBTFVFIGFuZFxyXG4gIHByaXZhdGUgX3ZhbHVlSXNOdWxsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCk7XHJcbiAgY29uc3RydWN0b3IoZmllbGQ6IEZpZWxkQmFzZSk7XHJcbiAgY29uc3RydWN0b3IoZXhwVmFsOiBFeHBWYWwpO1xyXG4gIGNvbnN0cnVjdG9yKHNyY0FyZzogQXJndW1lbnQpO1xyXG4gIGNvbnN0cnVjdG9yKGZpZWxkT3JFeHBWYWxPclNyY0FyZz86IGFueSkge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8wKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIChmaWVsZE9yRXhwVmFsT3JTcmNBcmcgPT09IG51bGwgfHwgZmllbGRPckV4cFZhbE9yU3JjQXJnIGluc3RhbmNlb2YgRmllbGRCYXNlKSkge1xyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzEoZmllbGRPckV4cFZhbE9yU3JjQXJnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKGZpZWxkT3JFeHBWYWxPclNyY0FyZyA9PT0gbnVsbCB8fCBmaWVsZE9yRXhwVmFsT3JTcmNBcmcgaW5zdGFuY2VvZiBFeHBWYWwpKSB7XHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMihmaWVsZE9yRXhwVmFsT3JTcmNBcmcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzMoZmllbGRPckV4cFZhbE9yU3JjQXJnKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzAoKTogdm9pZCB7XHJcbiAgICB0aGlzLl90eXBlID0gJ1xcMCcvKidcdTAwMDAnKi87XHJcbiAgICB0aGlzLl9mbGQgPSBudWxsO1xyXG4gICAgdGhpcy5fZXhwID0gbnVsbDtcclxuICAgIHRoaXMuX3NraXAgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ1RPUiAtIGNyZWF0ZSBhbiBhcmd1bWVudCBmcm9tIGEgZmllbGRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMShmaWVsZDogRmllbGRCYXNlKTogdm9pZCB7XHJcbiAgICB0aGlzLl9mbGQgPSBmaWVsZDtcclxuICAgIHRoaXMuX3R5cGUgPSBDb25zdEludGVyZmFjZS5BUkdfVFlQRV9GSUVMRCAvKidGJyovO1xyXG4gICAgdGhpcy5fZXhwID0gbnVsbDtcclxuICAgIHRoaXMuX3NraXAgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SIHRoYXQgY3JlYXRlcyBhIFwiVmFsdWVcIiB0eXBlIGFyZ3VtZW50IGZyb20gYSBnaXZlbiBFeHByZXNzaW9uIFZhbHVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImV4cFZhbFwiPnRoZSBzb3VyY2UgZXhwcmVzc2lvbiB2YWx1ZTwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8yKGV4cFZhbDogRXhwVmFsKTogdm9pZCB7XHJcbiAgICB0aGlzLl90eXBlID0gQ29uc3RJbnRlcmZhY2UuQVJHX1RZUEVfVkFMVUU7XHJcbiAgICB0aGlzLl9mbGQgPSBudWxsO1xyXG4gICAgdGhpcy5fZXhwID0gbnVsbDtcclxuICAgIHRoaXMuX3NraXAgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoZXhwVmFsLklzTnVsbClcclxuICAgICAgdGhpcy5fdmFsID0gbnVsbDtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5fdmFsID0gZXhwVmFsLlRvTWdWYWwoKTtcclxuXHJcbiAgICB0aGlzLl92YWx1ZUlzTnVsbCA9ICh0aGlzLl92YWwgPT09IG51bGwpO1xyXG4gICAgdGhpcy5fdmFsdWVBdHRyID0gZXhwVmFsLkF0dHI7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ1RPUiB0aGF0IGNyZWF0ZXMgYSBcIlZhbHVlXCIgdHlwZSBhcmd1bWVudCBmcm9tIGEgZ2l2ZW4gRmllbGRCYXNlIG9yIEV4cHJlc3Npb24gdHlwZVxyXG4gIC8vLyAgIGFyZ3VtZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInNyY0FyZ1wiPnRoZSBzb3VyY2UgYXJndW1lbnQ8L3BhcmFtPlxyXG4gIGNvbnN0cnVjdG9yXzMoc3JjQXJnOiBBcmd1bWVudCkge1xyXG4gICAgdGhpcy5fdHlwZSA9IENvbnN0SW50ZXJmYWNlLkFSR19UWVBFX1ZBTFVFO1xyXG5cclxuICAgIHN3aXRjaCAoc3JjQXJnLl90eXBlKSB7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuQVJHX1RZUEVfRklFTEQ6XHJcbiAgICAgICAgdGhpcy5fdmFsdWVBdHRyID0gc3JjQXJnLl9mbGQuZ2V0VHlwZSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkFSR19UWVBFX0VYUDpcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5BUkdfVFlQRV9TS0lQOlxyXG4gICAgICAgIHRoaXMuX3NraXAgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihcImluIEFyZ3VtZW50LkFyZ3VtZW50KCk6IGlsbGVnYWwgc291cmNlIEFyZ3VtZW50IHR5cGUhXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIEluaXRpYWxpemUoc3JjQXJnOiBBcmd1bWVudCk6IFByb21pc2U8dm9pZD57XHJcbiAgICBzd2l0Y2ggKHNyY0FyZy5fdHlwZSkge1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkFSR19UWVBFX0ZJRUxEOlxyXG4gICAgICAgIHRoaXMuX3ZhbCA9IHNyY0FyZy5fZmxkLmdldFZhbHVlKHRydWUpO1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlSXNOdWxsID0gc3JjQXJnLl9mbGQuaXNOdWxsKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkFSR19UWVBFX0VYUDpcclxuICAgICAgICBsZXQgcmV0VmFsID0gYXdhaXQgc3JjQXJnLl9leHAuZXZhbHVhdGVXaXRoUmVzTGVuZ3RoKDI1NSk7XHJcbiAgICAgICAgdGhpcy5fdmFsID0gcmV0VmFsLm1nVmFsO1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlQXR0ciA9IHJldFZhbC50eXBlO1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlSXNOdWxsID0gKHRoaXMuX3ZhbCA9PSBudWxsKTtcclxuICAgICAgICBpZiAodGhpcy5fdmFsdWVJc051bGwpXHJcbiAgICAgICAgICB0aGlzLl92YWwgPSBBcmd1bWVudC5nZXRFbXB0eVZhbHVlKChyZXRWYWwudHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5CTE9CIHx8XHJcbiAgICAgICAgICAgIHJldFZhbC50eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkJMT0JfVkVDVE9SKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgUGFyc2luZyBBcmd1bWVudCBzdHJpbmcgYW5kIGZpbGwgaW5uZXIgb2JqZWN0c1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJhcmdcIj5zdHJpbmcgdG8gcGFyc2UgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInNyY1Rhc2tcIj5vZiB0aGUgYXJndW1lbnQgdG8gZmluZCBleHByZXNzaW9uIGFyZ3VtZW50IDwvcGFyYW0+XHJcbiAgcHVibGljIGZpbGxEYXRhKGFyZzogU3RyaW5nLCBzcmNUYXNrOiBUYXNrKTogdm9pZCB7XHJcbiAgICB0aGlzLl90eXBlID0gYXJnWzBdO1xyXG4gICAgbGV0IGFyZ0VsZW1lbnRzOiBzdHJpbmcgPSBhcmcuc3Vic3RyKDIpO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5fdHlwZSkge1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkFSR19UWVBFX0ZJRUxEOiB7XHJcbiAgICAgICAgbGV0IGZpZWxkSWQ6IHN0cmluZ1tdID0gYXJnRWxlbWVudHMuc3BsaXQoJywnKTtcclxuICAgICAgICBsZXQgcGFyZW50OiBudW1iZXIgPSAgTk51bWJlci5QYXJzZShmaWVsZElkWzBdKTtcclxuICAgICAgICBsZXQgZmxkSWR4OiBudW1iZXIgPSAgTk51bWJlci5QYXJzZShmaWVsZElkWzFdKTtcclxuICAgICAgICB0aGlzLl9mbGQgPSA8RmllbGRCYXNlPnNyY1Rhc2suZ2V0RmllbGREZWYocGFyZW50LCBmbGRJZHgpO1xyXG4gICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkFSR19UWVBFX0VYUDpcclxuICAgICAgICBsZXQgZXhwTnVtOiBudW1iZXIgPSBOTnVtYmVyLlBhcnNlKGFyZ0VsZW1lbnRzKTtcclxuICAgICAgICB0aGlzLl9leHAgPSBzcmNUYXNrLmdldEV4cEJ5SWQoZXhwTnVtKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuQVJHX1RZUEVfU0tJUDpcclxuICAgICAgICB0aGlzLl9za2lwID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiBBcmd1bWVudC5GaWxsRGF0YSgpIGlsbGVnYWwgdHlwZTogXCIgKyBhcmcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGJ1aWxkIHRoZSBYTUwgc3RyaW5nIGZvciB0aGUgYXJndW1lbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibWVzc2FnZVwiPnRoZSBYTUwgc3RyaW5nIHRvIGFwcGVuZCB0aGUgYXJndW1lbnQgdG88L3BhcmFtPlxyXG4gIHB1YmxpYyBidWlsZFhNTChtZXNzYWdlOiBTdHJpbmdCdWlsZGVyKTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5BUkdfVFlQRV9GSUVMRDpcclxuICAgICAgICBtZXNzYWdlLkFwcGVuZChcIkY6XCIgKyB0aGlzLl9mbGQuZ2V0VGFzaygpLmdldFRhc2tUYWcoKSArIFwiLFwiICsgdGhpcy5fZmxkLmdldElkKCkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5BUkdfVFlQRV9FWFA6XHJcbiAgICAgICAgbWVzc2FnZS5BcHBlbmQoXCJFOlwiICsgdGhpcy5fZXhwLmdldElkKCkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5BUkdfVFlQRV9TS0lQOlxyXG4gICAgICAgIG1lc3NhZ2UuQXBwZW5kKFwiWDowXCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiBBcmd1bWVudC5idWlsZFhNTCgpIGlsbGVnYWwgdHlwZTogXCIgKyB0aGlzLl90eXBlKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB0eXBlIG9mIHRoZSBhcmd1bWVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0VHlwZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZm9yIGZpZWxkIHR5cGUgYXJndW1lbnRzIHJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIGZpZWxkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRGaWVsZCgpOiBGaWVsZEJhc2Uge1xyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkFSR19UWVBFX0ZJRUxEKVxyXG4gICAgICByZXR1cm4gdGhpcy5fZmxkO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZm9yIGV4cHJlc3Npb24gdHlwZSBhcmd1bWVudHMgcmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgZXhwcmVzc2lvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJvdGVjdGVkIGdldEV4cCgpOiBFeHByZXNzaW9uIHtcclxuICAgIGlmICh0aGlzLl90eXBlID09PSBDb25zdEludGVyZmFjZS5BUkdfVFlQRV9FWFApXHJcbiAgICAgIHJldHVybiB0aGlzLl9leHA7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIHZhbHVlIG9mIHRoaXMgYXJndW1lbnQgdG8gYSBnaXZlbiBmaWVsZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkZXN0RmxkXCI+dGhlIGRlc3RpbmF0aW9uIGZpZWxkXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgcHVibGljIGFzeW5jIHNldFZhbHVlVG9GaWVsZChkZXN0RmxkOiBGaWVsZEJhc2UpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCB2YWw6IHN0cmluZztcclxuICAgIGxldCBpc051bGw6IGJvb2xlYW47XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLl90eXBlKSB7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuQVJHX1RZUEVfRklFTEQ6XHJcbiAgICAgICAgdmFsID0gdGhpcy5fZmxkLmdldFZhbHVlKHRydWUpO1xyXG4gICAgICAgIHZhbCA9IEFyZ3VtZW50LmNvbnZlcnRBcmdzKHZhbCwgdGhpcy5fZmxkLmdldFR5cGUoKSwgZGVzdEZsZC5nZXRUeXBlKCkpO1xyXG4gICAgICAgIGlzTnVsbCA9IHRoaXMuX2ZsZC5pc051bGwoKSB8fCB2YWwgPT0gbnVsbDtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuQVJHX1RZUEVfRVhQOlxyXG4gICAgICAgIHZhbCA9IGF3YWl0IHRoaXMuX2V4cC5ldmFsdWF0ZVdpdGhSZXN1bHRUeXBlQW5kTGVuZ3RoKGRlc3RGbGQuZ2V0VHlwZSgpLCBkZXN0RmxkLmdldFNpemUoKSk7XHJcbiAgICAgICAgaXNOdWxsID0gKHZhbCA9PSBudWxsKTtcclxuICAgICAgICBpZiAoaXNOdWxsKVxyXG4gICAgICAgICAgdmFsID0gQXJndW1lbnQuZ2V0RW1wdHlWYWx1ZSgoZGVzdEZsZC5nZXRUeXBlKCkgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQiB8fFxyXG4gICAgICAgICAgICBkZXN0RmxkLmdldFR5cGUoKSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5CTE9CX1ZFQ1RPUikpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkFSR19UWVBFX1ZBTFVFOlxyXG4gICAgICAgIHZhbCA9IEFyZ3VtZW50LmNvbnZlcnRBcmdzKHRoaXMuX3ZhbCwgdGhpcy5fdmFsdWVBdHRyLCBkZXN0RmxkLmdldFR5cGUoKSk7XHJcbiAgICAgICAgaXNOdWxsID0gdGhpcy5fdmFsdWVJc051bGwgfHwgdmFsID09IG51bGw7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gVXBkYXRlIGRlc3RpbmF0aW9uIGZpZWxkJ3MgX2lzTlVMTCB3aXRoIHRoZSB2YWx1ZSBmcm9tIHJlY29yZC4gVGhpcyBpcyBuZWVkZWQgdG8gaWRlbnRpZnlcclxuICAgIC8vIGlmIHRoZSB2YXJpYWJsZSBpcyBtb2RpZmllZC5cclxuICAgIGRlc3RGbGQudGFrZVZhbEZyb21SZWMoKTtcclxuICAgIGF3YWl0IGRlc3RGbGQuc2V0VmFsdWVBbmRTdGFydFJlY29tcHV0ZSh2YWwsIGlzTnVsbCwgKDxUYXNrPmRlc3RGbGQuZ2V0VGFzaygpKS5EYXRhVmlld1dhc1JldHJpZXZlZCwgZmFsc2UsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBjb252ZXJ0cyBBbHBoYS9Vbmljb2RlIHZhbHVlcyB0byBCbG9iIGFuZCB2aWNlIHZlcnNhLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNyY0F0dHJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImV4cGVjdGVkVHlwZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRBcmdzKHZhbHVlOiBzdHJpbmcsIHNyY0F0dHI6IFN0b3JhZ2VBdHRyaWJ1dGUsIGV4cGVjdGVkVHlwZTogU3RvcmFnZUF0dHJpYnV0ZSk6IHN0cmluZyB7XHJcbiAgICBsZXQgaW52YWxpZEFyZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHN3aXRjaCAoZXhwZWN0ZWRUeXBlKSB7XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQTpcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREU6XHJcbiAgICAgICAgaWYgKHNyY0F0dHIgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQikge1xyXG4gICAgICAgICAgaWYgKEJsb2JUeXBlLmlzVmFsaWRCbG9iKHZhbHVlKSlcclxuICAgICAgICAgICAgdmFsdWUgPSBCbG9iVHlwZS5nZXRTdHJpbmcodmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICghU3RvcmFnZUF0dHJpYnV0ZUNoZWNrLklzVHlwZUFscGhhT3JVbmljb2RlKHNyY0F0dHIpKVxyXG4gICAgICAgICAgaW52YWxpZEFyZyA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQzpcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkRBVEU6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5USU1FOlxyXG4gICAgICAgIGlmICghU3RvcmFnZUF0dHJpYnV0ZUNoZWNrLmlzVHlwZU51bWVyaWMoc3JjQXR0cikpXHJcbiAgICAgICAgICBpbnZhbGlkQXJnID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CTE9COlxyXG4gICAgICAgIGlmIChTdG9yYWdlQXR0cmlidXRlQ2hlY2suSXNUeXBlQWxwaGFPclVuaWNvZGUoc3JjQXR0cikpIHtcclxuICAgICAgICAgIGxldCBjb250ZW50VHlwZTogc3RyaW5nID0gc3JjQXR0ciA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQVxyXG4gICAgICAgICAgICA/IEJsb2JUeXBlLkNPTlRFTlRfVFlQRV9BTlNJXHJcbiAgICAgICAgICAgIDogQmxvYlR5cGUuQ09OVEVOVF9UWVBFX1VOSUNPREU7XHJcbiAgICAgICAgICB2YWx1ZSA9IEJsb2JUeXBlLmNyZWF0ZUZyb21TdHJpbmcodmFsdWUsIGNvbnRlbnRUeXBlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoIVN0b3JhZ2VBdHRyaWJ1dGVDaGVjay5pc1R5cGVCbG9iKHNyY0F0dHIpKVxyXG4gICAgICAgICAgaW52YWxpZEFyZyA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgdGhlcmUgaXMgbWlzbWF0Y2ggaW4gYXR0cmlidXRlLCB0YWtlIGRlZmF1bHQgdmFsdWUgb2YgZXhwZWN0ZCBhcmd1bWVudC5cclxuICAgIGlmIChpbnZhbGlkQXJnKVxyXG4gICAgICB2YWx1ZSA9IEZpZWxkRGVmLmdldE1hZ2ljRGVmYXVsdFZhbHVlKGV4cGVjdGVkVHlwZSk7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHZhbHVlIG9mIEFyZ3VtZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImV4cFR5cGVcIj50eXBlIG9mIGV4cGVjdGVkIHR5cGUgb2YgZXZhbHVhdGlvbjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJleHBTaXplXCI+c2l6ZSBvZiBleHBlY3RlZCBzdHJpbmcgZnJvbSBldmFsdWF0aW9uPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHZhbHVlIG9mIHRoZSBBcmd1bWVudDwvcmV0dXJucz5cclxuICBwdWJsaWMgYXN5bmMgZ2V0VmFsdWUoZXhwVHlwZTogU3RvcmFnZUF0dHJpYnV0ZSwgZXhwU2l6ZTogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHN3aXRjaCAodGhpcy5fdHlwZSkge1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkFSR19UWVBFX0VYUDpcclxuICAgICAgICB0aGlzLl92YWwgPSBhd2FpdCB0aGlzLl9leHAuZXZhbHVhdGVXaXRoUmVzdWx0VHlwZUFuZExlbmd0aChleHBUeXBlLCBleHBTaXplKTtcclxuICAgICAgICBpZiAodGhpcy5fdmFsID09IG51bGwpXHJcbiAgICAgICAgICB0aGlzLl92YWwgPSBBcmd1bWVudC5nZXRFbXB0eVZhbHVlKGV4cFR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQlxyXG4gICAgICAgICAgICB8fCBleHBUeXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkJMT0JfVkVDVE9SKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuQVJHX1RZUEVfRklFTEQ6XHJcbiAgICAgICAgdGhpcy5fdmFsID0gdGhpcy5fZmxkLmdldFZhbHVlKHRydWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5BUkdfVFlQRV9WQUxVRTpcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxyZXR1cm5zPiB2YWx1ZSBvZiB0aGUgc2tpcCBmbGFnIDwvcmV0dXJucz5cclxuICBza2lwQXJnKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NraXA7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZmlsbCBhbiBhcmd1bWVudCBkYXRhIGZyb20gYSBwYXJhbWV0ZXIgZGF0YVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwYXJhbVZhbHVlQXR0clwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwYXJhbVZhbHVlXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInBhcmFtTnVsbFwiPjwvcGFyYW0+XHJcbiAgZmlsbERhdGFCeVBhcmFtcyhwYXJhbVZhbHVlQXR0cjogU3RvcmFnZUF0dHJpYnV0ZSwgcGFyYW1WYWx1ZTogc3RyaW5nLCBwYXJhbU51bGw6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3ZhbHVlQXR0ciA9IHBhcmFtVmFsdWVBdHRyO1xyXG4gICAgdGhpcy5fdmFsID0gcGFyYW1WYWx1ZTtcclxuICAgIHRoaXMuX3ZhbHVlSXNOdWxsID0gcGFyYW1OdWxsO1xyXG5cclxuICAgIC8vIFRoZSBzZXJ2ZXIgaW5kaWNhdGVzIHNraXAgb24gYSBwYXJhbWV0ZXIgYnkgc2VuZGluZyBEQVRBX1RZUEVfU0tJUCBpbnN0ZWFkIG9mIHRoZSByZWFsIGF0dHJpYnV0ZS5cclxuICAgIGlmICh0aGlzLl92YWx1ZUF0dHIgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuU0tJUCkge1xyXG4gICAgICB0aGlzLl90eXBlID0gQ29uc3RJbnRlcmZhY2UuQVJHX1RZUEVfU0tJUCAvKidYJyovO1xyXG4gICAgICB0aGlzLl9za2lwID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLl90eXBlID0gQ29uc3RJbnRlcmZhY2UuQVJHX1RZUEVfVkFMVUUgLypWKi87XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IHJldHVybnMgZW1wdHkgdmFsdWU8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNCbG9iXCI+LSB0cnVlIGlzIHZhbHVlIGlzIGZvciBibG9iPC9wYXJhbT5cclxuICBwcml2YXRlIHN0YXRpYyBnZXRFbXB0eVZhbHVlKGlzQmxvYjogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gaXNCbG9iID8gKEJsb2JUeXBlLmdldEVtcHR5QmxvYlByZWZpeCgnXFwwJykgLyonXHUwMDAwJyovICsgXCI7XCIpIDogXCJcIjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZmlsbCB0aGUgYXJndW1lbnQgZnJvbSBhIHN0cmluZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYXJnU3RyXCI+PC9wYXJhbT5cclxuICBwdWJsaWMgRmlsbEZyb21TdHJpbmcoYXJnU3RyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIC8vIHR5cGUgaXMgYWx3YXlzIGEgdmFsdWVcclxuICAgIHRoaXMuX3R5cGUgPSBDb25zdEludGVyZmFjZS5BUkdfVFlQRV9WQUxVRTtcclxuXHJcbiAgICBsZXQgYXJnVHlwZTogc3RyaW5nID0gbnVsbDtcclxuICAgIC8vIElmIHN0cmluZyBpcyBzaG9ydGVyIHRoYW4gMywgYXNzdW1lIGl0IGRvZXMgbm90IGhhdmUgYW4gYXR0cmlidXRlIGlkZW50aWZpZXJcclxuICAgIGlmIChhcmdTdHIubGVuZ3RoID4gMilcclxuICAgICAgYXJnVHlwZSA9IGFyZ1N0ci5zdWJzdHIoMCwgMik7XHJcblxyXG4gICAgc3dpdGNoIChhcmdUeXBlKSB7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuUkVRX0FSR19BTFBIQTpcclxuICAgICAgICB0aGlzLl92YWx1ZUF0dHIgPSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLlJFUV9BUkdfVU5JQ09ERTpcclxuICAgICAgICB0aGlzLl92YWx1ZUF0dHIgPSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuUkVRX0FSR19OVU1FUklDOlxyXG4gICAgICAgIHRoaXMuX3ZhbHVlQXR0ciA9IFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5SRVFfQVJHX0RPVUJMRTpcclxuICAgICAgICB0aGlzLl92YWx1ZUF0dHIgPSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUM7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuUkVRX0FSR19MT0dJQ0FMOlxyXG4gICAgICAgIHRoaXMuX3ZhbHVlQXR0ciA9IFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5SRVFfQVJHX05VTEw6XHJcbiAgICAgICAgdGhpcy5fdmFsdWVBdHRyID0gU3RvcmFnZUF0dHJpYnV0ZS5OT05FO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIC8vIGlmIHN0b3JhZ2UgdHlwZSBpcyBub3QgZGVmaW5lZCwgYXNzdW1lIGFscGhhIHN0cmluZyBhbmQgdGhlIGVudGlyZSBzdHJpbmcgaXMgdGhlIHZhbHVlXHJcbiAgICAgICAgdGhpcy5fdmFsdWVBdHRyID0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQTtcclxuICAgICAgICB0aGlzLl92YWwgPSBhcmdTdHI7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gdGhlIGNhc2UgdGhlIHN0cmluZyBpcyB0b28gc2hvcnQgd2FzIGRlYWx0IHdpdGggZWFybGllciAtIGl0IHdpbGwgZ2V0IHRvIHRoZSBkZWZhdWx0IGNhc2UgaW4gdGhlIHN3aXRjaFxyXG4gICAgLy8gYW5kIHJldHVybiBmcm9tIHRoZXJlXHJcbiAgICB0aGlzLl92YWwgPSBhcmdTdHIuc3Vic3RyKDIpO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
|
@@ -1,103 +0,0 @@
|
|
1
|
-
import { List } from '@magic-xpa/mscorelib';
|
2
|
-
import { Argument } from './Argument';
|
3
|
-
import { StrUtil } from '@magic-xpa/utils';
|
4
|
-
export class ArgumentsList {
|
5
|
-
constructor(srcArgsOrExp_paramsOrArgument) {
|
6
|
-
this._list = null;
|
7
|
-
this.RefreshOnString = null;
|
8
|
-
if (arguments.length === 0) {
|
9
|
-
this.constructor_0();
|
10
|
-
return;
|
11
|
-
}
|
12
|
-
if (arguments.length === 1 && (srcArgsOrExp_paramsOrArgument === null || srcArgsOrExp_paramsOrArgument instanceof Array)) {
|
13
|
-
this.constructor_2(srcArgsOrExp_paramsOrArgument);
|
14
|
-
return;
|
15
|
-
}
|
16
|
-
this.constructor_3(srcArgsOrExp_paramsOrArgument);
|
17
|
-
}
|
18
|
-
constructor_0() {
|
19
|
-
}
|
20
|
-
async Initialize(srcArgs) {
|
21
|
-
this.constructor_0();
|
22
|
-
if (srcArgs === null)
|
23
|
-
this._list = null;
|
24
|
-
else {
|
25
|
-
this._list = new List();
|
26
|
-
for (let i = 0; i < srcArgs.getSize(); i = i + 1) {
|
27
|
-
let arg = new Argument(srcArgs.getArg(i));
|
28
|
-
await arg.Initialize(srcArgs.getArg(i));
|
29
|
-
this._list.push(arg);
|
30
|
-
}
|
31
|
-
}
|
32
|
-
}
|
33
|
-
constructor_2(Exp_params) {
|
34
|
-
this.constructor_0();
|
35
|
-
let argCnt = Exp_params.length;
|
36
|
-
if (argCnt === 0)
|
37
|
-
this._list = null;
|
38
|
-
else {
|
39
|
-
this._list = new List();
|
40
|
-
for (let i = 0; i < argCnt; i = i + 1) {
|
41
|
-
this._list.push(new Argument(Exp_params[i]));
|
42
|
-
}
|
43
|
-
}
|
44
|
-
}
|
45
|
-
constructor_3(argument) {
|
46
|
-
this.Add(argument);
|
47
|
-
}
|
48
|
-
fillList(valueStr, srcTask) {
|
49
|
-
let tok = StrUtil.tokenize(valueStr, "$");
|
50
|
-
let size = tok.length;
|
51
|
-
this._list = new List();
|
52
|
-
for (let i = 0; i < size; i = i + 1) {
|
53
|
-
let argument = new Argument();
|
54
|
-
argument.fillData(tok[i], srcTask);
|
55
|
-
this._list.push(argument);
|
56
|
-
}
|
57
|
-
}
|
58
|
-
buildListFromParams(size, attrs, vals, nulls) {
|
59
|
-
this._list = new List();
|
60
|
-
for (let i = 0; i < size; i = i + 1) {
|
61
|
-
let argument = new Argument();
|
62
|
-
argument.fillDataByParams(attrs.charAt(i), vals[i], nulls.charAt(i) !== '0');
|
63
|
-
this._list.push(argument);
|
64
|
-
}
|
65
|
-
}
|
66
|
-
buildXML(message) {
|
67
|
-
for (let i = 0; i < this._list.length; i = i + 1) {
|
68
|
-
if (i > 0)
|
69
|
-
message.Append('$');
|
70
|
-
this._list.get_Item(i).buildXML(message);
|
71
|
-
}
|
72
|
-
}
|
73
|
-
getSize() {
|
74
|
-
return (this._list === null) ? 0 : this._list.length;
|
75
|
-
}
|
76
|
-
getArg(idx) {
|
77
|
-
if (idx < 0 || idx >= this._list.length)
|
78
|
-
return null;
|
79
|
-
return this._list.get_Item(idx);
|
80
|
-
}
|
81
|
-
async getArgValue(idx, expType, expSize) {
|
82
|
-
let arg = this.getArg(idx);
|
83
|
-
if (arg === null)
|
84
|
-
return null;
|
85
|
-
return await arg.getValue(expType, expSize);
|
86
|
-
}
|
87
|
-
FillListFromString(argsString) {
|
88
|
-
let pattern = new RegExp("(?<!\\\\),");
|
89
|
-
let array = argsString.split(pattern);
|
90
|
-
this._list = new List();
|
91
|
-
for (let i = 0; i < array.length; i = i + 1) {
|
92
|
-
let argument = new Argument();
|
93
|
-
argument.FillFromString(array[i]);
|
94
|
-
this._list.push(argument);
|
95
|
-
}
|
96
|
-
}
|
97
|
-
Add(argument) {
|
98
|
-
if (this._list === null)
|
99
|
-
this._list = new List();
|
100
|
-
this._list.push(argument);
|
101
|
-
}
|
102
|
-
}
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJndW1lbnRzTGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvcnQvQXJndW1lbnRzTGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHdEMsT0FBTyxFQUFvQixPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RCxNQUFNLE9BQU8sYUFBYTtJQVV4QixZQUFZLDZCQUFtQztRQVR2QyxVQUFLLEdBQW1CLElBQUksQ0FBQztRQUlyQyxvQkFBZSxHQUFXLElBQUksQ0FBQztRQU03QixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixPQUFPO1NBQ1I7UUFDRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEtBQUssSUFBSSxJQUFJLDZCQUE2QixZQUFZLEtBQUssQ0FBQyxFQUFFO1lBQ3hILElBQUksQ0FBQyxhQUFhLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUNsRCxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUtPLGFBQWE7SUFDckIsQ0FBQztJQUtNLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBc0I7UUFDNUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksT0FBTyxLQUFLLElBQUk7WUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7YUFDZjtZQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQVksQ0FBQztZQUVsQyxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN4RCxJQUFJLEdBQUcsR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLE1BQU0sR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3RCO1NBQ0Y7SUFDSCxDQUFDO0lBS08sYUFBYSxDQUFDLFVBQW9CO1FBQ3hDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLE1BQU0sR0FBVyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBRXZDLElBQUksTUFBTSxLQUFLLENBQUM7WUFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQzthQUNmO1lBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksRUFBWSxDQUFDO1lBRWxDLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzdDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDOUM7U0FDRjtJQUNILENBQUM7SUFNTyxhQUFhLENBQUMsUUFBa0I7UUFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBT0QsUUFBUSxDQUFDLFFBQWdCLEVBQUUsT0FBaUI7UUFDMUMsSUFBSSxHQUFHLEdBQWEsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEQsSUFBSSxJQUFJLEdBQVcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUU5QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFZLENBQUM7UUFFbEMsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMzQyxJQUFJLFFBQVEsR0FBYSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ3hDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFRLE9BQU8sQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQVNELG1CQUFtQixDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsSUFBYyxFQUFFLEtBQWE7UUFDNUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksRUFBWSxDQUFDO1FBRWxDLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDM0MsSUFBSSxRQUFRLEdBQWEsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUN4QyxRQUFRLENBQUMsZ0JBQWdCLENBQW1CLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFRLENBQUM7WUFDdEcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBTUQsUUFBUSxDQUFDLE9BQXNCO1FBQzdCLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN4RCxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUNQLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQVE7WUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzFDO0lBQ0gsQ0FBQztJQUtELE9BQU87UUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUN2RCxDQUFDO0lBTUQsTUFBTSxDQUFDLEdBQVc7UUFDaEIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU07WUFDckMsT0FBTyxJQUFJLENBQUM7UUFFZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFTRCxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQVcsRUFBRSxPQUF5QixFQUFFLE9BQWU7UUFDdkUsSUFBSSxHQUFHLEdBQWEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQyxJQUFJLEdBQUcsS0FBSyxJQUFJO1lBQ2QsT0FBTyxJQUFJLENBQUM7UUFDZCxPQUFPLE1BQU0sR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQU1ELGtCQUFrQixDQUFDLFVBQWtCO1FBR25DLElBQUksT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksS0FBSyxHQUFhLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksRUFBWSxDQUFDO1FBRWxDLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ25ELElBQUksUUFBUSxHQUFhLElBQUksUUFBUSxFQUFFLENBQUM7WUFDeEMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFNRCxHQUFHLENBQUMsUUFBa0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUk7WUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksRUFBWSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV4cFZhbCB9IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcclxuaW1wb3J0IHsgTGlzdCwgU3RyaW5nQnVpbGRlciB9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHsgQXJndW1lbnQgfSBmcm9tICcuL0FyZ3VtZW50JztcclxuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uL3Rhc2tzL1Rhc2snO1xyXG5pbXBvcnQgeyBUYXNrQmFzZSB9IGZyb20gJy4uL3Rhc2tzL1Rhc2tCYXNlJztcclxuaW1wb3J0IHsgU3RvcmFnZUF0dHJpYnV0ZSwgU3RyVXRpbCB9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFyZ3VtZW50c0xpc3Qge1xyXG4gIHByaXZhdGUgX2xpc3Q6IExpc3Q8QXJndW1lbnQ+ID0gbnVsbDtcclxuXHJcbiAgLy8gU3RyaW5nIGZvciBzdWJmb3JtIGFyZ3VtZW50c1xyXG4gIC8vIE9ubHkgZm9yIG9mZmxpbmUuIEl0J3MgcmVsZXZhbnQgZm9yIGNhbGwgd2l0aCBkZXN0aW5hdGlvblxyXG4gIFJlZnJlc2hPblN0cmluZzogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoKTtcclxuICBjb25zdHJ1Y3RvcihFeHBfcGFyYW1zOiBFeHBWYWxbXSk7XHJcbiAgY29uc3RydWN0b3IoYXJndW1lbnQ6IEFyZ3VtZW50KTtcclxuICBjb25zdHJ1Y3RvcihzcmNBcmdzT3JFeHBfcGFyYW1zT3JBcmd1bWVudD86IGFueSkge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8wKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIChzcmNBcmdzT3JFeHBfcGFyYW1zT3JBcmd1bWVudCA9PT0gbnVsbCB8fCBzcmNBcmdzT3JFeHBfcGFyYW1zT3JBcmd1bWVudCBpbnN0YW5jZW9mIEFycmF5KSkge1xyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzIoc3JjQXJnc09yRXhwX3BhcmFtc09yQXJndW1lbnQpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzMoc3JjQXJnc09yRXhwX3BhcmFtc09yQXJndW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SIHRoYXQgY3JlYXRlcyBhIFZBTFVFIGFyZ3VtZW50IGxpc3QgdXNpbmcgYSBnaXZlbiBhcmd1bWVudCBsaXN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwdWJsaWMgYXN5bmMgSW5pdGlhbGl6ZShzcmNBcmdzOiBBcmd1bWVudHNMaXN0KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzAoKTtcclxuICAgIGlmIChzcmNBcmdzID09PSBudWxsKVxyXG4gICAgICB0aGlzLl9saXN0ID0gbnVsbDtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLl9saXN0ID0gbmV3IExpc3Q8QXJndW1lbnQ+KCk7XHJcblxyXG4gICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgc3JjQXJncy5nZXRTaXplKCk7IGkgPSBpICsgMSkge1xyXG4gICAgICAgIGxldCBhcmcgPSBuZXcgQXJndW1lbnQoc3JjQXJncy5nZXRBcmcoaSkpO1xyXG4gICAgICAgIGF3YWl0IGFyZy5Jbml0aWFsaXplKHNyY0FyZ3MuZ2V0QXJnKGkpKTtcclxuICAgICAgICB0aGlzLl9saXN0LnB1c2goYXJnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1IgdGhhdCBjcmVhdGVzIGEgVkFMVUUgYXJndW1lbnQgbGlzdCB1c2luZyBhIGdpdmVuIGV4cHJlc3Npb24gdmFsdWUgbGlzdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8yKEV4cF9wYXJhbXM6IEV4cFZhbFtdKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzAoKTtcclxuICAgIGxldCBhcmdDbnQ6IG51bWJlciA9IEV4cF9wYXJhbXMubGVuZ3RoO1xyXG5cclxuICAgIGlmIChhcmdDbnQgPT09IDApXHJcbiAgICAgIHRoaXMuX2xpc3QgPSBudWxsO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuX2xpc3QgPSBuZXcgTGlzdDxBcmd1bWVudD4oKTtcclxuXHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBhcmdDbnQ7IGkgPSBpICsgMSkge1xyXG4gICAgICAgIHRoaXMuX2xpc3QucHVzaChuZXcgQXJndW1lbnQoRXhwX3BhcmFtc1tpXSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENUT1IgLSBjcmVhdGUgYW4gYXJndW1lbnQgbGlzdCB3aXRoIG9uZSBzcGVjaWZpZWQgYXJndW1lbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImFyZ3VtZW50XCI+PC9wYXJhbT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzMoYXJndW1lbnQ6IEFyZ3VtZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLkFkZChhcmd1bWVudCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZmlsbCB0aGUgYXJndW1lbnQgbGlzdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWx1ZVN0clwiPnN0cmluZyBpbiB0aGUgZm9ybWF0IG9mOiBcIltGOnN0cixzdHJdfFtFOnN0cl0kLi4uXCI8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3JjVGFza1wiPnRoZSBzb3VyY2UgdGFzayBmb3IgcGFyc2luZyBleHByZXNzaW9uIGFyZ3VtZW50czwvcGFyYW0+XHJcbiAgZmlsbExpc3QodmFsdWVTdHI6IHN0cmluZywgc3JjVGFzazogVGFza0Jhc2UpOiB2b2lkIHtcclxuICAgIGxldCB0b2s6IHN0cmluZ1tdID0gU3RyVXRpbC50b2tlbml6ZSh2YWx1ZVN0ciwgXCIkXCIpO1xyXG4gICAgbGV0IHNpemU6IG51bWJlciA9IHRvay5sZW5ndGg7XHJcblxyXG4gICAgdGhpcy5fbGlzdCA9IG5ldyBMaXN0PEFyZ3VtZW50PigpO1xyXG5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBzaXplOyBpID0gaSArIDEpIHtcclxuICAgICAgbGV0IGFyZ3VtZW50OiBBcmd1bWVudCA9IG5ldyBBcmd1bWVudCgpO1xyXG4gICAgICBhcmd1bWVudC5maWxsRGF0YSh0b2tbaV0sIDxUYXNrPnNyY1Rhc2spO1xyXG4gICAgICB0aGlzLl9saXN0LnB1c2goYXJndW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGJ1aWxkcyBhcmd1bWVudCBsaXN0IGZyb20gdGhlIGV2ZW50IHBhcmFtZXRlcnNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic2l6ZVwiPiAgIC0gYXJndW1lbnQgbnVtYmVyIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJhdHRyc1wiPiAgLSBzdHJpbmcgb2YgYXR0cmlidXRlczwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWxzXCI+ICAgLSB2YWx1ZSBzdHJpbmdzPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm51bGxzXCI+ICAtIGFyZ3VtZW50cyBudWxsczwvcGFyYW0+XHJcbiAgYnVpbGRMaXN0RnJvbVBhcmFtcyhzaXplOiBudW1iZXIsIGF0dHJzOiBzdHJpbmcsIHZhbHM6IHN0cmluZ1tdLCBudWxsczogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9saXN0ID0gbmV3IExpc3Q8QXJndW1lbnQ+KCk7XHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHNpemU7IGkgPSBpICsgMSkge1xyXG4gICAgICBsZXQgYXJndW1lbnQ6IEFyZ3VtZW50ID0gbmV3IEFyZ3VtZW50KCk7XHJcbiAgICAgIGFyZ3VtZW50LmZpbGxEYXRhQnlQYXJhbXMoPFN0b3JhZ2VBdHRyaWJ1dGU+YXR0cnMuY2hhckF0KGkpLCB2YWxzW2ldLCBudWxscy5jaGFyQXQoaSkgIT09ICcwJy8qJzAnKi8pO1xyXG4gICAgICB0aGlzLl9saXN0LnB1c2goYXJndW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGJ1aWxkIHRoZSBYTUwgc3RyaW5nIGZvciB0aGUgYXJndW1lbnRzIGxpc3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibWVzc2FnZVwiPnRoZSBYTUwgc3RyaW5nIHRvIGFwcGVuZCB0aGUgYXJndW1lbnRzIHRvPC9wYXJhbT5cclxuICBidWlsZFhNTChtZXNzYWdlOiBTdHJpbmdCdWlsZGVyKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fbGlzdC5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICBpZiAoaSA+IDApXHJcbiAgICAgICAgbWVzc2FnZS5BcHBlbmQoJyQnKS8qJyQnKi87XHJcbiAgICAgIHRoaXMuX2xpc3QuZ2V0X0l0ZW0oaSkuYnVpbGRYTUwobWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbGlzdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0U2l6ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuICh0aGlzLl9saXN0ID09PSBudWxsKSA/IDAgOiB0aGlzLl9saXN0Lmxlbmd0aDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIGFuIGFyZ3VtZW50IGl0ZW0gZnJvbSB0aGUgbGlzdCBieSBpdHMgaW5kZXhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWR4XCI+dGhlIGluZGV4IG9mIHRoZSByZXF1ZXN0ZWQgYXJndW1lbnQ8L3BhcmFtPlxyXG4gIGdldEFyZyhpZHg6IG51bWJlcik6IEFyZ3VtZW50IHtcclxuICAgIGlmIChpZHggPCAwIHx8IGlkeCA+PSB0aGlzLl9saXN0Lmxlbmd0aClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2xpc3QuZ2V0X0l0ZW0oaWR4KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgVmFsdWUgb2YgQXJndW1lbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWR4XCI+dGhlIGluZGV4IG9mIHRoZSByZXF1ZXN0ZWQgYXJndW1lbnQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZXhwVHlwZVwiPnR5cGUgb2YgZXhwZWN0ZWQgdHlwZSBvZiBldmFsdWF0aW9uLCBmb3IgZXhwcmVzc2lvbiBvbmx5PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImV4cFNpemVcIj5zaXplIG9mIGV4cGVjdGVkIHN0cmluZyBmcm9tIGV2YWx1YXRpb24sIGZvciBleHByZXNzaW9uIG9ubHk8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdmFsdWUgb2YgZXZhbHVhdGVkIEFyZ3VtZW50PC9yZXR1cm5zPlxyXG4gIGFzeW5jIGdldEFyZ1ZhbHVlKGlkeDogbnVtYmVyLCBleHBUeXBlOiBTdG9yYWdlQXR0cmlidXRlLCBleHBTaXplOiBudW1iZXIpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgbGV0IGFyZzogQXJndW1lbnQgPSB0aGlzLmdldEFyZyhpZHgpO1xyXG4gICAgaWYgKGFyZyA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gYXdhaXQgYXJnLmdldFZhbHVlKGV4cFR5cGUsIGV4cFNpemUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBmaWxsIHRoZSBhcmd1bWVudHMgbGlzdCBmcm9tIGEgc3RyaW5nXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJhcmdzU3RyaW5nXCI+PC9wYXJhbT5cclxuICBGaWxsTGlzdEZyb21TdHJpbmcoYXJnc1N0cmluZzogc3RyaW5nKTogdm9pZCB7XHJcblxyXG4gICAgLy8gVE9ETyA6IGNoZWNrIHNpemUgb2YgYnVuZGxlIGFuZCBkZWNpZGUgd2hldGhlciB0byB1c2UgUmVnRXhwXHJcbiAgICBsZXQgcGF0dGVybiA9IG5ldyBSZWdFeHAoXCIoPzwhXFxcXFxcXFwpLFwiKTtcclxuICAgIGxldCBhcnJheTogc3RyaW5nW10gPSBhcmdzU3RyaW5nLnNwbGl0KHBhdHRlcm4pO1xyXG4gICAgdGhpcy5fbGlzdCA9IG5ldyBMaXN0PEFyZ3VtZW50PigpO1xyXG5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICBsZXQgYXJndW1lbnQ6IEFyZ3VtZW50ID0gbmV3IEFyZ3VtZW50KCk7XHJcbiAgICAgIGFyZ3VtZW50LkZpbGxGcm9tU3RyaW5nKGFycmF5W2ldKTtcclxuICAgICAgdGhpcy5fbGlzdC5wdXNoKGFyZ3VtZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gYWRkIGFuIGFyZ3VtZW50IHRvIHRoZSBsaXN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJhcmd1bWVudFwiPjwvcGFyYW0+XHJcbiAgQWRkKGFyZ3VtZW50OiBBcmd1bWVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2xpc3QgPT09IG51bGwpXHJcbiAgICAgIHRoaXMuX2xpc3QgPSBuZXcgTGlzdDxBcmd1bWVudD4oKTtcclxuICAgIHRoaXMuX2xpc3QucHVzaChhcmd1bWVudCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|