@sapui5/sap.fe.core 1.124.2 → 1.124.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/AppStateHandler.js +2 -2
- package/src/sap/fe/core/AppStateHandler.ts +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js +38 -37
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +40 -39
- package/src/sap/fe/core/controllerextensions/SideEffects.js +35 -29
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +48 -32
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +3 -2
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +2 -1
- package/src/sap/fe/core/converters/ManifestWrapper.js +3 -2
- package/src/sap/fe/core/converters/ManifestWrapper.ts +2 -2
- package/src/sap/fe/core/converters/annotations/DataField.js +36 -13
- package/src/sap/fe/core/converters/annotations/DataField.ts +50 -14
- package/src/sap/fe/core/converters/controls/Common/Table.js +47 -38
- package/src/sap/fe/core/converters/controls/Common/Table.ts +33 -25
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +33 -37
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +30 -28
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.js +2 -2
- package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.ts +1 -1
package/package.json
CHANGED
package/src/sap/fe/core/.library
CHANGED
|
@@ -61,7 +61,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepEqual", "sap/fe/core/helpers/C
|
|
|
61
61
|
routerProxy = appComponent.getRouterProxy(),
|
|
62
62
|
hash = routerProxy.getHash(),
|
|
63
63
|
isStickyMode = ModelHelper.isStickySessionSupported(appComponent.getMetaModel()),
|
|
64
|
-
newHash = navigationService.replaceInnerAppStateKey(routerProxy.
|
|
64
|
+
newHash = navigationService.replaceInnerAppStateKey(routerProxy.getHash(), appStateKey);
|
|
65
65
|
if (newHash && this.simultaneousCreateRequest[stateIdentifier] === 0 && newHash !== hash) {
|
|
66
66
|
routerProxy.navToHash(newHash, undefined, undefined, undefined, !isStickyMode);
|
|
67
67
|
this.bNoRouteChange = true;
|
|
@@ -325,4 +325,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepEqual", "sap/fe/core/helpers/C
|
|
|
325
325
|
*/
|
|
326
326
|
return AppStateHandler;
|
|
327
327
|
}, true);
|
|
328
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZUeXBlIiwibGlicmFyeSIsIlNLSVBfTUVSR0VfS0VZIiwiUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURSIsIkFwcFN0YXRlSGFuZGxlciIsImRlZmluZVVJNUNsYXNzIiwib0FwcENvbXBvbmVudCIsIl9tQ3VycmVudEFwcFN0YXRlIiwic0lkIiwiZ2V0SWQiLCJzaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0IiwiYk5vUm91dGVDaGFuZ2UiLCJMb2ciLCJpbmZvIiwiX2dldElubmVyQXBwU3RhdGVGb3JWaWV3IiwiaW5uZXJBcHBTdGF0ZSIsInN0YXRlSWRlbnRpZmllciIsIl9hZGRBcHBTdGF0ZUluSGFzaCIsImFwcFN0YXRlS2V5IiwiYXBwQ29tcG9uZW50IiwibmF2aWdhdGlvblNlcnZpY2UiLCJnZXROYXZpZ2F0aW9uU2VydmljZSIsInJvdXRlclByb3h5IiwiZ2V0Um91dGVyUHJveHkiLCJoYXNoIiwiZ2V0SGFzaCIsImlzU3RpY2t5TW9kZSIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiZ2V0TWV0YU1vZGVsIiwibmV3SGFzaCIsInJlcGxhY2VJbm5lckFwcFN0YXRlS2V5IiwiZ2V0RnVsbEhhc2giLCJuYXZUb0hhc2giLCJ1bmRlZmluZWQiLCJfY3JlYXRlQXBwU3RhdGVLZXkiLCJhcHBTdGF0ZURhdGEiLCJzdG9yZUlubmVyQXBwU3RhdGVBc3luYyIsIl9nZXRBcHBTdGF0ZUluZm8iLCJjcmVhdGVBcHBQYXJhbWV0ZXJzIiwicmVwbGFjZUhhc2giLCJ2aWV3SWQiLCJhcHBTdGF0ZSIsImN1cnJlbnRTdGF0ZVRvVXBkYXRlIiwiZGVlcEVxdWFsIiwib0Vycm9yIiwiZXJyb3IiLCJmaW5kQXBwU3RhdGVJbkhhc2giLCJjcmVhdGVBcHBTdGF0ZSIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0Q2FwYWJpbGl0aWVzIiwiQXBwU3RhdGUiLCJCdXN5TG9ja2VyIiwiaXNMb2NrZWQiLCJza2lwTWVyZ2UiLCJyb290Q29udHJvbGxlciIsImdldFJvb3RDb250cm9sIiwiZ2V0Q29udHJvbGxlciIsInZpZXdTdGF0ZSIsIkVycm9yIiwiZ2V0TWV0YWRhdGEiLCJnZXROYW1lIiwicm91dGluZ0lzQ29tcGxldGUiLCJyZXRyaWV2ZVZpZXdTdGF0ZSIsIl9jcmVhdGVOYXZpZ2F0aW9uUGFyYW1ldGVycyIsIm9BcHBEYXRhIiwic05hdlR5cGUiLCJPYmplY3QiLCJhc3NpZ24iLCJzZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMiLCJvRGVmYXVsdGVkU2VsZWN0aW9uVmFyaWFudCIsInNlbGVjdGlvblZhcmlhbnQiLCJvU2VsZWN0aW9uVmFyaWFudCIsInJlcXVpcmVzU3RhbmRhcmRWYXJpYW50IiwiYk5hdlNlbFZhckhhc0RlZmF1bHRzT25seSIsIm5hdmlnYXRpb25UeXBlIiwiX2NoZWNrSWZMYXN0U2VlblJlY29yZCIsInZpZXciLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0UHJvcGVydHkiLCJ0ZWNobmljYWxLZXlzT2JqZWN0IiwiYmluZGluZ0NvbnRleHQiLCJwYXRoIiwiZ2V0UGF0aCIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwibWV0YVBhdGgiLCJnZXRNZXRhUGF0aCIsInRlY2huaWNhbEtleXMiLCJnZXRPYmplY3QiLCJlbGVtZW50Iiwia2V5VmFsdWUiLCJzZXRQcm9wZXJ0eSIsIl9nZXRBcHBTdGF0ZURhdGEiLCJuYXZUeXBlIiwia2V5IiwiaSIsImh5YnJpZCIsImlBcHBTdGF0ZSIsImtleXMiLCJsZW5ndGgiLCJhcHBseUFwcFN0YXRlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGVja0lmTGFzdFNlZW5SZWNvcmQiLCJsb2NrIiwib05hdmlnYXRpb25TZXJ2aWNlIiwidG9FUzZQcm9taXNlIiwicGFyc2VOYXZpZ2F0aW9uIiwiY2F0Y2giLCJhRXJyb3JEYXRhIiwid2FybmluZyIsInRoZW4iLCJhUmVzdWx0cyIsImluaXRpYWwiLCJvUm9vdENvbnRyb2xsZXIiLCJzaG91bGRBcHBseVN0YXRlIiwiX2lzU3RhdGVFbXB0eUZvcklBcHBTdGF0ZU5hdlR5cGUiLCJfZ2V0SW5pdGlhbFN0YXRlQXBwbGllZCIsIl9zZXRJbml0aWFsU3RhdGVBcHBsaWVkIiwiYXBwbHlWaWV3U3RhdGUiLCJmaW5hbGx5IiwidW5sb2NrIiwiY2hlY2tJZlJvdXRlQ2hhbmdlZEJ5SUFwcCIsInJlc2V0Um91dGVDaGFuZ2VkQnlJQXBwIiwiQmFzZU9iamVjdCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQXBwU3RhdGVIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGRlZXBFcXVhbCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwRXF1YWxcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25QYXJhbWV0ZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVmlld1N0YXRlXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgdG9FUzZQcm9taXNlIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1RvRVM2UHJvbWlzZVwiO1xuaW1wb3J0IHR5cGUgeyBJbm5lckFwcERhdGEgfSBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vTmF2aWdhdGlvbkhhbmRsZXJcIjtcbmltcG9ydCB0eXBlIHsgU2VsZWN0aW9uVmFyaWFudCB9IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgbGlicmFyeSBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vbGlicmFyeVwiO1xuaW1wb3J0IEJhc2VPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL09iamVjdFwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgQnVzeUxvY2tlciBmcm9tIFwiLi9jb250cm9sbGVyZXh0ZW5zaW9ucy9CdXN5TG9ja2VyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcIi4vaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuXG5jb25zdCBOYXZUeXBlID0gbGlicmFyeS5OYXZUeXBlO1xudHlwZSBBcHBTdGF0ZSA9IHtcblx0c2tpcE1lcmdlPzogYm9vbGVhbjtcblx0W2tleTogc3RyaW5nXTogdW5rbm93bjtcbn07XG5leHBvcnQgdHlwZSBBcHBEYXRhID0ge1xuXHRvRGVmYXVsdGVkU2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudDtcblx0b1NlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQ7XG5cdGJOYXZTZWxWYXJIYXNEZWZhdWx0c09ubHk6IGJvb2xlYW47XG5cdGFwcFN0YXRlOiBBcHBTdGF0ZTtcblx0aUFwcFN0YXRlPzoge1xuXHRcdGFwcFN0YXRlOiBBcHBTdGF0ZTtcblx0fTtcbn07XG5jb25zdCBTS0lQX01FUkdFX0tFWSA9IFwic2tpcE1lcmdlXCI7XG5leHBvcnQgdHlwZSBJQXBwU3RhdGUgPSB7XG5cdGFwcFN0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn07XG5cbmV4cG9ydCB0eXBlIEFwcERhdGFJbmZvID0ge1xuXHRhcHBTdGF0ZURhdGE6IHsgYXBwU3RhdGU6IG9iamVjdCB8IHVuZGVmaW5lZCB9O1xuXHRhcHBTdGF0ZUtleTogc3RyaW5nIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIENyZWF0ZUFwcFBhcmFtZXRlcnMgPSB7XG5cdHJlcGxhY2VIYXNoPzogYm9vbGVhbjtcblx0c2tpcE1lcmdlPzogYm9vbGVhbjtcblx0dmlld0lkPzogc3RyaW5nO1xufTtcblxuY29uc3QgUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURSA9IFwiUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURVwiO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5BcHBTdGF0ZUhhbmRsZXJcIilcbmNsYXNzIEFwcFN0YXRlSGFuZGxlciBleHRlbmRzIEJhc2VPYmplY3Qge1xuXHRwdWJsaWMgc0lkOiBzdHJpbmc7XG5cblx0cHVibGljIG9BcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudDtcblxuXHRwdWJsaWMgYk5vUm91dGVDaGFuZ2U6IGJvb2xlYW47XG5cblx0cHJpdmF0ZSBfbUN1cnJlbnRBcHBTdGF0ZT86IEFwcFN0YXRlID0ge307XG5cblx0c2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdDogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcblxuXHRjb25zdHJ1Y3RvcihvQXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMub0FwcENvbXBvbmVudCA9IG9BcHBDb21wb25lbnQ7XG5cdFx0dGhpcy5zSWQgPSBgJHtvQXBwQ29tcG9uZW50LmdldElkKCl9L0FwcFN0YXRlSGFuZGxlcmA7XG5cdFx0dGhpcy5zaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0ID0ge307XG5cdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IGZhbHNlO1xuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEUgOiBBcHBzdGF0ZSBoYW5kbGVyIGluaXRpYWxpemVkXCIpO1xuXHR9XG5cblx0Z2V0SWQoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5zSWQ7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHZpZXcgc3BlY2lmaWMgYXBwc3RhdGUuXG5cdCAqXG5cdCAqIEBwYXJhbSBpbm5lckFwcFN0YXRlIE92ZXJhbGwgYXBwc3RhdGVcblx0ICogQHBhcmFtIHN0YXRlSWRlbnRpZmllciBTdGF0ZSBpZGVudGlmaWVyLiBJZCBvZiB0aGUgbG9jYWwgdmlld1xuXHQgKiBAcmV0dXJucyBJbm5lciBhcHBzdGF0ZVxuXHQgKi9cblx0X2dldElubmVyQXBwU3RhdGVGb3JWaWV3KGlubmVyQXBwU3RhdGU6IElubmVyQXBwRGF0YSB8IHVuZGVmaW5lZCwgc3RhdGVJZGVudGlmaWVyOiBzdHJpbmcpOiBJbm5lckFwcERhdGEgfCB1bmRlZmluZWQge1xuXHRcdGlmIChzdGF0ZUlkZW50aWZpZXIgPT09IFJFUExBQ0VfQ09NUExFVEVfQVBQU1RBVEUgfHwgIWlubmVyQXBwU3RhdGUpIHtcblx0XHRcdC8vIG92ZXJhbGwgYXBwIHN0YXRlIG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQuXG5cdFx0XHRyZXR1cm4gaW5uZXJBcHBTdGF0ZTtcblx0XHR9XG5cblx0XHQvLyB3ZSB0YWtlIHRoZSBzdWJzZXQgb2YgdGhlIGFwcCBzdGF0ZSB3cnQgdG8gdGhlIGxvY2FsIHZpZXcgaWQuXG5cdFx0cmV0dXJuIHtcblx0XHRcdFtzdGF0ZUlkZW50aWZpZXJdOiBpbm5lckFwcFN0YXRlW3N0YXRlSWRlbnRpZmllciBhcyBrZXlvZiB0eXBlb2YgaW5uZXJBcHBTdGF0ZV0gfHwge31cblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBhcHBzdGF0ZSBpbiBoYXNoLlxuXHQgKlxuXHQgKiBAcGFyYW0gYXBwU3RhdGVLZXkgQXBwc3RhdGUga2V5XG5cdCAqIEBwYXJhbSBzdGF0ZUlkZW50aWZpZXIgU3RhdGUgaWRlbnRpZmllci4gSWQgb2YgdGhlIGxvY2FsIHZpZXdcblx0ICovXG5cdF9hZGRBcHBTdGF0ZUluSGFzaChhcHBTdGF0ZUtleTogc3RyaW5nLCBzdGF0ZUlkZW50aWZpZXI6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IHRoaXMub0FwcENvbXBvbmVudCxcblx0XHRcdG5hdmlnYXRpb25TZXJ2aWNlID0gYXBwQ29tcG9uZW50LmdldE5hdmlnYXRpb25TZXJ2aWNlKCksXG5cdFx0XHRyb3V0ZXJQcm94eSA9IGFwcENvbXBvbmVudC5nZXRSb3V0ZXJQcm94eSgpLFxuXHRcdFx0aGFzaCA9IHJvdXRlclByb3h5LmdldEhhc2goKSxcblx0XHRcdGlzU3RpY2t5TW9kZSA9IE1vZGVsSGVscGVyLmlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZChhcHBDb21wb25lbnQuZ2V0TWV0YU1vZGVsKCkpLFxuXHRcdFx0bmV3SGFzaCA9IG5hdmlnYXRpb25TZXJ2aWNlLnJlcGxhY2VJbm5lckFwcFN0YXRlS2V5KHJvdXRlclByb3h5LmdldEZ1bGxIYXNoKCksIGFwcFN0YXRlS2V5KTtcblxuXHRcdGlmIChuZXdIYXNoICYmIHRoaXMuc2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdFtzdGF0ZUlkZW50aWZpZXJdID09PSAwICYmIG5ld0hhc2ggIT09IGhhc2gpIHtcblx0XHRcdHJvdXRlclByb3h5Lm5hdlRvSGFzaChuZXdIYXNoLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAhaXNTdGlja3lNb2RlKTtcblx0XHRcdHRoaXMuYk5vUm91dGVDaGFuZ2UgPSB0cnVlO1xuXHRcdH1cblx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFOiBuYXZUb0hhc2hcIik7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlIEFwcHN0YXRlIEtleS5cblx0ICpcblx0ICogQHBhcmFtIGFwcFN0YXRlRGF0YSBBcHBzdGF0ZVxuXHQgKiBAcGFyYW0gc3RhdGVJZGVudGlmaWVyIFN0YXRlIGlkZW50aWZpZXIuIElkIG9mIHRoZSBsb2NhbCB2aWV3XG5cdCAqIEByZXR1cm5zIEFwcHN0YXRlIEtleVxuXHQgKi9cblx0YXN5bmMgX2NyZWF0ZUFwcFN0YXRlS2V5KGFwcFN0YXRlRGF0YTogSW5uZXJBcHBEYXRhLCBzdGF0ZUlkZW50aWZpZXI6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5vQXBwQ29tcG9uZW50LFxuXHRcdFx0bmF2aWdhdGlvblNlcnZpY2UgPSBhcHBDb21wb25lbnQuZ2V0TmF2aWdhdGlvblNlcnZpY2UoKTtcblxuXHRcdGlmICh0aGlzLnNpbXVsdGFuZW91c0NyZWF0ZVJlcXVlc3Rbc3RhdGVJZGVudGlmaWVyXSkge1xuXHRcdFx0Ly8gYW55IG90aGVyIHZhbHVlXG5cdFx0XHR0aGlzLnNpbXVsdGFuZW91c0NyZWF0ZVJlcXVlc3Rbc3RhdGVJZGVudGlmaWVyXSsrO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyAwIG9yIHVuZGVmaW5lZFxuXHRcdFx0dGhpcy5zaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0W3N0YXRlSWRlbnRpZmllcl0gPSAxO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFwcFN0YXRlS2V5ID0gYXdhaXQgbmF2aWdhdGlvblNlcnZpY2Uuc3RvcmVJbm5lckFwcFN0YXRlQXN5bmMoYXBwU3RhdGVEYXRhLCB0cnVlLCB0cnVlKTtcblxuXHRcdHRoaXMuc2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdFtzdGF0ZUlkZW50aWZpZXJdLS07XG5cblx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFOiBBcHBzdGF0ZSBzdG9yZWRcIik7XG5cdFx0cmV0dXJuIGFwcFN0YXRlS2V5O1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYXBwc3RhdGUgaW5mby5cblx0ICpcblx0ICogQHBhcmFtIGlubmVyQXBwU3RhdGVcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMgUGFyYW1ldGVycyBmb3IgY3JlYXRpbmcgbmV3IGFwcHN0YXRlXG5cdCAqIEBwYXJhbSBjcmVhdGVBcHBQYXJhbWV0ZXJzLnJlcGxhY2VIYXNoIEJvb2xlYW4gd2hpY2ggZGV0ZXJtaW5lcyB0byByZXBsYWNlIHRoZSBoYXNoIHdpdGggdGhlIG5ldyBnZW5lcmF0ZWQga2V5XG5cdCAqIEBwYXJhbSBjcmVhdGVBcHBQYXJhbWV0ZXJzLnZpZXdJZCBJZCBvZiB0aGUgdmlldyBmb3Igd2hpY2ggd2UgbmVlZCB0byBjcmVhdGUgdGhlIGFwcCBzdGF0ZS4gVGhpcyBpcyB0byBjcmVhdGUgb3IgdXBkYXRlIHZpZXcgc3BlY2lmaWMgYXBwc3RhdGUuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSByZXNvbHZpbmcgdGhlIHN0b3JlZCBkYXRhIG9yIGFwcHN0YXRlIGtleVxuXHQgKi9cblx0YXN5bmMgX2dldEFwcFN0YXRlSW5mbyhpbm5lckFwcFN0YXRlOiBJbm5lckFwcERhdGEgfCB1bmRlZmluZWQsIGNyZWF0ZUFwcFBhcmFtZXRlcnM/OiBDcmVhdGVBcHBQYXJhbWV0ZXJzKTogUHJvbWlzZTxBcHBEYXRhSW5mbz4ge1xuXHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IHRoaXMub0FwcENvbXBvbmVudDtcblx0XHRjb25zdCB7IHJlcGxhY2VIYXNoID0gdHJ1ZSwgdmlld0lkOiBzdGF0ZUlkZW50aWZpZXIgPSBSRVBMQUNFX0NPTVBMRVRFX0FQUFNUQVRFIH0gPSBjcmVhdGVBcHBQYXJhbWV0ZXJzID8/IHt9O1xuXG5cdFx0bGV0IGFwcFN0YXRlS2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblx0XHRsZXQgYXBwU3RhdGVEYXRhID0geyBhcHBTdGF0ZTogdGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSB9O1xuXG5cdFx0Y29uc3QgY3VycmVudFN0YXRlVG9VcGRhdGUgPSB0aGlzLl9nZXRJbm5lckFwcFN0YXRlRm9yVmlldyh0aGlzLl9tQ3VycmVudEFwcFN0YXRlLCBzdGF0ZUlkZW50aWZpZXIpO1xuXHRcdGlmIChpbm5lckFwcFN0YXRlICYmICFkZWVwRXF1YWwoY3VycmVudFN0YXRlVG9VcGRhdGUsIGlubmVyQXBwU3RhdGUpKSB7XG5cdFx0XHQvL1xuXHRcdFx0dGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSA9IHsgLi4udGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSwgLi4uKGlubmVyQXBwU3RhdGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIH07XG5cdFx0XHRhcHBTdGF0ZURhdGEgPSB7IGFwcFN0YXRlOiB0aGlzLl9tQ3VycmVudEFwcFN0YXRlIH07XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRhcHBTdGF0ZUtleSA9IGF3YWl0IHRoaXMuX2NyZWF0ZUFwcFN0YXRlS2V5KGFwcFN0YXRlRGF0YSwgc3RhdGVJZGVudGlmaWVyKTtcblx0XHRcdFx0aWYgKHJlcGxhY2VIYXNoID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0dGhpcy5fYWRkQXBwU3RhdGVJbkhhc2goYXBwU3RhdGVLZXksIHN0YXRlSWRlbnRpZmllcik7XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKG9FcnJvcjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3Iob0Vycm9yIGFzIHN0cmluZyk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHJvdXRlclByb3h5ID0gYXBwQ29tcG9uZW50LmdldFJvdXRlclByb3h5KCksXG5cdFx0XHRcdGhhc2ggPSByb3V0ZXJQcm94eS5nZXRIYXNoKCk7XG5cdFx0XHRhcHBTdGF0ZUtleSA9IHJvdXRlclByb3h5LmZpbmRBcHBTdGF0ZUluSGFzaChoYXNoKSBhcyBzdHJpbmc7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRhcHBTdGF0ZURhdGEsXG5cdFx0XHRhcHBTdGF0ZUtleVxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBvciB1cGRhdGVzIHRoZSBhcHBzdGF0ZS5cblx0ICogUmVwbGFjZXMgdGhlIGhhc2ggd2l0aCB0aGUgbmV3IGFwcHN0YXRlIGJhc2VkIG9uIHJlcGxhY2VIYXNoLlxuXHQgKlxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycyBQYXJhbWV0ZXJzIGZvciBjcmVhdGluZyBuZXcgYXBwc3RhdGVcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMucmVwbGFjZUhhc2ggQm9vbGVhbiB3aGljaCBkZXRlcm1pbmVzIHRvIHJlcGxhY2UgdGhlIGhhc2ggd2l0aCB0aGUgbmV3IGdlbmVyYXRlZCBrZXlcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMuc2tpcE1lcmdlIEJvb2xlYW4gd2hpY2ggZGV0ZXJtaW5lcyB0byBza2lwIHRoZSBrZXkgdXNlciBzaGluZSB0aHJvdWdoXG5cdCAqIEBwYXJhbSBjcmVhdGVBcHBQYXJhbWV0ZXJzLnZpZXdJZCBJZCBvZiB0aGUgdmlldyBmb3Igd2hpY2ggd2UgbmVlZCB0byBjcmVhdGUgdGhlIGFwcCBzdGF0ZS4gVGhpcyBpcyB0byBjcmVhdGUgb3IgdXBkYXRlIHZpZXcgc3BlY2lmaWMgYXBwc3RhdGVcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHJlc29sdmluZyB0aGUgc3RvcmVkIGRhdGEgb3IgYXBwc3RhdGUga2V5XG5cdCAqL1xuXHRhc3luYyBjcmVhdGVBcHBTdGF0ZShjcmVhdGVBcHBQYXJhbWV0ZXJzPzogQ3JlYXRlQXBwUGFyYW1ldGVycyk6IFByb21pc2U8dm9pZCB8IEFwcERhdGFJbmZvPiB7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5vQXBwQ29tcG9uZW50O1xuXHRcdGlmICghYXBwQ29tcG9uZW50LmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuZ2V0Q2FwYWJpbGl0aWVzKCkuQXBwU3RhdGUgfHwgQnVzeUxvY2tlci5pc0xvY2tlZCh0aGlzKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCB7IHNraXBNZXJnZSA9IGZhbHNlLCB2aWV3SWQ6IHN0YXRlSWRlbnRpZmllciA9IFJFUExBQ0VfQ09NUExFVEVfQVBQU1RBVEUgfSA9IGNyZWF0ZUFwcFBhcmFtZXRlcnMgPz8ge30sXG5cdFx0XHRyb290Q29udHJvbGxlciA9IGFwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpLmdldENvbnRyb2xsZXIoKTtcblxuXHRcdGlmICghcm9vdENvbnRyb2xsZXIudmlld1N0YXRlKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYHZpZXdTdGF0ZSBjb250cm9sbGVyIGV4dGVuc2lvbiBub3QgYXZhaWxhYmxlIGZvciBjb250cm9sbGVyOiAke3Jvb3RDb250cm9sbGVyLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpfWApO1xuXHRcdH1cblxuXHRcdC8vIEluIGNhc2UsIG9uIGxvYWQgb2YgRkNMIGFwcCB3ZSBoYXZlIG11bHRpcGxlIHZpZXdzKExSLCBPUCwgc3ViLU9QLi4uKSBhbmQgdXJsIGhhcyBpQXBwU3RhdGUoMSkuXG5cdFx0Ly8gVGhlIExSIHZpZXcgbG9hZHMgd2l0aCBhcHBsaWVkIGlBcHBTdGF0ZSgxKSBhbmQgY2FsbHMgY3JlYXRlQXBwU3RhdGUoZXhhbXBsZTogb25TZWFyY2ggZXZlbnQgaW4gTFIpIGJlZm9yZSBPUCBpcyBsb2FkZWQuXG5cdFx0Ly8gVGhpcyBjcmVhdGVzIGlBcHBTdGF0ZSgyKSBiZWZvcmUgaUFwcFN0YXRlKDEpIGlzIGFwcGxpZWQgdG8gT1AuXG5cdFx0Ly8gU28sIHdlIHRyeSB0byB3YWl0IHRpbGwgdGhlIHJvdXRpbmcgaXMgY29tcGxldGUuXG5cdFx0YXdhaXQgcm9vdENvbnRyb2xsZXIucm91dGluZ0lzQ29tcGxldGUoKTtcblxuXHRcdC8vIEdldCBhcHBTdGF0ZSB0byB1cGRhdGVcblx0XHRsZXQgaW5uZXJBcHBTdGF0ZSA9IChhd2FpdCByb290Q29udHJvbGxlci52aWV3U3RhdGUucmV0cmlldmVWaWV3U3RhdGUoKSkgYXMgSW5uZXJBcHBEYXRhIHwgdW5kZWZpbmVkO1xuXHRcdGlubmVyQXBwU3RhdGUgPSB0aGlzLl9nZXRJbm5lckFwcFN0YXRlRm9yVmlldyhpbm5lckFwcFN0YXRlLCBzdGF0ZUlkZW50aWZpZXIpO1xuXHRcdGlmIChza2lwTWVyZ2UpIHtcblx0XHRcdGlubmVyQXBwU3RhdGUgPSB7IC4uLmlubmVyQXBwU3RhdGUsIC4uLnsgc2tpcE1lcmdlIH0gfTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5fZ2V0QXBwU3RhdGVJbmZvKGlubmVyQXBwU3RhdGUsIGNyZWF0ZUFwcFBhcmFtZXRlcnMpO1xuXHR9XG5cblx0X2NyZWF0ZU5hdmlnYXRpb25QYXJhbWV0ZXJzKG9BcHBEYXRhOiBBcHBEYXRhLCBzTmF2VHlwZTogc3RyaW5nKTogTmF2aWdhdGlvblBhcmFtZXRlciB7XG5cdFx0cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIG9BcHBEYXRhLCB7XG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50RGVmYXVsdHM6IG9BcHBEYXRhLm9EZWZhdWx0ZWRTZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0c2VsZWN0aW9uVmFyaWFudDogb0FwcERhdGEub1NlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRyZXF1aXJlc1N0YW5kYXJkVmFyaWFudDogIW9BcHBEYXRhLmJOYXZTZWxWYXJIYXNEZWZhdWx0c09ubHksXG5cdFx0XHRuYXZpZ2F0aW9uVHlwZTogc05hdlR5cGVcblx0XHR9KTtcblx0fVxuXG5cdF9jaGVja0lmTGFzdFNlZW5SZWNvcmQodmlldz86IFZpZXcpOiBib29sZWFuIHtcblx0XHQvL2dldHRpbmcgdGhlIGludGVybmFsIG1vZGVsIGNvbnRleHQgaW4gb3JkZXIgdG8gZmV0Y2ggdGhlIHRlY2huaWNhbGtleXMgb2YgbGFzdCBzZWVuIHJlY29yZCBhbmQgY2xvc2UgY29sdW1uIGZsYWcgc2V0IGluIHRoZSBpbnRlcm5hbHJvdXRpbmcgZm9yIHJldGFpbmluZyBzZXR0aW5ncyBpbiBwZXJzaXN0ZW5jZSBtb2RlXG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB2aWV3ICYmICh2aWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQpO1xuXHRcdGlmIChpbnRlcm5hbE1vZGVsQ29udGV4dCAmJiBpbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcImZjbENvbHVtbkNsb3NlZFwiKSA9PT0gdHJ1ZSkge1xuXHRcdFx0Y29uc3QgdGVjaG5pY2FsS2V5c09iamVjdCA9IGludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwidGVjaG5pY2FsS2V5c09mTGFzdFNlZW5SZWNvcmRcIik7XG5cdFx0XHRjb25zdCBiaW5kaW5nQ29udGV4dCA9IHZpZXc/LmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dDtcblx0XHRcdGNvbnN0IHBhdGggPSAoYmluZGluZ0NvbnRleHQgJiYgYmluZGluZ0NvbnRleHQuZ2V0UGF0aCgpKSB8fCBcIlwiO1xuXHRcdFx0Y29uc3QgbWV0YU1vZGVsID0gYmluZGluZ0NvbnRleHQ/LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0XHRjb25zdCBtZXRhUGF0aCA9IG1ldGFNb2RlbD8uZ2V0TWV0YVBhdGgocGF0aCk7XG5cdFx0XHRjb25zdCB0ZWNobmljYWxLZXlzID0gbWV0YU1vZGVsPy5nZXRPYmplY3QoYCR7bWV0YVBhdGh9LyRUeXBlLyRLZXlgKTtcblx0XHRcdGZvciAoY29uc3QgZWxlbWVudCBvZiB0ZWNobmljYWxLZXlzKSB7XG5cdFx0XHRcdGNvbnN0IGtleVZhbHVlID0gYmluZGluZ0NvbnRleHQuZ2V0T2JqZWN0KClbZWxlbWVudF07XG5cdFx0XHRcdGlmIChrZXlWYWx1ZSAhPT0gdGVjaG5pY2FsS2V5c09iamVjdFtlbGVtZW50XSkge1xuXHRcdFx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiZmNsQ29sdW1uQ2xvc2VkXCIsIGZhbHNlKTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly90aGUgcmVjb3JkIG9wZW5lZCBpcyBub3QgdGhlIGxhc3Qgc2VlbiBvbmUgOiBubyBuZWVkIHRvIHBlcnNpc3QgdGhlIGNoYW5nZXMsIHJlc2V0IHRvIGRlZmF1bHQgaW5zdGVhZFxuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRfZ2V0QXBwU3RhdGVEYXRhKG9BcHBEYXRhOiBBcHBEYXRhLCB2aWV3SWQ/OiBzdHJpbmcsIG5hdlR5cGU/OiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IGtleSA9IFwiXCIsXG5cdFx0XHRpID0gMDtcblx0XHRjb25zdCBhcHBTdGF0ZURhdGEgPSBuYXZUeXBlID09PSBOYXZUeXBlLmh5YnJpZCA/IG9BcHBEYXRhLmlBcHBTdGF0ZSA6IG9BcHBEYXRhO1xuXG5cdFx0aWYgKGFwcFN0YXRlRGF0YT8uYXBwU3RhdGUpIHtcblx0XHRcdGZvciAoaTsgaSA8IE9iamVjdC5rZXlzKGFwcFN0YXRlRGF0YS5hcHBTdGF0ZSkubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKE9iamVjdC5rZXlzKGFwcFN0YXRlRGF0YS5hcHBTdGF0ZSlbaV0gPT09IHZpZXdJZCkge1xuXHRcdFx0XHRcdGtleSA9IE9iamVjdC5rZXlzKGFwcFN0YXRlRGF0YS5hcHBTdGF0ZSlbaV07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKGFwcFN0YXRlRGF0YT8uYXBwU3RhdGUpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFtPYmplY3Qua2V5cyhhcHBTdGF0ZURhdGEuYXBwU3RhdGUpW2ldXTogYXBwU3RhdGVEYXRhLmFwcFN0YXRlW2tleV0gfHwge31cblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFwcGxpZXMgYW4gYXBwc3RhdGUgYnkgZmV0Y2hpbmcgYXBwZGF0YSBhbmQgcGFzc2luZyBpdCB0byBfYXBwbHlBcHBzdGF0ZVRvUGFnZS5cblx0ICpcblx0ICogQHBhcmFtIHZpZXdJZFxuXHQgKiBAcGFyYW0gdmlld1xuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgZm9yIGFzeW5jIGhhbmRsaW5nXG5cdCAqL1xuXHRhc3luYyBhcHBseUFwcFN0YXRlKHZpZXdJZD86IHN0cmluZywgdmlldz86IFZpZXcpOiBQcm9taXNlPHZvaWQgfCB7fT4ge1xuXHRcdGlmICghdGhpcy5vQXBwQ29tcG9uZW50LmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuZ2V0Q2FwYWJpbGl0aWVzKCkuQXBwU3RhdGUgfHwgQnVzeUxvY2tlci5pc0xvY2tlZCh0aGlzKSkge1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGNoZWNrSWZMYXN0U2VlblJlY29yZCA9IHRoaXMuX2NoZWNrSWZMYXN0U2VlblJlY29yZCh2aWV3KTtcblx0XHRpZiAoY2hlY2tJZkxhc3RTZWVuUmVjb3JkID09PSB0cnVlKSB7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXG5cdFx0QnVzeUxvY2tlci5sb2NrKHRoaXMpO1xuXHRcdC8vIERvbmUgZm9yIGJ1c3kgaW5kaWNhdG9yXG5cdFx0QnVzeUxvY2tlci5sb2NrKHRoaXMub0FwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpKTtcblx0XHRjb25zdCBvTmF2aWdhdGlvblNlcnZpY2UgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0TmF2aWdhdGlvblNlcnZpY2UoKTtcblx0XHQvLyBUT0RPIG9OYXZpZ2F0aW9uU2VydmljZS5wYXJzZU5hdmlnYXRpb24oKSBzaG91bGQgcmV0dXJuIEVTNiBwcm9taXNlIGluc3RlYWQgalF1ZXJ5LnByb21pc2Vcblx0XHRyZXR1cm4gdG9FUzZQcm9taXNlPHVua25vd25bXT4ob05hdmlnYXRpb25TZXJ2aWNlLnBhcnNlTmF2aWdhdGlvbigpKVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChhRXJyb3JEYXRhOiB1bmtub3duW10pIHtcblx0XHRcdFx0aWYgKCFhRXJyb3JEYXRhKSB7XG5cdFx0XHRcdFx0YUVycm9yRGF0YSA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdExvZy53YXJuaW5nKFwiQVBQU1RBVEU6IFBhcnNlIE5hdmlnYXRpb24gZmFpbGVkXCIsIGFFcnJvckRhdGFbMF0gYXMgc3RyaW5nKTtcblx0XHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHQvKiBhcHAgZGF0YSAqL1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0YUVycm9yRGF0YVsxXSxcblx0XHRcdFx0XHRhRXJyb3JEYXRhWzJdXG5cdFx0XHRcdF07XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oYXN5bmMgKGFSZXN1bHRzOiB1bmtub3duW10pID0+IHtcblx0XHRcdFx0TG9nLmluZm8oXCJBUFBTVEFURTogUGFyc2UgTmF2aWdhdGlvbiBkb25lXCIpO1xuXG5cdFx0XHRcdC8vIGFSZXN1bHRzWzFdID0+IG9TdGFydHVwUGFyYW1ldGVycyAobm90IGV2YWx1YXRlZClcblx0XHRcdFx0Y29uc3Qgb0FwcERhdGEgPSAoYVJlc3VsdHNbMF0gfHwge30pIGFzIEFwcERhdGEsXG5cdFx0XHRcdFx0c05hdlR5cGUgPSAoYVJlc3VsdHNbMl0gYXMgc3RyaW5nKSB8fCBOYXZUeXBlLmluaXRpYWwsXG5cdFx0XHRcdFx0b1Jvb3RDb250cm9sbGVyID0gdGhpcy5vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpO1xuXHRcdFx0XHQvLyBhcHBseSB0aGUgYXBwc3RhdGUgZGVwZW5kaW5nIHVwb24gdGhlIHZpZXcgKExSL09QKVxuXHRcdFx0XHRjb25zdCBhcHBTdGF0ZURhdGEgPSB0aGlzLl9nZXRBcHBTdGF0ZURhdGEob0FwcERhdGEsIHZpZXdJZCwgc05hdlR5cGUpO1xuXHRcdFx0XHQvLyBmZXRjaCB0aGUgc2tpcE1lcmdlIGZsYWcgZnJvbSBhcHBTdGF0ZSBmb3Igc2F2ZSBhcyB0aWxlXG5cdFx0XHRcdGNvbnN0IHNraXBNZXJnZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IG9BcHBEYXRhPy5hcHBTdGF0ZT8uW1NLSVBfTUVSR0VfS0VZXTtcblx0XHRcdFx0dGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSA9XG5cdFx0XHRcdFx0c05hdlR5cGUgPT09IE5hdlR5cGUuaUFwcFN0YXRlIHx8IHNOYXZUeXBlID09PSBOYXZUeXBlLmh5YnJpZCA/IHsgLi4udGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSwgLi4uYXBwU3RhdGVEYXRhIH0gOiB7fTtcblx0XHRcdFx0bGV0IHNob3VsZEFwcGx5U3RhdGUgPSB0cnVlO1xuXG5cdFx0XHRcdGlmICghb1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgdmlld1N0YXRlIGV4dGVuc2lvbiByZXF1aXJlZCBmb3IgY29udHJvbGxlciAke29Sb290Q29udHJvbGxlci5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKX1gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAob1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5faXNTdGF0ZUVtcHR5Rm9ySUFwcFN0YXRlTmF2VHlwZShvQXBwRGF0YSwgc05hdlR5cGUpKSB7XG5cdFx0XHRcdFx0aWYgKCFvUm9vdENvbnRyb2xsZXIudmlld1N0YXRlLl9nZXRJbml0aWFsU3RhdGVBcHBsaWVkKCkpIHtcblx0XHRcdFx0XHRcdG9Sb290Q29udHJvbGxlci52aWV3U3RhdGUuX3NldEluaXRpYWxTdGF0ZUFwcGxpZWQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c2hvdWxkQXBwbHlTdGF0ZSA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGFwcGx5Vmlld1N0YXRlID0gYXdhaXQgb1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5hcHBseVZpZXdTdGF0ZShcblx0XHRcdFx0XHR0aGlzLl9tQ3VycmVudEFwcFN0YXRlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRcdFx0XHRcdHRoaXMuX2NyZWF0ZU5hdmlnYXRpb25QYXJhbWV0ZXJzKG9BcHBEYXRhLCBzTmF2VHlwZSksXG5cdFx0XHRcdFx0c2tpcE1lcmdlXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmICghc2hvdWxkQXBwbHlTdGF0ZSkge1xuXHRcdFx0XHRcdHJldHVybiB7fTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gYXBwbHlWaWV3U3RhdGU7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJhcHBTdGF0ZSBjb3VsZCBub3QgYmUgYXBwbGllZFwiLCBvRXJyb3IgYXMgc3RyaW5nKTtcblx0XHRcdFx0dGhyb3cgb0Vycm9yO1xuXHRcdFx0fSlcblx0XHRcdC5maW5hbGx5KCgpID0+IHtcblx0XHRcdFx0QnVzeUxvY2tlci51bmxvY2sodGhpcyk7XG5cdFx0XHRcdEJ1c3lMb2NrZXIudW5sb2NrKHRoaXMub0FwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpKTtcblx0XHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRvIGNoZWNrIGlzIHJvdXRlIGlzIGNoYW5nZWQgYnkgY2hhbmdlIGluIHRoZSBpQVBQU3RhdGUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcm91dGUgaGFzIGNobmFnZWRcblx0ICovXG5cdGNoZWNrSWZSb3V0ZUNoYW5nZWRCeUlBcHAoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuYk5vUm91dGVDaGFuZ2U7XG5cdH1cblxuXHQvKipcblx0ICogUmVzZXQgdGhlIHJvdXRlIGNoYW5nZWQgYnkgaUFQUFN0YXRlLlxuXHQgKi9cblx0cmVzZXRSb3V0ZUNoYW5nZWRCeUlBcHAoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuYk5vUm91dGVDaGFuZ2UpIHtcblx0XHRcdHRoaXMuYk5vUm91dGVDaGFuZ2UgPSBmYWxzZTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBAZ2xvYmFsXG4gKi9cbmV4cG9ydCBkZWZhdWx0IEFwcFN0YXRlSGFuZGxlcjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7RUFnQkEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUNELE9BQU87RUFjL0IsTUFBTUUsY0FBYyxHQUFHLFdBQVc7RUFnQmxDLE1BQU1DLHlCQUF5QixHQUFHLDJCQUEyQjtFQUFDLElBR3hEQyxlQUFlLFdBRHBCQyxjQUFjLENBQUMsNkJBQTZCLENBQUM7SUFBQTtJQVk3Qyx5QkFBWUMsYUFBMkIsRUFBRTtNQUFBO01BQ3hDLDhCQUFPO01BQUMsTUFMREMsaUJBQWlCLEdBQWMsQ0FBQyxDQUFDO01BTXhDLE1BQUtE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
|
|
328
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZUeXBlIiwibGlicmFyeSIsIlNLSVBfTUVSR0VfS0VZIiwiUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURSIsIkFwcFN0YXRlSGFuZGxlciIsImRlZmluZVVJNUNsYXNzIiwib0FwcENvbXBvbmVudCIsIl9tQ3VycmVudEFwcFN0YXRlIiwic0lkIiwiZ2V0SWQiLCJzaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0IiwiYk5vUm91dGVDaGFuZ2UiLCJMb2ciLCJpbmZvIiwiX2dldElubmVyQXBwU3RhdGVGb3JWaWV3IiwiaW5uZXJBcHBTdGF0ZSIsInN0YXRlSWRlbnRpZmllciIsIl9hZGRBcHBTdGF0ZUluSGFzaCIsImFwcFN0YXRlS2V5IiwiYXBwQ29tcG9uZW50IiwibmF2aWdhdGlvblNlcnZpY2UiLCJnZXROYXZpZ2F0aW9uU2VydmljZSIsInJvdXRlclByb3h5IiwiZ2V0Um91dGVyUHJveHkiLCJoYXNoIiwiZ2V0SGFzaCIsImlzU3RpY2t5TW9kZSIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiZ2V0TWV0YU1vZGVsIiwibmV3SGFzaCIsInJlcGxhY2VJbm5lckFwcFN0YXRlS2V5IiwibmF2VG9IYXNoIiwidW5kZWZpbmVkIiwiX2NyZWF0ZUFwcFN0YXRlS2V5IiwiYXBwU3RhdGVEYXRhIiwic3RvcmVJbm5lckFwcFN0YXRlQXN5bmMiLCJfZ2V0QXBwU3RhdGVJbmZvIiwiY3JlYXRlQXBwUGFyYW1ldGVycyIsInJlcGxhY2VIYXNoIiwidmlld0lkIiwiYXBwU3RhdGUiLCJjdXJyZW50U3RhdGVUb1VwZGF0ZSIsImRlZXBFcXVhbCIsIm9FcnJvciIsImVycm9yIiwiZmluZEFwcFN0YXRlSW5IYXNoIiwiY3JlYXRlQXBwU3RhdGUiLCJnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcyIsImdldENhcGFiaWxpdGllcyIsIkFwcFN0YXRlIiwiQnVzeUxvY2tlciIsImlzTG9ja2VkIiwic2tpcE1lcmdlIiwicm9vdENvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbCIsImdldENvbnRyb2xsZXIiLCJ2aWV3U3RhdGUiLCJFcnJvciIsImdldE1ldGFkYXRhIiwiZ2V0TmFtZSIsInJvdXRpbmdJc0NvbXBsZXRlIiwicmV0cmlldmVWaWV3U3RhdGUiLCJfY3JlYXRlTmF2aWdhdGlvblBhcmFtZXRlcnMiLCJvQXBwRGF0YSIsInNOYXZUeXBlIiwiT2JqZWN0IiwiYXNzaWduIiwic2VsZWN0aW9uVmFyaWFudERlZmF1bHRzIiwib0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3Rpb25WYXJpYW50Iiwib1NlbGVjdGlvblZhcmlhbnQiLCJyZXF1aXJlc1N0YW5kYXJkVmFyaWFudCIsImJOYXZTZWxWYXJIYXNEZWZhdWx0c09ubHkiLCJuYXZpZ2F0aW9uVHlwZSIsIl9jaGVja0lmTGFzdFNlZW5SZWNvcmQiLCJ2aWV3IiwiaW50ZXJuYWxNb2RlbENvbnRleHQiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldFByb3BlcnR5IiwidGVjaG5pY2FsS2V5c09iamVjdCIsImJpbmRpbmdDb250ZXh0IiwicGF0aCIsImdldFBhdGgiLCJtZXRhTW9kZWwiLCJnZXRNb2RlbCIsIm1ldGFQYXRoIiwiZ2V0TWV0YVBhdGgiLCJ0ZWNobmljYWxLZXlzIiwiZ2V0T2JqZWN0IiwiZWxlbWVudCIsImtleVZhbHVlIiwic2V0UHJvcGVydHkiLCJfZ2V0QXBwU3RhdGVEYXRhIiwibmF2VHlwZSIsImtleSIsImkiLCJoeWJyaWQiLCJpQXBwU3RhdGUiLCJrZXlzIiwibGVuZ3RoIiwiYXBwbHlBcHBTdGF0ZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiY2hlY2tJZkxhc3RTZWVuUmVjb3JkIiwibG9jayIsIm9OYXZpZ2F0aW9uU2VydmljZSIsInRvRVM2UHJvbWlzZSIsInBhcnNlTmF2aWdhdGlvbiIsImNhdGNoIiwiYUVycm9yRGF0YSIsIndhcm5pbmciLCJ0aGVuIiwiYVJlc3VsdHMiLCJpbml0aWFsIiwib1Jvb3RDb250cm9sbGVyIiwic2hvdWxkQXBwbHlTdGF0ZSIsIl9pc1N0YXRlRW1wdHlGb3JJQXBwU3RhdGVOYXZUeXBlIiwiX2dldEluaXRpYWxTdGF0ZUFwcGxpZWQiLCJfc2V0SW5pdGlhbFN0YXRlQXBwbGllZCIsImFwcGx5Vmlld1N0YXRlIiwiZmluYWxseSIsInVubG9jayIsImNoZWNrSWZSb3V0ZUNoYW5nZWRCeUlBcHAiLCJyZXNldFJvdXRlQ2hhbmdlZEJ5SUFwcCIsIkJhc2VPYmplY3QiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkFwcFN0YXRlSGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBkZWVwRXF1YWwgZnJvbSBcInNhcC9iYXNlL3V0aWwvZGVlcEVxdWFsXCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBOYXZpZ2F0aW9uUGFyYW1ldGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1ZpZXdTdGF0ZVwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHRvRVM2UHJvbWlzZSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Ub0VTNlByb21pc2VcIjtcbmltcG9ydCB0eXBlIHsgSW5uZXJBcHBEYXRhIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL05hdmlnYXRpb25IYW5kbGVyXCI7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdGlvblZhcmlhbnQgfSBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IGxpYnJhcnkgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL2xpYnJhcnlcIjtcbmltcG9ydCBCYXNlT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9PYmplY3RcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IEJ1c3lMb2NrZXIgZnJvbSBcIi4vY29udHJvbGxlcmV4dGVuc2lvbnMvQnVzeUxvY2tlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCIuL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcblxuY29uc3QgTmF2VHlwZSA9IGxpYnJhcnkuTmF2VHlwZTtcbnR5cGUgQXBwU3RhdGUgPSB7XG5cdHNraXBNZXJnZT86IGJvb2xlYW47XG5cdFtrZXk6IHN0cmluZ106IHVua25vd247XG59O1xuZXhwb3J0IHR5cGUgQXBwRGF0YSA9IHtcblx0b0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQ7XG5cdG9TZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50O1xuXHRiTmF2U2VsVmFySGFzRGVmYXVsdHNPbmx5OiBib29sZWFuO1xuXHRhcHBTdGF0ZTogQXBwU3RhdGU7XG5cdGlBcHBTdGF0ZT86IHtcblx0XHRhcHBTdGF0ZTogQXBwU3RhdGU7XG5cdH07XG59O1xuY29uc3QgU0tJUF9NRVJHRV9LRVkgPSBcInNraXBNZXJnZVwiO1xuZXhwb3J0IHR5cGUgSUFwcFN0YXRlID0ge1xuXHRhcHBTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59O1xuXG5leHBvcnQgdHlwZSBBcHBEYXRhSW5mbyA9IHtcblx0YXBwU3RhdGVEYXRhOiB7IGFwcFN0YXRlOiBvYmplY3QgfCB1bmRlZmluZWQgfTtcblx0YXBwU3RhdGVLZXk6IHN0cmluZyB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVBcHBQYXJhbWV0ZXJzID0ge1xuXHRyZXBsYWNlSGFzaD86IGJvb2xlYW47XG5cdHNraXBNZXJnZT86IGJvb2xlYW47XG5cdHZpZXdJZD86IHN0cmluZztcbn07XG5cbmNvbnN0IFJFUExBQ0VfQ09NUExFVEVfQVBQU1RBVEUgPSBcIlJFUExBQ0VfQ09NUExFVEVfQVBQU1RBVEVcIjtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuQXBwU3RhdGVIYW5kbGVyXCIpXG5jbGFzcyBBcHBTdGF0ZUhhbmRsZXIgZXh0ZW5kcyBCYXNlT2JqZWN0IHtcblx0cHVibGljIHNJZDogc3RyaW5nO1xuXG5cdHB1YmxpYyBvQXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQ7XG5cblx0cHVibGljIGJOb1JvdXRlQ2hhbmdlOiBib29sZWFuO1xuXG5cdHByaXZhdGUgX21DdXJyZW50QXBwU3RhdGU/OiBBcHBTdGF0ZSA9IHt9O1xuXG5cdHNpbXVsdGFuZW91c0NyZWF0ZVJlcXVlc3Q6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG5cblx0Y29uc3RydWN0b3Iob0FwcENvbXBvbmVudDogQXBwQ29tcG9uZW50KSB7XG5cdFx0c3VwZXIoKTtcblx0XHR0aGlzLm9BcHBDb21wb25lbnQgPSBvQXBwQ29tcG9uZW50O1xuXHRcdHRoaXMuc0lkID0gYCR7b0FwcENvbXBvbmVudC5nZXRJZCgpfS9BcHBTdGF0ZUhhbmRsZXJgO1xuXHRcdHRoaXMuc2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdCA9IHt9O1xuXHRcdHRoaXMuYk5vUm91dGVDaGFuZ2UgPSBmYWxzZTtcblx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFIDogQXBwc3RhdGUgaGFuZGxlciBpbml0aWFsaXplZFwiKTtcblx0fVxuXG5cdGdldElkKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuc0lkO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB2aWV3IHNwZWNpZmljIGFwcHN0YXRlLlxuXHQgKlxuXHQgKiBAcGFyYW0gaW5uZXJBcHBTdGF0ZSBPdmVyYWxsIGFwcHN0YXRlXG5cdCAqIEBwYXJhbSBzdGF0ZUlkZW50aWZpZXIgU3RhdGUgaWRlbnRpZmllci4gSWQgb2YgdGhlIGxvY2FsIHZpZXdcblx0ICogQHJldHVybnMgSW5uZXIgYXBwc3RhdGVcblx0ICovXG5cdF9nZXRJbm5lckFwcFN0YXRlRm9yVmlldyhpbm5lckFwcFN0YXRlOiBJbm5lckFwcERhdGEgfCB1bmRlZmluZWQsIHN0YXRlSWRlbnRpZmllcjogc3RyaW5nKTogSW5uZXJBcHBEYXRhIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoc3RhdGVJZGVudGlmaWVyID09PSBSRVBMQUNFX0NPTVBMRVRFX0FQUFNUQVRFIHx8ICFpbm5lckFwcFN0YXRlKSB7XG5cdFx0XHQvLyBvdmVyYWxsIGFwcCBzdGF0ZSBuZWVkcyB0byBiZSBjb25zaWRlcmVkLlxuXHRcdFx0cmV0dXJuIGlubmVyQXBwU3RhdGU7XG5cdFx0fVxuXG5cdFx0Ly8gd2UgdGFrZSB0aGUgc3Vic2V0IG9mIHRoZSBhcHAgc3RhdGUgd3J0IHRvIHRoZSBsb2NhbCB2aWV3IGlkLlxuXHRcdHJldHVybiB7XG5cdFx0XHRbc3RhdGVJZGVudGlmaWVyXTogaW5uZXJBcHBTdGF0ZVtzdGF0ZUlkZW50aWZpZXIgYXMga2V5b2YgdHlwZW9mIGlubmVyQXBwU3RhdGVdIHx8IHt9XG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgYXBwc3RhdGUgaW4gaGFzaC5cblx0ICpcblx0ICogQHBhcmFtIGFwcFN0YXRlS2V5IEFwcHN0YXRlIGtleVxuXHQgKiBAcGFyYW0gc3RhdGVJZGVudGlmaWVyIFN0YXRlIGlkZW50aWZpZXIuIElkIG9mIHRoZSBsb2NhbCB2aWV3XG5cdCAqL1xuXHRfYWRkQXBwU3RhdGVJbkhhc2goYXBwU3RhdGVLZXk6IHN0cmluZywgc3RhdGVJZGVudGlmaWVyOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLm9BcHBDb21wb25lbnQsXG5cdFx0XHRuYXZpZ2F0aW9uU2VydmljZSA9IGFwcENvbXBvbmVudC5nZXROYXZpZ2F0aW9uU2VydmljZSgpLFxuXHRcdFx0cm91dGVyUHJveHkgPSBhcHBDb21wb25lbnQuZ2V0Um91dGVyUHJveHkoKSxcblx0XHRcdGhhc2ggPSByb3V0ZXJQcm94eS5nZXRIYXNoKCksXG5cdFx0XHRpc1N0aWNreU1vZGUgPSBNb2RlbEhlbHBlci5pc1N0aWNreVNlc3Npb25TdXBwb3J0ZWQoYXBwQ29tcG9uZW50LmdldE1ldGFNb2RlbCgpKSxcblx0XHRcdG5ld0hhc2ggPSBuYXZpZ2F0aW9uU2VydmljZS5yZXBsYWNlSW5uZXJBcHBTdGF0ZUtleShyb3V0ZXJQcm94eS5nZXRIYXNoKCksIGFwcFN0YXRlS2V5KTtcblxuXHRcdGlmIChuZXdIYXNoICYmIHRoaXMuc2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdFtzdGF0ZUlkZW50aWZpZXJdID09PSAwICYmIG5ld0hhc2ggIT09IGhhc2gpIHtcblx0XHRcdHJvdXRlclByb3h5Lm5hdlRvSGFzaChuZXdIYXNoLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAhaXNTdGlja3lNb2RlKTtcblx0XHRcdHRoaXMuYk5vUm91dGVDaGFuZ2UgPSB0cnVlO1xuXHRcdH1cblx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFOiBuYXZUb0hhc2hcIik7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlIEFwcHN0YXRlIEtleS5cblx0ICpcblx0ICogQHBhcmFtIGFwcFN0YXRlRGF0YSBBcHBzdGF0ZVxuXHQgKiBAcGFyYW0gc3RhdGVJZGVudGlmaWVyIFN0YXRlIGlkZW50aWZpZXIuIElkIG9mIHRoZSBsb2NhbCB2aWV3XG5cdCAqIEByZXR1cm5zIEFwcHN0YXRlIEtleVxuXHQgKi9cblx0YXN5bmMgX2NyZWF0ZUFwcFN0YXRlS2V5KGFwcFN0YXRlRGF0YTogSW5uZXJBcHBEYXRhLCBzdGF0ZUlkZW50aWZpZXI6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5vQXBwQ29tcG9uZW50LFxuXHRcdFx0bmF2aWdhdGlvblNlcnZpY2UgPSBhcHBDb21wb25lbnQuZ2V0TmF2aWdhdGlvblNlcnZpY2UoKTtcblxuXHRcdGlmICh0aGlzLnNpbXVsdGFuZW91c0NyZWF0ZVJlcXVlc3Rbc3RhdGVJZGVudGlmaWVyXSkge1xuXHRcdFx0Ly8gYW55IG90aGVyIHZhbHVlXG5cdFx0XHR0aGlzLnNpbXVsdGFuZW91c0NyZWF0ZVJlcXVlc3Rbc3RhdGVJZGVudGlmaWVyXSsrO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyAwIG9yIHVuZGVmaW5lZFxuXHRcdFx0dGhpcy5zaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0W3N0YXRlSWRlbnRpZmllcl0gPSAxO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFwcFN0YXRlS2V5ID0gYXdhaXQgbmF2aWdhdGlvblNlcnZpY2Uuc3RvcmVJbm5lckFwcFN0YXRlQXN5bmMoYXBwU3RhdGVEYXRhLCB0cnVlLCB0cnVlKTtcblxuXHRcdHRoaXMuc2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdFtzdGF0ZUlkZW50aWZpZXJdLS07XG5cblx0XHRMb2cuaW5mbyhcIkFQUFNUQVRFOiBBcHBzdGF0ZSBzdG9yZWRcIik7XG5cdFx0cmV0dXJuIGFwcFN0YXRlS2V5O1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYXBwc3RhdGUgaW5mby5cblx0ICpcblx0ICogQHBhcmFtIGlubmVyQXBwU3RhdGVcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMgUGFyYW1ldGVycyBmb3IgY3JlYXRpbmcgbmV3IGFwcHN0YXRlXG5cdCAqIEBwYXJhbSBjcmVhdGVBcHBQYXJhbWV0ZXJzLnJlcGxhY2VIYXNoIEJvb2xlYW4gd2hpY2ggZGV0ZXJtaW5lcyB0byByZXBsYWNlIHRoZSBoYXNoIHdpdGggdGhlIG5ldyBnZW5lcmF0ZWQga2V5XG5cdCAqIEBwYXJhbSBjcmVhdGVBcHBQYXJhbWV0ZXJzLnZpZXdJZCBJZCBvZiB0aGUgdmlldyBmb3Igd2hpY2ggd2UgbmVlZCB0byBjcmVhdGUgdGhlIGFwcCBzdGF0ZS4gVGhpcyBpcyB0byBjcmVhdGUgb3IgdXBkYXRlIHZpZXcgc3BlY2lmaWMgYXBwc3RhdGUuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSByZXNvbHZpbmcgdGhlIHN0b3JlZCBkYXRhIG9yIGFwcHN0YXRlIGtleVxuXHQgKi9cblx0YXN5bmMgX2dldEFwcFN0YXRlSW5mbyhpbm5lckFwcFN0YXRlOiBJbm5lckFwcERhdGEgfCB1bmRlZmluZWQsIGNyZWF0ZUFwcFBhcmFtZXRlcnM/OiBDcmVhdGVBcHBQYXJhbWV0ZXJzKTogUHJvbWlzZTxBcHBEYXRhSW5mbz4ge1xuXHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IHRoaXMub0FwcENvbXBvbmVudDtcblx0XHRjb25zdCB7IHJlcGxhY2VIYXNoID0gdHJ1ZSwgdmlld0lkOiBzdGF0ZUlkZW50aWZpZXIgPSBSRVBMQUNFX0NPTVBMRVRFX0FQUFNUQVRFIH0gPSBjcmVhdGVBcHBQYXJhbWV0ZXJzID8/IHt9O1xuXG5cdFx0bGV0IGFwcFN0YXRlS2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblx0XHRsZXQgYXBwU3RhdGVEYXRhID0geyBhcHBTdGF0ZTogdGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSB9O1xuXG5cdFx0Y29uc3QgY3VycmVudFN0YXRlVG9VcGRhdGUgPSB0aGlzLl9nZXRJbm5lckFwcFN0YXRlRm9yVmlldyh0aGlzLl9tQ3VycmVudEFwcFN0YXRlLCBzdGF0ZUlkZW50aWZpZXIpO1xuXHRcdGlmIChpbm5lckFwcFN0YXRlICYmICFkZWVwRXF1YWwoY3VycmVudFN0YXRlVG9VcGRhdGUsIGlubmVyQXBwU3RhdGUpKSB7XG5cdFx0XHQvL1xuXHRcdFx0dGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSA9IHsgLi4udGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSwgLi4uKGlubmVyQXBwU3RhdGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIH07XG5cdFx0XHRhcHBTdGF0ZURhdGEgPSB7IGFwcFN0YXRlOiB0aGlzLl9tQ3VycmVudEFwcFN0YXRlIH07XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRhcHBTdGF0ZUtleSA9IGF3YWl0IHRoaXMuX2NyZWF0ZUFwcFN0YXRlS2V5KGFwcFN0YXRlRGF0YSwgc3RhdGVJZGVudGlmaWVyKTtcblx0XHRcdFx0aWYgKHJlcGxhY2VIYXNoID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0dGhpcy5fYWRkQXBwU3RhdGVJbkhhc2goYXBwU3RhdGVLZXksIHN0YXRlSWRlbnRpZmllcik7XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKG9FcnJvcjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3Iob0Vycm9yIGFzIHN0cmluZyk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHJvdXRlclByb3h5ID0gYXBwQ29tcG9uZW50LmdldFJvdXRlclByb3h5KCksXG5cdFx0XHRcdGhhc2ggPSByb3V0ZXJQcm94eS5nZXRIYXNoKCk7XG5cdFx0XHRhcHBTdGF0ZUtleSA9IHJvdXRlclByb3h5LmZpbmRBcHBTdGF0ZUluSGFzaChoYXNoKSBhcyBzdHJpbmc7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRhcHBTdGF0ZURhdGEsXG5cdFx0XHRhcHBTdGF0ZUtleVxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBvciB1cGRhdGVzIHRoZSBhcHBzdGF0ZS5cblx0ICogUmVwbGFjZXMgdGhlIGhhc2ggd2l0aCB0aGUgbmV3IGFwcHN0YXRlIGJhc2VkIG9uIHJlcGxhY2VIYXNoLlxuXHQgKlxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycyBQYXJhbWV0ZXJzIGZvciBjcmVhdGluZyBuZXcgYXBwc3RhdGVcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMucmVwbGFjZUhhc2ggQm9vbGVhbiB3aGljaCBkZXRlcm1pbmVzIHRvIHJlcGxhY2UgdGhlIGhhc2ggd2l0aCB0aGUgbmV3IGdlbmVyYXRlZCBrZXlcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMuc2tpcE1lcmdlIEJvb2xlYW4gd2hpY2ggZGV0ZXJtaW5lcyB0byBza2lwIHRoZSBrZXkgdXNlciBzaGluZSB0aHJvdWdoXG5cdCAqIEBwYXJhbSBjcmVhdGVBcHBQYXJhbWV0ZXJzLnZpZXdJZCBJZCBvZiB0aGUgdmlldyBmb3Igd2hpY2ggd2UgbmVlZCB0byBjcmVhdGUgdGhlIGFwcCBzdGF0ZS4gVGhpcyBpcyB0byBjcmVhdGUgb3IgdXBkYXRlIHZpZXcgc3BlY2lmaWMgYXBwc3RhdGVcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHJlc29sdmluZyB0aGUgc3RvcmVkIGRhdGEgb3IgYXBwc3RhdGUga2V5XG5cdCAqL1xuXHRhc3luYyBjcmVhdGVBcHBTdGF0ZShjcmVhdGVBcHBQYXJhbWV0ZXJzPzogQ3JlYXRlQXBwUGFyYW1ldGVycyk6IFByb21pc2U8dm9pZCB8IEFwcERhdGFJbmZvPiB7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5vQXBwQ29tcG9uZW50O1xuXHRcdGlmICghYXBwQ29tcG9uZW50LmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuZ2V0Q2FwYWJpbGl0aWVzKCkuQXBwU3RhdGUgfHwgQnVzeUxvY2tlci5pc0xvY2tlZCh0aGlzKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCB7IHNraXBNZXJnZSA9IGZhbHNlLCB2aWV3SWQ6IHN0YXRlSWRlbnRpZmllciA9IFJFUExBQ0VfQ09NUExFVEVfQVBQU1RBVEUgfSA9IGNyZWF0ZUFwcFBhcmFtZXRlcnMgPz8ge30sXG5cdFx0XHRyb290Q29udHJvbGxlciA9IGFwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpLmdldENvbnRyb2xsZXIoKTtcblxuXHRcdGlmICghcm9vdENvbnRyb2xsZXIudmlld1N0YXRlKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYHZpZXdTdGF0ZSBjb250cm9sbGVyIGV4dGVuc2lvbiBub3QgYXZhaWxhYmxlIGZvciBjb250cm9sbGVyOiAke3Jvb3RDb250cm9sbGVyLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpfWApO1xuXHRcdH1cblxuXHRcdC8vIEluIGNhc2UsIG9uIGxvYWQgb2YgRkNMIGFwcCB3ZSBoYXZlIG11bHRpcGxlIHZpZXdzKExSLCBPUCwgc3ViLU9QLi4uKSBhbmQgdXJsIGhhcyBpQXBwU3RhdGUoMSkuXG5cdFx0Ly8gVGhlIExSIHZpZXcgbG9hZHMgd2l0aCBhcHBsaWVkIGlBcHBTdGF0ZSgxKSBhbmQgY2FsbHMgY3JlYXRlQXBwU3RhdGUoZXhhbXBsZTogb25TZWFyY2ggZXZlbnQgaW4gTFIpIGJlZm9yZSBPUCBpcyBsb2FkZWQuXG5cdFx0Ly8gVGhpcyBjcmVhdGVzIGlBcHBTdGF0ZSgyKSBiZWZvcmUgaUFwcFN0YXRlKDEpIGlzIGFwcGxpZWQgdG8gT1AuXG5cdFx0Ly8gU28sIHdlIHRyeSB0byB3YWl0IHRpbGwgdGhlIHJvdXRpbmcgaXMgY29tcGxldGUuXG5cdFx0YXdhaXQgcm9vdENvbnRyb2xsZXIucm91dGluZ0lzQ29tcGxldGUoKTtcblxuXHRcdC8vIEdldCBhcHBTdGF0ZSB0byB1cGRhdGVcblx0XHRsZXQgaW5uZXJBcHBTdGF0ZSA9IChhd2FpdCByb290Q29udHJvbGxlci52aWV3U3RhdGUucmV0cmlldmVWaWV3U3RhdGUoKSkgYXMgSW5uZXJBcHBEYXRhIHwgdW5kZWZpbmVkO1xuXHRcdGlubmVyQXBwU3RhdGUgPSB0aGlzLl9nZXRJbm5lckFwcFN0YXRlRm9yVmlldyhpbm5lckFwcFN0YXRlLCBzdGF0ZUlkZW50aWZpZXIpO1xuXHRcdGlmIChza2lwTWVyZ2UpIHtcblx0XHRcdGlubmVyQXBwU3RhdGUgPSB7IC4uLmlubmVyQXBwU3RhdGUsIC4uLnsgc2tpcE1lcmdlIH0gfTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5fZ2V0QXBwU3RhdGVJbmZvKGlubmVyQXBwU3RhdGUsIGNyZWF0ZUFwcFBhcmFtZXRlcnMpO1xuXHR9XG5cblx0X2NyZWF0ZU5hdmlnYXRpb25QYXJhbWV0ZXJzKG9BcHBEYXRhOiBBcHBEYXRhLCBzTmF2VHlwZTogc3RyaW5nKTogTmF2aWdhdGlvblBhcmFtZXRlciB7XG5cdFx0cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIG9BcHBEYXRhLCB7XG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50RGVmYXVsdHM6IG9BcHBEYXRhLm9EZWZhdWx0ZWRTZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0c2VsZWN0aW9uVmFyaWFudDogb0FwcERhdGEub1NlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRyZXF1aXJlc1N0YW5kYXJkVmFyaWFudDogIW9BcHBEYXRhLmJOYXZTZWxWYXJIYXNEZWZhdWx0c09ubHksXG5cdFx0XHRuYXZpZ2F0aW9uVHlwZTogc05hdlR5cGVcblx0XHR9KTtcblx0fVxuXG5cdF9jaGVja0lmTGFzdFNlZW5SZWNvcmQodmlldz86IFZpZXcpOiBib29sZWFuIHtcblx0XHQvL2dldHRpbmcgdGhlIGludGVybmFsIG1vZGVsIGNvbnRleHQgaW4gb3JkZXIgdG8gZmV0Y2ggdGhlIHRlY2huaWNhbGtleXMgb2YgbGFzdCBzZWVuIHJlY29yZCBhbmQgY2xvc2UgY29sdW1uIGZsYWcgc2V0IGluIHRoZSBpbnRlcm5hbHJvdXRpbmcgZm9yIHJldGFpbmluZyBzZXR0aW5ncyBpbiBwZXJzaXN0ZW5jZSBtb2RlXG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB2aWV3ICYmICh2aWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQpO1xuXHRcdGlmIChpbnRlcm5hbE1vZGVsQ29udGV4dCAmJiBpbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcImZjbENvbHVtbkNsb3NlZFwiKSA9PT0gdHJ1ZSkge1xuXHRcdFx0Y29uc3QgdGVjaG5pY2FsS2V5c09iamVjdCA9IGludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwidGVjaG5pY2FsS2V5c09mTGFzdFNlZW5SZWNvcmRcIik7XG5cdFx0XHRjb25zdCBiaW5kaW5nQ29udGV4dCA9IHZpZXc/LmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dDtcblx0XHRcdGNvbnN0IHBhdGggPSAoYmluZGluZ0NvbnRleHQgJiYgYmluZGluZ0NvbnRleHQuZ2V0UGF0aCgpKSB8fCBcIlwiO1xuXHRcdFx0Y29uc3QgbWV0YU1vZGVsID0gYmluZGluZ0NvbnRleHQ/LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0XHRjb25zdCBtZXRhUGF0aCA9IG1ldGFNb2RlbD8uZ2V0TWV0YVBhdGgocGF0aCk7XG5cdFx0XHRjb25zdCB0ZWNobmljYWxLZXlzID0gbWV0YU1vZGVsPy5nZXRPYmplY3QoYCR7bWV0YVBhdGh9LyRUeXBlLyRLZXlgKTtcblx0XHRcdGZvciAoY29uc3QgZWxlbWVudCBvZiB0ZWNobmljYWxLZXlzKSB7XG5cdFx0XHRcdGNvbnN0IGtleVZhbHVlID0gYmluZGluZ0NvbnRleHQuZ2V0T2JqZWN0KClbZWxlbWVudF07XG5cdFx0XHRcdGlmIChrZXlWYWx1ZSAhPT0gdGVjaG5pY2FsS2V5c09iamVjdFtlbGVtZW50XSkge1xuXHRcdFx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiZmNsQ29sdW1uQ2xvc2VkXCIsIGZhbHNlKTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly90aGUgcmVjb3JkIG9wZW5lZCBpcyBub3QgdGhlIGxhc3Qgc2VlbiBvbmUgOiBubyBuZWVkIHRvIHBlcnNpc3QgdGhlIGNoYW5nZXMsIHJlc2V0IHRvIGRlZmF1bHQgaW5zdGVhZFxuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRfZ2V0QXBwU3RhdGVEYXRhKG9BcHBEYXRhOiBBcHBEYXRhLCB2aWV3SWQ/OiBzdHJpbmcsIG5hdlR5cGU/OiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IGtleSA9IFwiXCIsXG5cdFx0XHRpID0gMDtcblx0XHRjb25zdCBhcHBTdGF0ZURhdGEgPSBuYXZUeXBlID09PSBOYXZUeXBlLmh5YnJpZCA/IG9BcHBEYXRhLmlBcHBTdGF0ZSA6IG9BcHBEYXRhO1xuXG5cdFx0aWYgKGFwcFN0YXRlRGF0YT8uYXBwU3RhdGUpIHtcblx0XHRcdGZvciAoaTsgaSA8IE9iamVjdC5rZXlzKGFwcFN0YXRlRGF0YS5hcHBTdGF0ZSkubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKE9iamVjdC5rZXlzKGFwcFN0YXRlRGF0YS5hcHBTdGF0ZSlbaV0gPT09IHZpZXdJZCkge1xuXHRcdFx0XHRcdGtleSA9IE9iamVjdC5rZXlzKGFwcFN0YXRlRGF0YS5hcHBTdGF0ZSlbaV07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKGFwcFN0YXRlRGF0YT8uYXBwU3RhdGUpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFtPYmplY3Qua2V5cyhhcHBTdGF0ZURhdGEuYXBwU3RhdGUpW2ldXTogYXBwU3RhdGVEYXRhLmFwcFN0YXRlW2tleV0gfHwge31cblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEFwcGxpZXMgYW4gYXBwc3RhdGUgYnkgZmV0Y2hpbmcgYXBwZGF0YSBhbmQgcGFzc2luZyBpdCB0byBfYXBwbHlBcHBzdGF0ZVRvUGFnZS5cblx0ICpcblx0ICogQHBhcmFtIHZpZXdJZFxuXHQgKiBAcGFyYW0gdmlld1xuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgZm9yIGFzeW5jIGhhbmRsaW5nXG5cdCAqL1xuXHRhc3luYyBhcHBseUFwcFN0YXRlKHZpZXdJZD86IHN0cmluZywgdmlldz86IFZpZXcpOiBQcm9taXNlPHZvaWQgfCB7fT4ge1xuXHRcdGlmICghdGhpcy5vQXBwQ29tcG9uZW50LmdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzKCkuZ2V0Q2FwYWJpbGl0aWVzKCkuQXBwU3RhdGUgfHwgQnVzeUxvY2tlci5pc0xvY2tlZCh0aGlzKSkge1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGNoZWNrSWZMYXN0U2VlblJlY29yZCA9IHRoaXMuX2NoZWNrSWZMYXN0U2VlblJlY29yZCh2aWV3KTtcblx0XHRpZiAoY2hlY2tJZkxhc3RTZWVuUmVjb3JkID09PSB0cnVlKSB7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXG5cdFx0QnVzeUxvY2tlci5sb2NrKHRoaXMpO1xuXHRcdC8vIERvbmUgZm9yIGJ1c3kgaW5kaWNhdG9yXG5cdFx0QnVzeUxvY2tlci5sb2NrKHRoaXMub0FwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpKTtcblx0XHRjb25zdCBvTmF2aWdhdGlvblNlcnZpY2UgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0TmF2aWdhdGlvblNlcnZpY2UoKTtcblx0XHQvLyBUT0RPIG9OYXZpZ2F0aW9uU2VydmljZS5wYXJzZU5hdmlnYXRpb24oKSBzaG91bGQgcmV0dXJuIEVTNiBwcm9taXNlIGluc3RlYWQgalF1ZXJ5LnByb21pc2Vcblx0XHRyZXR1cm4gdG9FUzZQcm9taXNlPHVua25vd25bXT4ob05hdmlnYXRpb25TZXJ2aWNlLnBhcnNlTmF2aWdhdGlvbigpKVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChhRXJyb3JEYXRhOiB1bmtub3duW10pIHtcblx0XHRcdFx0aWYgKCFhRXJyb3JEYXRhKSB7XG5cdFx0XHRcdFx0YUVycm9yRGF0YSA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdExvZy53YXJuaW5nKFwiQVBQU1RBVEU6IFBhcnNlIE5hdmlnYXRpb24gZmFpbGVkXCIsIGFFcnJvckRhdGFbMF0gYXMgc3RyaW5nKTtcblx0XHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHQvKiBhcHAgZGF0YSAqL1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0YUVycm9yRGF0YVsxXSxcblx0XHRcdFx0XHRhRXJyb3JEYXRhWzJdXG5cdFx0XHRcdF07XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oYXN5bmMgKGFSZXN1bHRzOiB1bmtub3duW10pID0+IHtcblx0XHRcdFx0TG9nLmluZm8oXCJBUFBTVEFURTogUGFyc2UgTmF2aWdhdGlvbiBkb25lXCIpO1xuXG5cdFx0XHRcdC8vIGFSZXN1bHRzWzFdID0+IG9TdGFydHVwUGFyYW1ldGVycyAobm90IGV2YWx1YXRlZClcblx0XHRcdFx0Y29uc3Qgb0FwcERhdGEgPSAoYVJlc3VsdHNbMF0gfHwge30pIGFzIEFwcERhdGEsXG5cdFx0XHRcdFx0c05hdlR5cGUgPSAoYVJlc3VsdHNbMl0gYXMgc3RyaW5nKSB8fCBOYXZUeXBlLmluaXRpYWwsXG5cdFx0XHRcdFx0b1Jvb3RDb250cm9sbGVyID0gdGhpcy5vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpO1xuXHRcdFx0XHQvLyBhcHBseSB0aGUgYXBwc3RhdGUgZGVwZW5kaW5nIHVwb24gdGhlIHZpZXcgKExSL09QKVxuXHRcdFx0XHRjb25zdCBhcHBTdGF0ZURhdGEgPSB0aGlzLl9nZXRBcHBTdGF0ZURhdGEob0FwcERhdGEsIHZpZXdJZCwgc05hdlR5cGUpO1xuXHRcdFx0XHQvLyBmZXRjaCB0aGUgc2tpcE1lcmdlIGZsYWcgZnJvbSBhcHBTdGF0ZSBmb3Igc2F2ZSBhcyB0aWxlXG5cdFx0XHRcdGNvbnN0IHNraXBNZXJnZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IG9BcHBEYXRhPy5hcHBTdGF0ZT8uW1NLSVBfTUVSR0VfS0VZXTtcblx0XHRcdFx0dGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSA9XG5cdFx0XHRcdFx0c05hdlR5cGUgPT09IE5hdlR5cGUuaUFwcFN0YXRlIHx8IHNOYXZUeXBlID09PSBOYXZUeXBlLmh5YnJpZCA/IHsgLi4udGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSwgLi4uYXBwU3RhdGVEYXRhIH0gOiB7fTtcblx0XHRcdFx0bGV0IHNob3VsZEFwcGx5U3RhdGUgPSB0cnVlO1xuXG5cdFx0XHRcdGlmICghb1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgdmlld1N0YXRlIGV4dGVuc2lvbiByZXF1aXJlZCBmb3IgY29udHJvbGxlciAke29Sb290Q29udHJvbGxlci5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKX1gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAob1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5faXNTdGF0ZUVtcHR5Rm9ySUFwcFN0YXRlTmF2VHlwZShvQXBwRGF0YSwgc05hdlR5cGUpKSB7XG5cdFx0XHRcdFx0aWYgKCFvUm9vdENvbnRyb2xsZXIudmlld1N0YXRlLl9nZXRJbml0aWFsU3RhdGVBcHBsaWVkKCkpIHtcblx0XHRcdFx0XHRcdG9Sb290Q29udHJvbGxlci52aWV3U3RhdGUuX3NldEluaXRpYWxTdGF0ZUFwcGxpZWQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c2hvdWxkQXBwbHlTdGF0ZSA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGFwcGx5Vmlld1N0YXRlID0gYXdhaXQgb1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5hcHBseVZpZXdTdGF0ZShcblx0XHRcdFx0XHR0aGlzLl9tQ3VycmVudEFwcFN0YXRlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRcdFx0XHRcdHRoaXMuX2NyZWF0ZU5hdmlnYXRpb25QYXJhbWV0ZXJzKG9BcHBEYXRhLCBzTmF2VHlwZSksXG5cdFx0XHRcdFx0c2tpcE1lcmdlXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmICghc2hvdWxkQXBwbHlTdGF0ZSkge1xuXHRcdFx0XHRcdHJldHVybiB7fTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gYXBwbHlWaWV3U3RhdGU7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJhcHBTdGF0ZSBjb3VsZCBub3QgYmUgYXBwbGllZFwiLCBvRXJyb3IgYXMgc3RyaW5nKTtcblx0XHRcdFx0dGhyb3cgb0Vycm9yO1xuXHRcdFx0fSlcblx0XHRcdC5maW5hbGx5KCgpID0+IHtcblx0XHRcdFx0QnVzeUxvY2tlci51bmxvY2sodGhpcyk7XG5cdFx0XHRcdEJ1c3lMb2NrZXIudW5sb2NrKHRoaXMub0FwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpKTtcblx0XHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRvIGNoZWNrIGlzIHJvdXRlIGlzIGNoYW5nZWQgYnkgY2hhbmdlIGluIHRoZSBpQVBQU3RhdGUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcm91dGUgaGFzIGNobmFnZWRcblx0ICovXG5cdGNoZWNrSWZSb3V0ZUNoYW5nZWRCeUlBcHAoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuYk5vUm91dGVDaGFuZ2U7XG5cdH1cblxuXHQvKipcblx0ICogUmVzZXQgdGhlIHJvdXRlIGNoYW5nZWQgYnkgaUFQUFN0YXRlLlxuXHQgKi9cblx0cmVzZXRSb3V0ZUNoYW5nZWRCeUlBcHAoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuYk5vUm91dGVDaGFuZ2UpIHtcblx0XHRcdHRoaXMuYk5vUm91dGVDaGFuZ2UgPSBmYWxzZTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBAZ2xvYmFsXG4gKi9cbmV4cG9ydCBkZWZhdWx0IEFwcFN0YXRlSGFuZGxlcjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7RUFnQkEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUNELE9BQU87RUFjL0IsTUFBTUUsY0FBYyxHQUFHLFdBQVc7RUFnQmxDLE1BQU1DLHlCQUF5QixHQUFHLDJCQUEyQjtFQUFDLElBR3hEQyxlQUFlLFdBRHBCQyxjQUFjLENBQUMsNkJBQTZCLENBQUM7SUFBQTtJQVk3Qyx5QkFBWUMsYUFBMkIsRUFBRTtNQUFBO01BQ3hDLDhCQUFPO01BQUMsTUFMREMsaUJBQWlCLEdBQWMsQ0FBQyxDQUFDO01BTXhDLE1BQUtELGFBQWEsR0FBR0EsYUFBYTtN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
|
|
@@ -102,7 +102,7 @@ class AppStateHandler extends BaseObject {
|
|
|
102
102
|
routerProxy = appComponent.getRouterProxy(),
|
|
103
103
|
hash = routerProxy.getHash(),
|
|
104
104
|
isStickyMode = ModelHelper.isStickySessionSupported(appComponent.getMetaModel()),
|
|
105
|
-
newHash = navigationService.replaceInnerAppStateKey(routerProxy.
|
|
105
|
+
newHash = navigationService.replaceInnerAppStateKey(routerProxy.getHash(), appStateKey);
|
|
106
106
|
|
|
107
107
|
if (newHash && this.simultaneousCreateRequest[stateIdentifier] === 0 && newHash !== hash) {
|
|
108
108
|
routerProxy.navToHash(newHash, undefined, undefined, undefined, !isStickyMode);
|