{"remainingRequest":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/thread-loader/dist/cjs.js!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/babel-loader/lib/index.js!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/cache-loader/dist/cjs.js??ref--1-0!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/vue-loader/lib/index.js??vue-loader-options!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/@abi-software/flatmapvuer/src/components/FlatmapVuer.vue?vue&type=script&lang=js&","dependencies":[{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/@abi-software/flatmapvuer/src/components/FlatmapVuer.vue","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/babel.config.js","mtime":1684261475125},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/thread-loader/dist/cjs.js","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/babel-loader/lib/index.js","mtime":456789000000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/vue-loader/lib/index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIGZyb20gIi9ob21lL2NtaXNzL0plbmtpbnMvd29ya3NwYWNlL21hcGludGVncmF0ZWR2dWVyL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyLmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiL2hvbWUvY21pc3MvSmVua2lucy93b3Jrc3BhY2UvbWFwaW50ZWdyYXRlZHZ1ZXIvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICIvaG9tZS9jbWlzcy9KZW5raW5zL3dvcmtzcGFjZS9tYXBpbnRlZ3JhdGVkdnVlci9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfUm93MiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9yb3cuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfUm93IGZyb20gImVsZW1lbnQtdWkvbGliL3JvdyI7CmltcG9ydCBfUmFkaW9Hcm91cDIgZnJvbSAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvcmFkaW8tZ3JvdXAuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfUmFkaW9Hcm91cCBmcm9tICJlbGVtZW50LXVpL2xpYi9yYWRpby1ncm91cCI7CmltcG9ydCBfUmFkaW8yIGZyb20gImVsZW1lbnQtdWkvbGliL3RoZW1lLWNoYWxrL3JhZGlvLmNzcyI7CmltcG9ydCAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYmFzZS5jc3MiOwppbXBvcnQgX1JhZGlvIGZyb20gImVsZW1lbnQtdWkvbGliL3JhZGlvIjsKaW1wb3J0IF9Mb2FkaW5nMiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9sb2FkaW5nLmNzcyI7CmltcG9ydCAiZWxlbWVudC11aS9saWIvdGhlbWUtY2hhbGsvYmFzZS5jc3MiOwppbXBvcnQgX0xvYWRpbmcgZnJvbSAiZWxlbWVudC11aS9saWIvbG9hZGluZyI7CmltcG9ydCBfQ29sMiBmcm9tICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9jb2wuY3NzIjsKaW1wb3J0ICJlbGVtZW50LXVpL2xpYi90aGVtZS1jaGFsay9iYXNlLmNzcyI7CmltcG9ydCBfQ29sIGZyb20gImVsZW1lbnQtdWkvbGliL2NvbCI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaXRlcmF0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLml0ZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZnJvbS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnNldC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5zZWFyY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIuY29uc3RydWN0b3IuanMiOwovKiBlc2xpbnQtZGlzYWJsZSBuby1hbGVydCwgbm8tY29uc29sZSAqLwppbXBvcnQgVnVlIGZyb20gInZ1ZSI7CmltcG9ydCBUb29sdGlwIGZyb20gIi4vVG9vbHRpcCI7CmltcG9ydCBTZWxlY3Rpb25zR3JvdXAgZnJvbSAiLi9TZWxlY3Rpb25zR3JvdXAudnVlIjsKaW1wb3J0IHsgTWFwU3ZnSWNvbiwgTWFwU3ZnU3ByaXRlQ29sb3IgfSBmcm9tICJAYWJpLXNvZnR3YXJlL3N2Zy1zcHJpdGUiOwppbXBvcnQgU3ZnTGVnZW5kcyBmcm9tICIuL2xlZ2VuZHMvU3ZnTGVnZW5kcyI7CmltcG9ydCBsYW5nIGZyb20gImVsZW1lbnQtdWkvbGliL2xvY2FsZS9sYW5nL2VuIjsKaW1wb3J0IGxvY2FsZSBmcm9tICJlbGVtZW50LXVpL2xpYi9sb2NhbGUiOwppbXBvcnQgZmxhdG1hcE1hcmtlciBmcm9tICIuLi9pY29ucy9mbGF0bWFwLW1hcmtlciI7CmltcG9ydCB7IEZsYXRtYXBRdWVyaWVzIH0gZnJvbSAiLi4vc2VydmljZXMvZmxhdG1hcFF1ZXJpZXMuanMiOwpsb2NhbGUudXNlKGxhbmcpOwpWdWUudXNlKF9Db2wpOwpWdWUudXNlKF9Mb2FkaW5nLmRpcmVjdGl2ZSk7ClZ1ZS51c2UoX1JhZGlvKTsKVnVlLnVzZShfUmFkaW9Hcm91cCk7ClZ1ZS51c2UoX1Jvdyk7CnZhciBSZXNpemVTZW5zb3IgPSByZXF1aXJlKCJjc3MtZWxlbWVudC1xdWVyaWVzL3NyYy9SZXNpemVTZW5zb3IiKTsKdmFyIGNyZWF0ZVVuZmlsbGVkVG9vbHRpcERhdGEgPSBmdW5jdGlvbiBjcmVhdGVVbmZpbGxlZFRvb2x0aXBEYXRhKCkgewogIHJldHVybiB7CiAgICBkZXN0aW5hdGlvbnM6IFtdLAogICAgb3JpZ2luczogW10sCiAgICBjb21wb25lbnRzOiBbXSwKICAgIGRlc3RpbmF0aW9uc1dpdGhEYXRhc2V0czogW10sCiAgICBvcmlnaW5zV2l0aERhdGFzZXRzOiBbXSwKICAgIGNvbXBvbmVudHNXaXRoRGF0YXNldHM6IFtdLAogICAgcmVzb3VyY2U6IHVuZGVmaW5lZAogIH07Cn07CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAiRmxhdG1hcFZ1ZXIiLAogIGNvbXBvbmVudHM6IHsKICAgIE1hcFN2Z0ljb246IE1hcFN2Z0ljb24sCiAgICBNYXBTdmdTcHJpdGVDb2xvcjogTWFwU3ZnU3ByaXRlQ29sb3IsCiAgICBUb29sdGlwOiBUb29sdGlwLAogICAgU2VsZWN0aW9uc0dyb3VwOiBTZWxlY3Rpb25zR3JvdXAsCiAgICBTdmdMZWdlbmRzOiBTdmdMZWdlbmRzCiAgfSwKICBiZWZvcmVDcmVhdGU6IGZ1bmN0aW9uIGJlZm9yZUNyZWF0ZSgpIHsKICAgIHRoaXMubWFwTWFuYWdlciA9IHVuZGVmaW5lZDsKICAgIHRoaXMubWFwSW1wID0gdW5kZWZpbmVkOwogIH0sCiAgbWV0aG9kczogewogICAgdmlld0xhdGVzdE1hcDogZnVuY3Rpb24gdmlld0xhdGVzdE1hcCgpIHsKICAgICAgdmFyIGJpb2xvZ2ljYWxTZXggPSB0aGlzLmJpb2xvZ2ljYWxTZXggPyB0aGlzLmJpb2xvZ2ljYWxTZXggOiB1bmRlZmluZWQ7CiAgICAgIC8vSHVtYW4gcmVxdWlyZXMgc3BlY2lhbCBoYW5kbGluZwogICAgICBpZiAodGhpcy5lbnRyeSA9PT0gIk5DQklUYXhvbjo5NjA2IikgewogICAgICAgIGJpb2xvZ2ljYWxTZXggPSAiUEFUTzowMDAwMzg0IjsKICAgICAgfQogICAgICB2YXIgc3RhdGUgPSB7CiAgICAgICAgZW50cnk6IHRoaXMuZW50cnksCiAgICAgICAgYmlvbG9naWNhbFNleDogYmlvbG9naWNhbFNleCwKICAgICAgICB2aWV3cG9ydDogdGhpcy5tYXBJbXAuZ2V0U3RhdGUoKQogICAgICB9OwogICAgICB0aGlzLiRlbWl0KCJ2aWV3LWxhdGVzdC1tYXAiLCBzdGF0ZSk7CiAgICB9LAogICAgYmFja2dyb3VuZENoYW5nZUNhbGxiYWNrOiBmdW5jdGlvbiBiYWNrZ3JvdW5kQ2hhbmdlQ2FsbGJhY2soY29sb3VyKSB7CiAgICAgIHRoaXMuY3VycmVudEJhY2tncm91bmQgPSBjb2xvdXI7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHRoaXMubWFwSW1wLnNldEJhY2tncm91bmRDb2xvdXIodGhpcy5jdXJyZW50QmFja2dyb3VuZCwgMSk7CiAgICAgIH0KICAgIH0sCiAgICB0b2dnbGVEcmF3ZXI6IGZ1bmN0aW9uIHRvZ2dsZURyYXdlcigpIHsKICAgICAgdGhpcy5kcmF3ZXJPcGVuID0gIXRoaXMuZHJhd2VyT3BlbjsKICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHRvIHRvZ2dsZSBjb2xvdXIvZ3JleXNjYWxlIG9mIG9yZ2Fucy4KICAgICAqLwogICAgc2V0Q29sb3VyOiBmdW5jdGlvbiBzZXRDb2xvdXIoZmxhZykgewogICAgICB0aGlzLmNvbG91clJhZGlvID0gZmxhZzsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgdGhpcy5tYXBJbXAuc2V0Q29sb3VyKHsKICAgICAgICAgIGNvbG91cjogZmxhZywKICAgICAgICAgIG91dGxpbmU6IHRoaXMub3V0bGluZXNSYWRpbwogICAgICAgIH0pOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB0byB0b2dnbGUgb3V0bGluZXMgZiBvcmdhbnMuCiAgICAgKi8KICAgIHNldE91dGxpbmVzOiBmdW5jdGlvbiBzZXRPdXRsaW5lcyhmbGFnKSB7CiAgICAgIHRoaXMub3V0bGluZVJhZGlvID0gZmxhZzsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgdGhpcy5tYXBJbXAuc2V0Q29sb3VyKHsKICAgICAgICAgIGNvbG91cjogdGhpcy5jb2xvdXJSYWRpbywKICAgICAgICAgIG91dGxpbmU6IGZsYWcKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdG8gdG9nZ2xlIHBhdGhzIHRvIGRlZmF1bHQuCiAgICAgKiBBbHNvIGNhbGxlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIGJ1dHRvbiBpcyBwcmVzc2VkLgogICAgICovCiAgICByZXNldFZpZXc6IGZ1bmN0aW9uIHJlc2V0VmlldygpIHsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgdGhpcy5tYXBJbXAucmVzZXRNYXAoKTsKICAgICAgICBpZiAodGhpcy4kcmVmcy5jZW50cmVsaW5lc1NlbGVjdGlvbikgewogICAgICAgICAgdGhpcy4kcmVmcy5jZW50cmVsaW5lc1NlbGVjdGlvbi5yZXNldCgpOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy4kcmVmcy5za2NhblNlbGVjdGlvbikgewogICAgICAgICAgdGhpcy4kcmVmcy5za2NhblNlbGVjdGlvbi5yZXNldCgpOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy4kcmVmcy5sYXllcnNTZWxlY3Rpb24pIHsKICAgICAgICAgIHRoaXMuJHJlZnMubGF5ZXJzU2VsZWN0aW9uLnJlc2V0KCk7CiAgICAgICAgfQogICAgICAgIGlmICh0aGlzLiRyZWZzLnN5c3RlbXNTZWxlY3Rpb24pIHsKICAgICAgICAgIHRoaXMuJHJlZnMucGF0aHdheXNTZWxlY3Rpb24ucmVzZXQoKTsKICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMuJHJlZnMucGF0aHdheXNTZWxlY3Rpb24pIHsKICAgICAgICAgIHRoaXMuJHJlZnMucGF0aHdheXNTZWxlY3Rpb24ucmVzZXQoKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHRvIHpvb20gaW4uCiAgICAgKiBBbHNvIGNhbGxlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIGJ1dHRvbiBpcyBwcmVzc2VkLgogICAgICovCiAgICB6b29tSW46IGZ1bmN0aW9uIHpvb21JbigpIHsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgdGhpcy5tYXBJbXAuem9vbUluKCk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHRvIHpvb20gb3V0LgogICAgICogQWxzbyBjYWxsZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBidXR0b24gaXMgcHJlc3NlZC4KICAgICAqLwogICAgem9vbU91dDogZnVuY3Rpb24gem9vbU91dCgpIHsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgdGhpcy5tYXBJbXAuem9vbU91dCgpOwogICAgICB9CiAgICB9LAogICAgY2VudHJlTGluZXNTZWxlY3RlZDogZnVuY3Rpb24gY2VudHJlTGluZXNTZWxlY3RlZChwYXlsb2FkKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHRoaXMubWFwSW1wLmVuYWJsZUNlbnRyZWxpbmVzKHBheWxvYWQudmFsdWUpOwogICAgICB9CiAgICB9LAogICAgc2NrYW5TZWxlY3RlZDogZnVuY3Rpb24gc2NrYW5TZWxlY3RlZChwYXlsb2FkKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHRoaXMubWFwSW1wLmVuYWJsZVNja2FuUGF0aChwYXlsb2FkLmtleSwgcGF5bG9hZC52YWx1ZSk7CiAgICAgIH0KICAgIH0sCiAgICBjaGVja0FsbFNDS0FOOiBmdW5jdGlvbiBjaGVja0FsbFNDS0FOKHBheWxvYWQpIHsKICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgcGF5bG9hZC5rZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkgewogICAgICAgICAgcmV0dXJuIF90aGlzLm1hcEltcC5lbmFibGVTY2thblBhdGgoa2V5LCBwYXlsb2FkLnZhbHVlKTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIHN5c3RlbVNlbGVjdGVkOiBmdW5jdGlvbiBzeXN0ZW1TZWxlY3RlZChwYXlsb2FkKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHRoaXMubWFwSW1wLmVuYWJsZVN5c3RlbShwYXlsb2FkLmtleSwgcGF5bG9hZC52YWx1ZSk7CiAgICAgIH0KICAgIH0sCiAgICBjaGVja0FsbFN5c3RlbXM6IGZ1bmN0aW9uIGNoZWNrQWxsU3lzdGVtcyhwYXlsb2FkKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICBwYXlsb2FkLmtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7CiAgICAgICAgICByZXR1cm4gX3RoaXMyLm1hcEltcC5lbmFibGVTeXN0ZW0oa2V5LCBwYXlsb2FkLnZhbHVlKTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIGxheWVyc1NlbGVjdGVkOiBmdW5jdGlvbiBsYXllcnNTZWxlY3RlZChwYXlsb2FkKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHRoaXMubWFwSW1wLmVuYWJsZUxheWVyKHBheWxvYWQua2V5LCBwYXlsb2FkLnZhbHVlKTsKICAgICAgfQogICAgfSwKICAgIGNoZWNrQWxsTGF5ZXJzOiBmdW5jdGlvbiBjaGVja0FsbExheWVycyhwYXlsb2FkKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICBwYXlsb2FkLmtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7CiAgICAgICAgICByZXR1cm4gX3RoaXMzLm1hcEltcC5lbmFibGVMYXllcihrZXksIHBheWxvYWQudmFsdWUpOwogICAgICAgIH0pOwogICAgICB9CiAgICB9LAogICAgcGF0aHdheXNTZWxlY3RlZDogZnVuY3Rpb24gcGF0aHdheXNTZWxlY3RlZChwYXlsb2FkKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHRoaXMubWFwSW1wLmVuYWJsZVBhdGgocGF5bG9hZC5rZXksIHBheWxvYWQudmFsdWUpOwogICAgICB9CiAgICB9LAogICAgY2hlY2tBbGxQYXRod2F5czogZnVuY3Rpb24gY2hlY2tBbGxQYXRod2F5cyhwYXlsb2FkKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICBwYXlsb2FkLmtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7CiAgICAgICAgICByZXR1cm4gX3RoaXM0Lm1hcEltcC5lbmFibGVQYXRoKGtleSwgcGF5bG9hZC52YWx1ZSk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICBlbmFibGVQYW5ab29tRXZlbnRzOiBmdW5jdGlvbiBlbmFibGVQYW5ab29tRXZlbnRzKGZsYWcpIHsKICAgICAgdGhpcy5tYXBJbXAuZW5hYmxlUGFuWm9vbUV2ZW50cyhmbGFnKTsKICAgIH0sCiAgICBldmVudENhbGxiYWNrOiBmdW5jdGlvbiBldmVudENhbGxiYWNrKCkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgcmV0dXJuIGZ1bmN0aW9uIChldmVudFR5cGUsIGRhdGEpIHsKICAgICAgICBpZiAoZXZlbnRUeXBlICE9PSAicGFuLXpvb20iKSB7CiAgICAgICAgICB2YXIgbGFiZWwgPSBkYXRhLmxhYmVsOwogICAgICAgICAgdmFyIHJlc291cmNlID0gW2RhdGEubW9kZWxzXTsKICAgICAgICAgIHZhciB0YXhvbm9teSA9IF90aGlzNS5lbnRyeTsKICAgICAgICAgIHZhciBiaW9sb2dpY2FsU2V4ID0gX3RoaXM1LmJpb2xvZ2ljYWxTZXg7CiAgICAgICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuID4gMiA/IF9sZW4gLSAyIDogMCksIF9rZXkgPSAyOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7CiAgICAgICAgICAgIGFyZ3NbX2tleSAtIDJdID0gYXJndW1lbnRzW19rZXldOwogICAgICAgICAgfQogICAgICAgICAgdmFyIHBheWxvYWQgPSB7CiAgICAgICAgICAgIGRhdGFzZXQ6IGRhdGEuZGF0YXNldCwKICAgICAgICAgICAgYmlvbG9naWNhbFNleDogYmlvbG9naWNhbFNleCwKICAgICAgICAgICAgdGF4b25vbXk6IHRheG9ub215LAogICAgICAgICAgICByZXNvdXJjZTogcmVzb3VyY2UsCiAgICAgICAgICAgIGxhYmVsOiBsYWJlbCwKICAgICAgICAgICAgZmVhdHVyZTogZGF0YSwKICAgICAgICAgICAgdXNlckRhdGE6IGFyZ3MsCiAgICAgICAgICAgIGV2ZW50VHlwZTogZXZlbnRUeXBlCiAgICAgICAgICB9OwogICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS50eXBlICE9PSAibWFya2VyIiAmJiBldmVudFR5cGUgPT09ICJjbGljayIpIHsKICAgICAgICAgICAgX3RoaXM1LmNoZWNrQW5kQ3JlYXRlUG9wdXBzKHBheWxvYWQpOwogICAgICAgICAgfQogICAgICAgICAgX3RoaXM1LiRlbWl0KCJyZXNvdXJjZS1zZWxlY3RlZCIsIHBheWxvYWQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfdGhpczUuJGVtaXQoInBhbi16b29tLWNhbGxiYWNrIiwgZGF0YSk7CiAgICAgICAgfQogICAgICB9OwogICAgfSwKICAgIC8vIGNoZWNrTmV1cm9uQ2xpY2tlZCBzaG93cyBhIG5ldXJvbiBwYXRoIHBvcCB1cCBpZiBhIHBhdGggd2FzIHJlY2VudGx5IGNsaWNrZWQKICAgIGNoZWNrQW5kQ3JlYXRlUG9wdXBzOiBmdW5jdGlvbiAoKSB7CiAgICAgIHZhciBfY2hlY2tBbmRDcmVhdGVQb3B1cHMgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoZGF0YSkgewogICAgICAgIHZhciByZXN1bHRzOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiB0aGlzLmZsYXRtYXBRdWVyaWVzLnJldHJpZXZlRmxhdG1hcEtub3dsZWRnZUZvckV2ZW50KGRhdGEpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgcmVzdWx0cyA9IF9jb250ZXh0LnNlbnQ7CiAgICAgICAgICAgICAgaWYgKCFyZXN1bHRzKSB7CiAgICAgICAgICAgICAgICBpZiAoZGF0YS5mZWF0dXJlLmh5cGVybGlua3MgJiYgZGF0YS5mZWF0dXJlLmh5cGVybGlua3MubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICB0aGlzLnJlc291cmNlRm9yVG9vbHRpcCA9IGRhdGEucmVzb3VyY2VbMF07CiAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVG9vbHRpcEZyb21OZXVyb25DdXJhdGlvbihkYXRhKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5yZXNvdXJjZUZvclRvb2x0aXAgPSBkYXRhLnJlc291cmNlWzBdOwogICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUb29sdGlwRnJvbU5ldXJvbkN1cmF0aW9uKGRhdGEpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7CiAgICAgIH0pKTsKICAgICAgZnVuY3Rpb24gY2hlY2tBbmRDcmVhdGVQb3B1cHMoX3gpIHsKICAgICAgICByZXR1cm4gX2NoZWNrQW5kQ3JlYXRlUG9wdXBzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgIH0KICAgICAgcmV0dXJuIGNoZWNrQW5kQ3JlYXRlUG9wdXBzOwogICAgfSgpLAogICAgcG9wVXBDc3NIYWNrczogZnVuY3Rpb24gcG9wVXBDc3NIYWNrcygpIHsKICAgICAgLy8gQmVsb3cgaXMgYSBoYWNrIHRvIHJlbW92ZSBmbGF0bWFwIHRvb2x0aXBzIHdoaWxlIHBvcHVwIGlzIG9wZW4KICAgICAgdmFyIGZ0b29sdGlwID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmZsYXRtYXAtdG9vbHRpcC1wb3B1cCIpOwogICAgICBpZiAoZnRvb2x0aXApIGZ0b29sdGlwLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5tYXBib3hnbC1wb3B1cC1jbG9zZS1idXR0b24iKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgdGhpcy4kcmVmcy50b29sdGlwLiRlbC5zdHlsZS5kaXNwbGF5ID0gImZsZXgiOwogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIubWFwYm94Z2wtcG9wdXAtY2xvc2UtYnV0dG9uIikub25jbGljayA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZmxhdG1hcC10b29sdGlwLXBvcHVwIikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgIH07CiAgICB9LAogICAgcmVzb3VyY2VTZWxlY3RlZDogZnVuY3Rpb24gcmVzb3VyY2VTZWxlY3RlZChhY3Rpb24pIHsKICAgICAgdGhpcy4kZW1pdCgicmVzb3VyY2Utc2VsZWN0ZWQiLCBhY3Rpb24pOwogICAgfSwKICAgIGNyZWF0ZVRvb2x0aXBGcm9tTmV1cm9uQ3VyYXRpb246IGZ1bmN0aW9uIGNyZWF0ZVRvb2x0aXBGcm9tTmV1cm9uQ3VyYXRpb24oZGF0YSkgewogICAgICB0aGlzLnRvb2x0aXBFbnRyeSA9IHRoaXMuZmxhdG1hcFF1ZXJpZXMuY3JlYXRlVG9vbHRpcERhdGEoZGF0YSk7CiAgICAgIHRoaXMuZGlzcGxheVRvb2x0aXAoKTsKICAgIH0sCiAgICAvLyBLZWVwaW5nIHRoaXMgYXMgYW4gQVBJCiAgICBzaG93UG9wdXA6IGZ1bmN0aW9uIHNob3dQb3B1cChmZWF0dXJlSWQsIG5vZGUsIG9wdGlvbnMpIHsKICAgICAgdmFyIG15T3B0aW9ucyA9IG9wdGlvbnM7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIGlmIChteU9wdGlvbnMpIHsKICAgICAgICAgIGlmICghbXlPcHRpb25zLmNsYXNzTmFtZSkgbXlPcHRpb25zLmNsYXNzTmFtZSA9ICJjdXN0b20tcG9wdXAiOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBteU9wdGlvbnMgPSB7CiAgICAgICAgICAgIGNsYXNzTmFtZTogImN1c3RvbS1wb3B1cCIsCiAgICAgICAgICAgIHBvc2l0aW9uQXRMYXN0Q2xpY2s6IHRydWUKICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIHRoaXMubWFwSW1wLnNob3dQb3B1cChmZWF0dXJlSWQsIG5vZGUsIG15T3B0aW9ucyk7CiAgICAgIH0KICAgIH0sCiAgICBzaG93TWFya2VyUG9wdXA6IGZ1bmN0aW9uIHNob3dNYXJrZXJQb3B1cChmZWF0dXJlSWQsIG5vZGUsIG9wdGlvbnMpIHsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgdGhpcy5tYXBJbXAuc2hvd01hcmtlclBvcHVwKGZlYXR1cmVJZCwgbm9kZSwgb3B0aW9ucyk7CiAgICAgIH0KICAgIH0sCiAgICBjbG9zZU1pbmltYXA6IGZ1bmN0aW9uIGNsb3NlTWluaW1hcCgpIHsKICAgICAgdmFyIG1pbmltYXBFbCA9IHRoaXMuJHJlZnMuZmxhdG1hcENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcubWFwbGlicmVnbC1jdHJsLW1pbmltYXAnKTsgLy8gZmluZCBtaW5pbWFwCiAgICAgIGlmICh0aGlzLm1pbmltYXBTbWFsbCkgewogICAgICAgIC8vc3dpdGNoIHRoZSBjbGFzc2VzIG9uIHRoZSBtaW5pbWFwCiAgICAgICAgbWluaW1hcEVsLmNsYXNzTGlzdC5hZGQoJ2VubGFyZ2UnKTsKICAgICAgICBtaW5pbWFwRWwuY2xhc3NMaXN0LnJlbW92ZSgnc2hyaW5rJyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbWluaW1hcEVsLmNsYXNzTGlzdC5hZGQoJ3NocmluaycpOwogICAgICAgIG1pbmltYXBFbC5jbGFzc0xpc3QucmVtb3ZlKCdlbmxhcmdlJyk7CiAgICAgIH0KICAgICAgdGhpcy5taW5pbWFwU21hbGwgPSAhdGhpcy5taW5pbWFwU21hbGw7CiAgICB9LAogICAgYWRkUmVzaXplQnV0dG9uVG9NaW5pbWFwOiBmdW5jdGlvbiBhZGRSZXNpemVCdXR0b25Ub01pbmltYXAoKSB7CiAgICAgIHZhciBtaW5pbWFwRWwgPSB0aGlzLiRyZWZzLmZsYXRtYXBDb250YWluZXIucXVlcnlTZWxlY3RvcignLm1hcGxpYnJlZ2wtY3RybC1taW5pbWFwJyk7CiAgICAgIGlmIChtaW5pbWFwRWwpIHsKICAgICAgICB0aGlzLiRyZWZzLm1pbmltYXBSZXNpemUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLiRyZWZzLm1pbmltYXBSZXNpemUpOwogICAgICAgIG1pbmltYXBFbC5hcHBlbmRDaGlsZCh0aGlzLiRyZWZzLm1pbmltYXBSZXNpemUpOwogICAgICAgIHRoaXMubWluaW1hcFJlc2l6ZVNob3cgPSB0cnVlOwogICAgICB9CiAgICB9LAogICAgc2V0SGVscE1vZGU6IGZ1bmN0aW9uIHNldEhlbHBNb2RlKGhlbHBNb2RlKSB7CiAgICAgIGlmIChoZWxwTW9kZSkgewogICAgICAgIHRoaXMuaW5IZWxwID0gdHJ1ZTsKICAgICAgICB0aGlzLmhvdmVyVmlzaWJpbGl0aWVzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIGl0ZW0udmFsdWUgPSB0cnVlOwogICAgICAgIH0pOwogICAgICAgIHRoaXMub3BlbkZsYXRtYXBIZWxwUG9wdXAoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmluSGVscCA9IGZhbHNlOwogICAgICAgIHRoaXMuaG92ZXJWaXNpYmlsaXRpZXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgaXRlbS52YWx1ZSA9IGZhbHNlOwogICAgICAgIH0pOwogICAgICAgIHRoaXMuY2xvc2VGbGF0bWFwSGVscFBvcHVwKCk7CiAgICAgIH0KICAgIH0sCiAgICBzaG93VG9vbGl0aXA6IGZ1bmN0aW9uIHNob3dUb29saXRpcCh0b29sdGlwTnVtYmVyKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICBpZiAoIXRoaXMuaW5IZWxwKSB7CiAgICAgICAgdGhpcy50b29sdGlwV2FpdCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgX3RoaXM2LmhvdmVyVmlzaWJpbGl0aWVzW3Rvb2x0aXBOdW1iZXJdLnZhbHVlID0gdHJ1ZTsKICAgICAgICB9LCA1MDApOwogICAgICB9CiAgICB9LAogICAgaGlkZVRvb2xpdGlwOiBmdW5jdGlvbiBoaWRlVG9vbGl0aXAodG9vbHRpcE51bWJlcikgewogICAgICBpZiAoIXRoaXMuaW5IZWxwKSB7CiAgICAgICAgdGhpcy5ob3ZlclZpc2liaWxpdGllc1t0b29sdGlwTnVtYmVyXS52YWx1ZSA9IGZhbHNlOwogICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRvb2x0aXBXYWl0KTsKICAgICAgfQogICAgfSwKICAgIGRpc3BsYXlUb29sdGlwOiBmdW5jdGlvbiBkaXNwbGF5VG9vbHRpcCgpIHsKICAgICAgdGhpcy5tYXBJbXAuc2hvd1BvcHVwKHRoaXMubWFwSW1wLm1vZGVsRmVhdHVyZUlkcyh0aGlzLnJlc291cmNlRm9yVG9vbHRpcClbMF0sIHRoaXMuJHJlZnMudG9vbHRpcC4kZWwsIHsKICAgICAgICBjbGFzc05hbWU6ICJmbGF0bWFwdnVlci1wb3BvdmVyIiwKICAgICAgICBwb3NpdGlvbkF0TGFzdENsaWNrOiB0cnVlCiAgICAgIH0pOwogICAgICB0aGlzLnBvcFVwQ3NzSGFja3MoKTsKICAgIH0sCiAgICBvcGVuRmxhdG1hcEhlbHBQb3B1cDogZnVuY3Rpb24gb3BlbkZsYXRtYXBIZWxwUG9wdXAoKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHZhciBoZWFydElkID0gdGhpcy5tYXBJbXAuZmVhdHVyZUlkc0Zvck1vZGVsKCJVQkVST046MDAwMDk0OCIpWzBdOwogICAgICAgIHZhciBlbG0gPSAiQ2xpY2sgZm9yIG1vcmUgaW5mb3JtYXRpb24iOwogICAgICAgIHRoaXMubWFwSW1wLnNob3dQb3B1cChoZWFydElkLCBlbG0sIHsKICAgICAgICAgIGFuY2hvcjogInRvcCIsCiAgICAgICAgICBjbGFzc05hbWU6ICJmbGF0bWFwLXBvcHVwLXBvcHBlciIKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIGNsb3NlRmxhdG1hcEhlbHBQb3B1cDogZnVuY3Rpb24gY2xvc2VGbGF0bWFwSGVscFBvcHVwKCkgewogICAgICB0aGlzLiRlbC5xdWVyeVNlbGVjdG9yQWxsKCIubWFwYm94Z2wtcG9wdXAtY2xvc2UtYnV0dG9uIikuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIGl0ZW0uY2xpY2soKTsKICAgICAgfSk7CiAgICB9LAogICAgZ2V0TGFiZWxzOiBmdW5jdGlvbiBnZXRMYWJlbHMoKSB7CiAgICAgIHZhciBsYWJlbHMgPSBbXTsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgdmFyIGFubm90YXRpb25zID0gdGhpcy5tYXBJbXAuYW5ub3RhdGlvbnM7CiAgICAgICAgdmFyIF9pdGVyYXRvciA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKGFubm90YXRpb25zLnZhbHVlcygpKSwKICAgICAgICAgIF9zdGVwOwogICAgICAgIHRyeSB7CiAgICAgICAgICBmb3IgKF9pdGVyYXRvci5zKCk7ICEoX3N0ZXAgPSBfaXRlcmF0b3IubigpKS5kb25lOykgewogICAgICAgICAgICB2YXIgdmFsdWUgPSBfc3RlcC52YWx1ZTsKICAgICAgICAgICAgaWYgKHZhbHVlLmxhYmVsKSBsYWJlbHMucHVzaCh2YWx1ZS5sYWJlbCk7CiAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICBfaXRlcmF0b3IuZShlcnIpOwogICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICBfaXRlcmF0b3IuZigpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGxhYmVscykpOwogICAgICB9CiAgICB9LAogICAgZ2V0U3RhdGU6IGZ1bmN0aW9uIGdldFN0YXRlKCkgewogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICB2YXIgc3RhdGUgPSB7CiAgICAgICAgICBlbnRyeTogdGhpcy5lbnRyeSwKICAgICAgICAgIHZpZXdwb3J0OiB0aGlzLm1hcEltcC5nZXRTdGF0ZSgpCiAgICAgICAgfTsKICAgICAgICB2YXIgaWRlbnRpZmllciA9IHRoaXMubWFwSW1wLmdldElkZW50aWZpZXIoKTsKICAgICAgICBpZiAodGhpcy5iaW9sb2dpY2FsU2V4KSBzdGF0ZVsnYmlvbG9naWNhbFNleCddID0gdGhpcy5iaW9sb2dpY2FsU2V4O2Vsc2UgaWYgKGlkZW50aWZpZXIgJiYgaWRlbnRpZmllci5iaW9sb2dpY2FsU2V4KSBzdGF0ZVsnYmlvbG9naWNhbFNleCddID0gaWRlbnRpZmllci5iaW9sb2dpY2FsU2V4OwogICAgICAgIGlmIChpZGVudGlmaWVyICYmIGlkZW50aWZpZXIudXVpZCkgc3RhdGVbJ3V1aWQnXSA9IGlkZW50aWZpZXIudXVpZDsKICAgICAgICByZXR1cm4gc3RhdGU7CiAgICAgIH0KICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0sCiAgICBzZXRTdGF0ZTogZnVuY3Rpb24gc2V0U3RhdGUoc3RhdGUpIHsKICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgaWYgKHRoaXMubWFwSW1wICYmIHN0YXRlLmVudHJ5ICYmIHRoaXMuZW50cnkgPT0gc3RhdGUuZW50cnkgJiYgKCFzdGF0ZS5iaW9sb2dpY2FsU2V4IHx8IHN0YXRlLmJpb2xvZ2ljYWxTZXggPT09IHRoaXMuYmlvbG9naWNhbFNleCkpIHsKICAgICAgICAgIGlmIChzdGF0ZS52aWV3cG9ydCkgewogICAgICAgICAgICB0aGlzLm1hcEltcC5zZXRTdGF0ZShzdGF0ZS52aWV3cG9ydCk7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuY3JlYXRlRmxhdG1hcChzdGF0ZSk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgcmVzdG9yZU1hcFN0YXRlOiBmdW5jdGlvbiByZXN0b3JlTWFwU3RhdGUoc3RhdGUpIHsKICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgaWYgKHN0YXRlLnZpZXdwb3J0KSB0aGlzLm1hcEltcC5zZXRTdGF0ZShzdGF0ZS52aWV3cG9ydCk7CiAgICAgICAgaWYgKHN0YXRlLnNlYXJjaFRlcm0pIHRoaXMuc2VhcmNoQW5kU2hvd1Jlc3VsdChzdGF0ZS5zZWFyY2hUZXJtLCB0cnVlKTsKICAgICAgfQogICAgfSwKICAgIGNyZWF0ZUZsYXRtYXA6IGZ1bmN0aW9uIGNyZWF0ZUZsYXRtYXAoc3RhdGUpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIGlmICghdGhpcy5tYXBJbXAgJiYgIXRoaXMubG9hZGluZykgewogICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAgICAgdmFyIG1pbmltYXAgPSBmYWxzZTsKICAgICAgICBpZiAodGhpcy5kaXNwbGF5TWluaW1hcCkgewogICAgICAgICAgbWluaW1hcCA9IHsKICAgICAgICAgICAgcG9zaXRpb246ICJ0b3AtcmlnaHQiCiAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgLy9BcyBmb3IgZmxhdG1hcC12aWV3ZXJAMi4yLjcsIHNlZSBiZWxvdyBmb3IgdGhlIGRvY3VtZW50YXRpb24gCiAgICAgICAgLy9mb3IgdGhlIGlkZW50aWZpZXI6CgogICAgICAgIC8vQGFyZyBpZGVudGlmaWVyIHtzdHJpbmd8T2JqZWN0fQogICAgICAgIC8vIEEgc3RyaW5nIG9yIG9iamVjdCBpZGVudGlmeWluZyB0aGUgbWFwIHRvIGxvYWQuIElmIGEgc3RyaW5nIGl0cwogICAgICAgIC8vIHZhbHVlIGNhbiBiZSBlaXRoZXIgdGhlIG1hcCdzIGBgdXVpZGBgLCBhc3NpZ25lZCBhdCBnZW5lcmF0aW9uIHRpbWUsCiAgICAgICAgLy8gb3IgdGF4b24gYW5kIGJpb2xvZ2ljYWwgc2V4IGlkZW50aWZpZXJzIG9mIHRoZSBzcGVjaWVzIHRoYXQgdGhlIG1hcAogICAgICAgIC8vIHJlcHJlc2VudHMuIFRoZSBsYXRlc3QgdmVyc2lvbiBvZiBhIG1hcCBpcyBsb2FkZWQgdW5sZXNzIGl0IGhhcyBiZWVuCiAgICAgICAgLy8gaWRlbnRpZmllZCB1c2luZyBhIGBgdXVpZGBgIChzZWUgYmVsb3cpLgogICAgICAgIC8vIEBhcmcgaWRlbnRpZmllci50YXhvbiB7c3RyaW5nfSBUaGUgdGF4b24gaWRlbnRpZmllciBvZiB0aGUgc3BlY2llcyAKICAgICAgICAvLyAgcmVwcmVzZW50ZWQgYnkgdGhlIG1hcC4gVGhpcyBpcyBzcGVjaWZpZWQgYXMgbWV0YWRhdGEgaW4gdGhlIG1hcCdzIHNvdXJjZSBmaWxlLgogICAgICAgIC8vIEBhcmcgaWRlbnRpZmllci5iaW9sb2dpY2FsU2V4IHtzdHJpbmd9IFRoZSBiaW9sb2dpY2FsIHNleCBvZiB0aGUgc3BlY2llcwogICAgICAgIC8vIHJlcHJlc2VudGVkIGJ5IHRoZSBtYXAuIFRoaXMgaXMgc3BlY2lmaWVkIGFzIG1ldGFkYXRhaW4gdGhlIG1hcCdzIHNvdXJjZSBmaWxlLgogICAgICAgIC8vIEBhcmcgaWRlbnRpZmllci51dWlkIHtzdHJpbmd9IFRoZSB1bmlxdWUgdXVpZCB0aGUgZmxhdG1hcC4gSWYgZ2l2ZW4gdGhlbiB0aGlzIGV4YWN0IG1hcCB3aWxsCiAgICAgICAgLy8gIGJlIGxvYWRlZCwgb3ZlcnJpZGluZyBgYHRheG9uYGAgYW5kIGBgYmlvbG9naWNhbFNleGBgLgoKICAgICAgICB2YXIgaWRlbnRpZmllciA9IHsKICAgICAgICAgIHRheG9uOiB0aGlzLmVudHJ5CiAgICAgICAgfTsKICAgICAgICAvL1RoaXMgbm93IGhhbmRsZSB0aGUgdXNlcyBvZiB1dWlkIHdoZW4gcmVzdW1pbmcgc3RhdGVzCiAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICBpZiAoc3RhdGUudXVpZCkgewogICAgICAgICAgICBpZGVudGlmaWVyID0gewogICAgICAgICAgICAgIHV1aWQ6IHN0YXRlLnV1aWQKICAgICAgICAgICAgfTsKICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUuZW50cnkpIHsKICAgICAgICAgICAgaWRlbnRpZmllci50YXhvbiA9IHN0YXRlLmVudHJ5OwogICAgICAgICAgICBpZiAoc3RhdGUuYmlvbG9naWNhbFNleCkgewogICAgICAgICAgICAgIGlkZW50aWZpZXJbImJpb2xvZ2ljYWxTZXgiXSA9IHN0YXRlLmJpb2xvZ2ljYWxTZXg7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoaWRlbnRpZmllci50YXhvbiA9PT0gIk5DQklUYXhvbjo5NjA2IikgewogICAgICAgICAgICAgIC8vRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKICAgICAgICAgICAgICBpZGVudGlmaWVyWyJiaW9sb2dpY2FsU2V4Il0gPSAiUEFUTzowMDAwMzg0IjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBTZXQgdGhlIGJpb2xvaWNhbFNleCBub3cgaWYgbWFwIGlzIG5vdCByZXN1bWVkIGZyb20KICAgICAgICAgIC8vIGEgc2F2ZWQgc3RhdGUKICAgICAgICAgIGlmICh0aGlzLmJpb2xvZ2ljYWxTZXgpIHsKICAgICAgICAgICAgaWRlbnRpZmllclsiYmlvbG9naWNhbFNleCJdID0gdGhpcy5iaW9sb2dpY2FsU2V4OwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB2YXIgcHJvbWlzZTEgPSB0aGlzLm1hcE1hbmFnZXIubG9hZE1hcChpZGVudGlmaWVyLCB0aGlzLiRyZWZzLmRpc3BsYXksIHRoaXMuZXZlbnRDYWxsYmFjaygpLCB7CiAgICAgICAgICAvL2Z1bGxzY3JlZW5Db250cm9sOiBmYWxzZSwKICAgICAgICAgIC8vYW5ub3RhdGFibGU6IGZhbHNlLAogICAgICAgICAgLy9kZWJ1ZzogdHJ1ZSwKICAgICAgICAgIGZlYXR1cmVJbmZvOiB0aGlzLmZlYXR1cmVJbmZvLAogICAgICAgICAgIm1pbi16b29tIjogdGhpcy5taW5ab29tLAogICAgICAgICAgbGF5ZXJDb250cm9sOiB0cnVlLAogICAgICAgICAgcGF0aENvbnRyb2xzOiB0cnVlLAogICAgICAgICAgc2VhcmNoYWJsZTogdGhpcy5zZWFyY2hhYmxlLAogICAgICAgICAgdG9vbHRpcHM6IHRoaXMudG9vbHRpcHMsCiAgICAgICAgICBtaW5pbWFwOiBtaW5pbWFwCiAgICAgICAgfSk7CiAgICAgICAgcHJvbWlzZTEudGhlbihmdW5jdGlvbiAocmV0dXJuZWRPYmplY3QpIHsKICAgICAgICAgIF90aGlzNy5tYXBJbXAgPSByZXR1cm5lZE9iamVjdDsKICAgICAgICAgIF90aGlzNy5vbkZsYXRtYXBSZWFkeSgpOwogICAgICAgICAgaWYgKF90aGlzNy5fc3RhdGVUb0JlU2V0KSBfdGhpczcucmVzdG9yZU1hcFN0YXRlKF90aGlzNy5fc3RhdGVUb0JlU2V0KTtlbHNlIHsKICAgICAgICAgICAgX3RoaXM3LnJlc3RvcmVNYXBTdGF0ZShzdGF0ZSk7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSBpZiAoc3RhdGUpIHsKICAgICAgICB0aGlzLl9zdGF0ZVRvQmVTZXQgPSB7CiAgICAgICAgICB2aWV3cG9ydDogc3RhdGUudmlld3BvcnQsCiAgICAgICAgICBzZWFyY2hUZXJtOiBzdGF0ZS5zZWFyY2hUZXJtCiAgICAgICAgfTsKICAgICAgICBpZiAodGhpcy5tYXBJbXAgJiYgIXRoaXMubG9hZGluZykgdGhpcy5yZXN0b3JlTWFwU3RhdGUodGhpcy5fc3RhdGVUb0JlU2V0KTsKICAgICAgfQogICAgfSwKICAgIGNvbXB1dGVQYXRoQ29udHJvbHNNYXhpbXVtSGVpZ2h0OiBmdW5jdGlvbiBjb21wdXRlUGF0aENvbnRyb2xzTWF4aW11bUhlaWdodCgpIHsKICAgICAgdmFyIGVsZW0gPSB0aGlzLiRyZWZzLmRpc3BsYXk7CiAgICAgIGlmIChlbGVtKSB7CiAgICAgICAgdmFyIGNvbXB1dGVkID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtKTsKICAgICAgICB2YXIgcGFkZGluZyA9IHBhcnNlSW50KGNvbXB1dGVkLnBhZGRpbmdUb3ApICsgcGFyc2VJbnQoY29tcHV0ZWQucGFkZGluZ0JvdHRvbSk7CiAgICAgICAgdmFyIGhlaWdodCA9IGVsZW0uY2xpZW50SGVpZ2h0IC0gcGFkZGluZzsKICAgICAgICB0aGlzLnBhdGh3YXlzTWF4SGVpZ2h0ID0gaGVpZ2h0IC0gMTUwOwogICAgICB9CiAgICB9LAogICAgbWFwUmVzaXplOiBmdW5jdGlvbiBtYXBSZXNpemUoKSB7CiAgICAgIHRyeSB7CiAgICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgICB0aGlzLm1hcEltcC5yZXNpemUoKTsKICAgICAgICAgIHRoaXMuc2hvd01pbmltYXAodGhpcy5kaXNwbGF5TWluaW1hcCk7CiAgICAgICAgICBpZiAodGhpcy5tYXBJbXAuX21pbmltYXApIHsKICAgICAgICAgICAgdGhpcy5tYXBJbXAuX21pbmltYXAucmVzaXplKCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRoaXMuY29tcHV0ZVBhdGhDb250cm9sc01heGltdW1IZWlnaHQoKTsKICAgICAgfSBjYXRjaCAoX3VudXNlZCkgewogICAgICAgIGNvbnNvbGUuZXJyb3IoIk1hcCByZXNpemUgZXJyb3IiKTsKICAgICAgfQogICAgfSwKICAgIG9uRmxhdG1hcFJlYWR5OiBmdW5jdGlvbiBvbkZsYXRtYXBSZWFkeSgpIHsKICAgICAgLy8gb25GbGF0bWFwUmVhZHkgaXMgdXNlZCBmb3IgZnVuY3Rpb25zIHRoYXQgbmVlZCB0byBydW4gaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGZsYXRtYXAgaXMgbG9hZGVkCiAgICAgIHRoaXMuc2Vuc29yID0gbmV3IFJlc2l6ZVNlbnNvcih0aGlzLiRyZWZzLmRpc3BsYXksIHRoaXMubWFwUmVzaXplKTsKICAgICAgaWYgKHRoaXMubWFwSW1wLm9wdGlvbnMgJiYgdGhpcy5tYXBJbXAub3B0aW9ucy5zdHlsZSA9PT0gImZ1bmN0aW9uYWwiKSB7CiAgICAgICAgdGhpcy5pc0ZDID0gdHJ1ZTsKICAgICAgfQogICAgICB0aGlzLm1hcEltcC5zZXRCYWNrZ3JvdW5kT3BhY2l0eSgxKTsKICAgICAgdGhpcy5iYWNrZ3JvdW5kQ2hhbmdlQ2FsbGJhY2sodGhpcy5jdXJyZW50QmFja2dyb3VuZCk7CiAgICAgIHRoaXMucGF0aHdheXMgPSB0aGlzLm1hcEltcC5wYXRoVHlwZXMoKTsKICAgICAgdGhpcy5tYXBJbXAuZW5hYmxlQ2VudHJlbGluZXMoZmFsc2UpOwogICAgICAvL0Rpc2FibGUgbGF5ZXJzIGZvciBub3cKICAgICAgLy90aGlzLmxheWVycyA9IHRoaXMubWFwSW1wLmdldExheWVycygpOwogICAgICB0aGlzLnN5c3RlbXMgPSB0aGlzLm1hcEltcC5nZXRTeXN0ZW1zKCk7CiAgICAgIHRoaXMuYWRkUmVzaXplQnV0dG9uVG9NaW5pbWFwKCk7CiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOwogICAgICB0aGlzLmNvbXB1dGVQYXRoQ29udHJvbHNNYXhpbXVtSGVpZ2h0KCk7CiAgICAgIHRoaXMuZHJhd2VyT3BlbiA9IHRydWU7CiAgICAgIHRoaXMubWFwUmVzaXplKCk7CiAgICAgIHRoaXMuJGVtaXQoInJlYWR5IiwgdGhpcyk7CiAgICB9LAogICAgc2hvd01pbmltYXA6IGZ1bmN0aW9uIHNob3dNaW5pbWFwKGZsYWcpIHsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB0aGlzLm1hcEltcC5zaG93TWluaW1hcChmbGFnKTsKICAgIH0sCiAgICBzaG93UGF0aHdheXNEcmF3ZXI6IGZ1bmN0aW9uIHNob3dQYXRod2F5c0RyYXdlcihmbGFnKSB7CiAgICAgIHRoaXMuZHJhd2VyT3BlbiA9IGZsYWc7CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB0byBkaXNwbGF5IGZlYXR1cmVzIHdpdGggYW5ub3RhdGlvbiBtYXRjaGluZyB0aGUgcHJvdmlkZWQgdGVybSwKICAgICAqIHdpdGggdGhlIG9wdGlvbiB0byBkaXNwbGF5IHRoZSBsYWJlbCB1c2luZyBkaXNwbGF5TGFiZWwgZmxhZy4gCiAgICAgKi8KICAgIHNlYXJjaEFuZFNob3dSZXN1bHQ6IGZ1bmN0aW9uIHNlYXJjaEFuZFNob3dSZXN1bHQodGVybSwgZGlzcGxheUxhYmVsKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIGlmICh0ZXJtID09PSB1bmRlZmluZWQgfHwgdGVybSA9PT0gIiIpIHsKICAgICAgICAgIHRoaXMubWFwSW1wLmNsZWFyU2VhcmNoUmVzdWx0cygpOwogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHZhciBzZWFyY2hSZXN1bHRzID0gdGhpcy5tYXBJbXAuc2VhcmNoKHRlcm0pOwogICAgICAgICAgaWYgKHNlYXJjaFJlc3VsdHMgJiYgc2VhcmNoUmVzdWx0cy5yZXN1bHRzICYmIHNlYXJjaFJlc3VsdHMucmVzdWx0cy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHRoaXMubWFwSW1wLnNob3dTZWFyY2hSZXN1bHRzKHNlYXJjaFJlc3VsdHMpOwogICAgICAgICAgICBpZiAoZGlzcGxheUxhYmVsICYmIHNlYXJjaFJlc3VsdHMucmVzdWx0c1swXS5mZWF0dXJlSWQgJiYgc2VhcmNoUmVzdWx0cy5yZXN1bHRzWzBdLnRleHQpIHsKICAgICAgICAgICAgICB0aGlzLm1hcEltcC5zaG93UG9wdXAoc2VhcmNoUmVzdWx0cy5yZXN1bHRzWzBdLmZlYXR1cmVJZCwgc2VhcmNoUmVzdWx0cy5yZXN1bHRzWzBdLnRleHQsIHsKICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImN1c3RvbS1wb3B1cCIsCiAgICAgICAgICAgICAgICBwb3NpdGlvbkF0TGFzdENsaWNrOiBmYWxzZQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgfSBlbHNlIHRoaXMubWFwSW1wLmNsZWFyU2VhcmNoUmVzdWx0cygpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAogICAgLyoqCiAgICAgKiBHZXQgdGhlIGxpc3Qgb2Ygc3VnZ2VzdGVkIHRlcm1zCiAgICAgKi8KICAgIHNlYXJjaFN1Z2dlc3Rpb25zOiBmdW5jdGlvbiBzZWFyY2hTdWdnZXN0aW9ucyh0ZXJtKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgcmV0dXJuIHRoaXMubWFwSW1wLnNlYXJjaCh0ZXJtKTsKICAgICAgcmV0dXJuIFtdOwogICAgfQogIH0sCiAgcHJvcHM6IHsKICAgIGVudHJ5OiBTdHJpbmcsCiAgICBiaW9sb2dpY2FsU2V4OiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIiIKICAgIH0sCiAgICBmZWF0dXJlSW5mbzogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIG1pblpvb206IHsKICAgICAgdHlwZTogTnVtYmVyLAogICAgICBkZWZhdWx0OiA0CiAgICB9LAogICAgcGF0aENvbnRyb2xzOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9LAogICAgc2VhcmNoYWJsZTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIGxheWVyQ29udHJvbDogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIHRvb2x0aXBzOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IHRydWUKICAgIH0sCiAgICBoZWxwTW9kZTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIHJlbmRlckF0TW91bnRlZDogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiB0cnVlCiAgICB9LAogICAgZGlzcGxheU1pbmltYXA6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICBkaXNwbGF5V2FybmluZzogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIHdhcm5pbmdNZXNzYWdlOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIkJldGEgZmVhdHVyZSAtIFRoaXMgbWFwIGlzIGJhc2VkIG9uIHRoZSBjb25uZWN0aXZpdHkgb2YgYSByYXQuIE5ldyBjb25uZWN0aXZpdHkgYW5kIHNwZWNpZXMgc3BlY2lmaWNpdHkgd2lsbCBiZSBhZGRlZCBhcyB0aGUgU1BBUkMgcHJvZ3JhbSBwcm9ncmVzcy4iCiAgICB9LAogICAgaXNMZWdhY3k6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UKICAgIH0sCiAgICBkaXNwbGF5TGF0ZXN0Q2hhbmdlczogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZQogICAgfSwKICAgIGxhdGVzdENoYW5nZXNNZXNzYWdlOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogIlNlYXJjaCBub3cgcHJvdmlkZSBzdWdnZXN0ZWQgdGVybXMuIEFkZCBuZXcgbGVnZW5kcy4gTmV3IHRpbGVzZXRzLiBOZXcgZmVtYWxlIG1hcC4gSW1wcm92ZSB1cHN0cmVhbSBkb3duc3RyZWFtIGluZm9ybWF0aW9uIgogICAgfSwKICAgIC8qKgogICAgICogU3RhdGUgY29udGFpbmluZyBzdGF0ZSBvZiB0aGUgZmxhdG1hcC4KICAgICAqLwogICAgc3RhdGU6IHsKICAgICAgdHlwZTogT2JqZWN0LAogICAgICBkZWZhdWx0OiB1bmRlZmluZWQKICAgIH0sCiAgICAvKioKICAgICAqIFNwZWNpZnkgdGhlIGVuZHBvaW50IG9mIHRoZSBmbGF0bWFwIHNlcnZlci4KICAgICAqLwogICAgZmxhdG1hcEFQSTogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICJodHRwczovL21hcGNvcmUtZGVtby5vcmcvY3VycmVudC9mbGF0bWFwL3YzLyIKICAgIH0sCiAgICBzcGFyY0FQSTogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICJodHRwczovL2FwaS5zcGFyYy5zY2llbmNlLyIKICAgIH0KICB9LAogIHByb3ZpZGU6IGZ1bmN0aW9uIHByb3ZpZGUoKSB7CiAgICByZXR1cm4gewogICAgICBzcGFyY0FQSTogdGhpcy5zcGFyY0FQSSwKICAgICAgZmxhdG1hcEFQSTogdGhpcy5mbGF0bWFwQVBJCiAgICB9OwogIH0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIGxheWVyczogW10sCiAgICAgIHBhdGh3YXlzOiBbXSwKICAgICAgc2NrYW5EaXNwbGF5OiBbewogICAgICAgIGxhYmVsOiAiRGlzcGxheSBQYXRoIHdpdGggU0NLQU4iLAogICAgICAgIGtleTogIlZBTElEIgogICAgICB9XSwKICAgICAgY2VudHJlTGluZXM6IFt7CiAgICAgICAgbGFiZWw6ICJEaXNwbGF5IE5lcnZlcyIsCiAgICAgICAga2V5OiAiY2VudHJlbGluZXMiLAogICAgICAgIGVuYWJsZWQ6IGZhbHNlCiAgICAgIH1dLAogICAgICBzeXN0ZW1zOiBbXSwKICAgICAgcGF0aHdheXNNYXhIZWlnaHQ6IDEwMDAsCiAgICAgIGhvdmVyVmlzaWJpbGl0aWVzOiBbewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogZmFsc2UKICAgICAgfSwgewogICAgICAgIHZhbHVlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IGZhbHNlCiAgICAgIH1dLAogICAgICBpc0ZDOiBmYWxzZSwKICAgICAgaW5IZWxwOiBmYWxzZSwKICAgICAgY3VycmVudEJhY2tncm91bmQ6ICJ3aGl0ZSIsCiAgICAgIGF2YWlsYWJsZUJhY2tncm91bmQ6IFsid2hpdGUiLCAibGlnaHRza3libHVlIiwgImJsYWNrIl0sCiAgICAgIGxvYWRpbmc6IGZhbHNlLAogICAgICBmbGF0bWFwTWFya2VyOiBmbGF0bWFwTWFya2VyLAogICAgICB0b29sdGlwRW50cnk6IGNyZWF0ZVVuZmlsbGVkVG9vbHRpcERhdGEoKSwKICAgICAgY29ubmVjdGl2aXR5VG9vbHRpcFZpc2libGU6IGZhbHNlLAogICAgICByZXNvdXJjZUZvclRvb2x0aXA6IHVuZGVmaW5lZCwKICAgICAgZHJhd2VyT3BlbjogZmFsc2UsCiAgICAgIGNvbG91clJhZGlvOiB0cnVlLAogICAgICBvdXRsaW5lc1JhZGlvOiB0cnVlLAogICAgICBtaW5pbWFwUmVzaXplU2hvdzogZmFsc2UsCiAgICAgIG1pbmltYXBTbWFsbDogZmFsc2UKICAgIH07CiAgfSwKICB3YXRjaDogewogICAgZW50cnk6IGZ1bmN0aW9uIGVudHJ5KCkgewogICAgICBpZiAoIXRoaXMuc3RhdGUpIHRoaXMuY3JlYXRlRmxhdG1hcCgpOwogICAgfSwKICAgIGhlbHBNb2RlOiBmdW5jdGlvbiBoZWxwTW9kZSh2YWwpIHsKICAgICAgdGhpcy5zZXRIZWxwTW9kZSh2YWwpOwogICAgfSwKICAgIHN0YXRlOiB7CiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZXIoc3RhdGUpIHsKICAgICAgICB0aGlzLnNldFN0YXRlKHN0YXRlKTsKICAgICAgfSwKICAgICAgaW1tZWRpYXRlOiB0cnVlLAogICAgICBkZWVwOiB0cnVlCiAgICB9CiAgfSwKICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgdmFyIGZsYXRtYXAgPSByZXF1aXJlKCJAYWJpLXNvZnR3YXJlL2ZsYXRtYXAtdmlld2VyIik7CiAgICB0aGlzLm1hcE1hbmFnZXIgPSBuZXcgZmxhdG1hcC5NYXBNYW5hZ2VyKHRoaXMuZmxhdG1hcEFQSSk7CiAgICBpZiAodGhpcy5yZW5kZXJBdE1vdW50ZWQpIHRoaXMuY3JlYXRlRmxhdG1hcCgpOwogICAgdGhpcy5mbGF0bWFwUXVlcmllcyA9IG5ldyBGbGF0bWFwUXVlcmllcygpOwogICAgdGhpcy5mbGF0bWFwUXVlcmllcy5pbml0aWFsaXNlKHRoaXMuc3BhcmNBUEksIHRoaXMuZmxhdG1hcEFQSSk7CiAgfQp9Ow=="},{"version":3,"names":["Vue","Tooltip","SelectionsGroup","MapSvgIcon","MapSvgSpriteColor","SvgLegends","lang","locale","flatmapMarker","FlatmapQueries","use","_Col","_Loading","directive","_Radio","_RadioGroup","_Row","ResizeSensor","require","createUnfilledTooltipData","destinations","origins","components","destinationsWithDatasets","originsWithDatasets","componentsWithDatasets","resource","undefined","name","beforeCreate","mapManager","mapImp","methods","viewLatestMap","biologicalSex","entry","state","viewport","getState","$emit","backgroundChangeCallback","colour","currentBackground","setBackgroundColour","toggleDrawer","drawerOpen","setColour","flag","colourRadio","outline","outlinesRadio","setOutlines","outlineRadio","resetView","resetMap","$refs","centrelinesSelection","reset","skcanSelection","layersSelection","systemsSelection","pathwaysSelection","zoomIn","zoomOut","centreLinesSelected","payload","enableCentrelines","value","sckanSelected","enableSckanPath","key","checkAllSCKAN","_this","keys","forEach","systemSelected","enableSystem","checkAllSystems","_this2","layersSelected","enableLayer","checkAllLayers","_this3","pathwaysSelected","enablePath","checkAllPathways","_this4","enablePanZoomEvents","eventCallback","_this5","eventType","data","label","models","taxonomy","_len","arguments","length","args","Array","_key","dataset","feature","userData","type","checkAndCreatePopups","_checkAndCreatePopups","_asyncToGenerator","_regeneratorRuntime","mark","_callee","results","wrap","_callee$","_context","prev","next","flatmapQueries","retrieveFlatmapKnowledgeForEvent","sent","hyperlinks","resourceForTooltip","createTooltipFromNeuronCuration","stop","_x","apply","popUpCssHacks","ftooltip","document","querySelector","style","display","tooltip","$el","onclick","resourceSelected","action","tooltipEntry","createTooltipData","displayTooltip","showPopup","featureId","node","options","myOptions","className","positionAtLastClick","showMarkerPopup","closeMinimap","minimapEl","flatmapContainer","minimapSmall","classList","add","remove","addResizeButtonToMinimap","minimapResize","parentNode","removeChild","appendChild","minimapResizeShow","setHelpMode","helpMode","inHelp","hoverVisibilities","item","openFlatmapHelpPopup","closeFlatmapHelpPopup","showToolitip","tooltipNumber","_this6","tooltipWait","setTimeout","hideToolitip","clearTimeout","modelFeatureIds","heartId","featureIdsForModel","elm","anchor","querySelectorAll","click","getLabels","labels","annotations","_iterator","_createForOfIteratorHelper","values","_step","s","n","done","push","err","e","f","from","Set","identifier","getIdentifier","uuid","setState","createFlatmap","restoreMapState","searchTerm","searchAndShowResult","_this7","loading","minimap","displayMinimap","position","taxon","promise1","loadMap","featureInfo","minZoom","layerControl","pathControls","searchable","tooltips","then","returnedObject","onFlatmapReady","_stateToBeSet","computePathControlsMaximumHeight","elem","computed","getComputedStyle","padding","parseInt","paddingTop","paddingBottom","height","clientHeight","pathwaysMaxHeight","mapResize","resize","showMinimap","_minimap","_unused","console","error","sensor","isFC","setBackgroundOpacity","pathways","pathTypes","systems","getSystems","showPathwaysDrawer","term","displayLabel","clearSearchResults","searchResults","search","showSearchResults","text","searchSuggestions","props","String","default","Boolean","Number","renderAtMounted","displayWarning","warningMessage","isLegacy","displayLatestChanges","latestChangesMessage","Object","flatmapAPI","sparcAPI","provide","layers","sckanDisplay","centreLines","enabled","availableBackground","connectivityTooltipVisible","watch","val","handler","immediate","deep","mounted","flatmap","MapManager","initialise"],"sources":["node_modules/@abi-software/flatmapvuer/src/components/FlatmapVuer.vue"],"sourcesContent":["\n \n \n \n \n \n \n \n \n \n Legacy Map\n Click here for the latest map\n \n \n Beta\n \n \n \n \n \n What's new?\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n Fit to\n \n window\n \n \n \n \n \n \n \n \n \n \n 0\"\n title=\"Systems\"\n labelKey=\"name\"\n identifierKey=\"id\"\n :selections=\"systems\"\n colourStyle=\"background\"\n @changed=\"systemSelected\"\n @checkAll=\"checkAllSystems\"\n ref=\"systemsSelection\"\n key=\"systemsSelection\"\n />\n 0\"\n title=\"Nerves\"\n labelKey=\"label\"\n identifierKey=\"key\"\n :selections=\"centreLines\"\n @changed=\"centreLinesSelected\"\n ref=\"centrelinesSelection\"\n key=\"centrelinesSelection\"\n />\n \n 0\"\n title=\"Pathways\"\n labelKey=\"label\"\n identifierKey=\"type\"\n colourStyle=\"line\"\n :selections=\"pathways\"\n @changed=\"pathwaysSelected\"\n @checkAll=\"checkAllPathways\"\n ref=\"pathwaysSelection\"\n key=\"pathwaysSelection\"\n />\n \n \n \n \n \n \n Organs display\n \n \n Colour\n Greyscale\n \n \n \n Outlines display\n \n \n Show\n Hide\n \n \n \n Change background\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4RA;AACA,OAAAA,GAAA;AACA,OAAAC,OAAA;AACA,OAAAC,eAAA;AACA,SAAAC,UAAA,EAAAC,iBAAA;AACA,OAAAC,UAAA;AAQA,OAAAC,IAAA;AACA,OAAAC,MAAA;AACA,OAAAC,aAAA;AACA,SAAAC,cAAA;AAEAF,MAAA,CAAAG,GAAA,CAAAJ,IAAA;AACAN,GAAA,CAAAU,GAAA,CAAAC,IAAA;AACAX,GAAA,CAAAU,GAAA,CAAAE,QAAA,CAAAC,SAAA;AACAb,GAAA,CAAAU,GAAA,CAAAI,MAAA;AACAd,GAAA,CAAAU,GAAA,CAAAK,WAAA;AACAf,GAAA,CAAAU,GAAA,CAAAM,IAAA;AACA,IAAAC,YAAA,GAAAC,OAAA;AAEA,IAAAC,yBAAA,YAAAA,0BAAA;EACA;IACAC,YAAA;IACAC,OAAA;IACAC,UAAA;IACAC,wBAAA;IACAC,mBAAA;IACAC,sBAAA;IACAC,QAAA,EAAAC;EACA;AACA;AAEA;EACAC,IAAA;EACAN,UAAA;IACAnB,UAAA,EAAAA,UAAA;IACAC,iBAAA,EAAAA,iBAAA;IACAH,OAAA,EAAAA,OAAA;IACAC,eAAA,EAAAA,eAAA;IACAG,UAAA,EAAAA;EACA;EACAwB,YAAA,WAAAA,aAAA;IACA,KAAAC,UAAA,GAAAH,SAAA;IACA,KAAAI,MAAA,GAAAJ,SAAA;EACA;EACAK,OAAA;IACAC,aAAA,WAAAA,cAAA;MACA,IAAAC,aAAA,QAAAA,aAAA,QAAAA,aAAA,GAAAP,SAAA;MACA;MACA,SAAAQ,KAAA;QACAD,aAAA;MACA;MACA,IAAAE,KAAA;QACAD,KAAA,OAAAA,KAAA;QACAD,aAAA,EAAAA,aAAA;QACAG,QAAA,OAAAN,MAAA,CAAAO,QAAA;MACA;MACA,KAAAC,KAAA,oBAAAH,KAAA;IACA;IACAI,wBAAA,WAAAA,yBAAAC,MAAA;MACA,KAAAC,iBAAA,GAAAD,MAAA;MACA,SAAAV,MAAA;QACA,KAAAA,MAAA,CAAAY,mBAAA,MAAAD,iBAAA;MACA;IACA;IACAE,YAAA,WAAAA,aAAA;MACA,KAAAC,UAAA,SAAAA,UAAA;IACA;IACA;AACA;AACA;IACAC,SAAA,WAAAA,UAAAC,IAAA;MACA,KAAAC,WAAA,GAAAD,IAAA;MACA,SAAAhB,MAAA;QACA,KAAAA,MAAA,CAAAe,SAAA;UAAAL,MAAA,EAAAM,IAAA;UAAAE,OAAA,OAAAC;QAAA;MACA;IACA;IACA;AACA;AACA;IACAC,WAAA,WAAAA,YAAAJ,IAAA;MACA,KAAAK,YAAA,GAAAL,IAAA;MACA,SAAAhB,MAAA;QACA,KAAAA,MAAA,CAAAe,SAAA;UAAAL,MAAA,OAAAO,WAAA;UAAAC,OAAA,EAAAF;QAAA;MACA;IACA;IACA;AACA;AACA;AACA;IACAM,SAAA,WAAAA,UAAA;MACA,SAAAtB,MAAA;QACA,KAAAA,MAAA,CAAAuB,QAAA;QACA,SAAAC,KAAA,CAAAC,oBAAA;UACA,KAAAD,KAAA,CAAAC,oBAAA,CAAAC,KAAA;QACA;QACA,SAAAF,KAAA,CAAAG,cAAA;UACA,KAAAH,KAAA,CAAAG,cAAA,CAAAD,KAAA;QACA;QACA,SAAAF,KAAA,CAAAI,eAAA;UACA,KAAAJ,KAAA,CAAAI,eAAA,CAAAF,KAAA;QACA;QACA,SAAAF,KAAA,CAAAK,gBAAA;UACA,KAAAL,KAAA,CAAAM,iBAAA,CAAAJ,KAAA;QACA;QACA,SAAAF,KAAA,CAAAM,iBAAA;UACA,KAAAN,KAAA,CAAAM,iBAAA,CAAAJ,KAAA;QACA;MACA;IACA;IACA;AACA;AACA;AACA;IACAK,MAAA,WAAAA,OAAA;MACA,SAAA/B,MAAA;QACA,KAAAA,MAAA,CAAA+B,MAAA;MACA;IACA;IACA;AACA;AACA;AACA;IACAC,OAAA,WAAAA,QAAA;MACA,SAAAhC,MAAA;QACA,KAAAA,MAAA,CAAAgC,OAAA;MACA;IACA;IACAC,mBAAA,WAAAA,oBAAAC,OAAA;MACA,SAAAlC,MAAA;QACA,KAAAA,MAAA,CAAAmC,iBAAA,CAAAD,OAAA,CAAAE,KAAA;MACA;IACA;IACAC,aAAA,WAAAA,cAAAH,OAAA;MACA,SAAAlC,MAAA;QACA,KAAAA,MAAA,CAAAsC,eAAA,CAAAJ,OAAA,CAAAK,GAAA,EAAAL,OAAA,CAAAE,KAAA;MACA;IACA;IACAI,aAAA,WAAAA,cAAAN,OAAA;MAAA,IAAAO,KAAA;MACA,SAAAzC,MAAA;QACAkC,OAAA,CAAAQ,IAAA,CAAAC,OAAA,WAAAJ,GAAA;UAAA,OAAAE,KAAA,CAAAzC,MAAA,CAAAsC,eAAA,CAAAC,GAAA,EAAAL,OAAA,CAAAE,KAAA;QAAA;MACA;IACA;IACAQ,cAAA,WAAAA,eAAAV,OAAA;MACA,SAAAlC,MAAA;QACA,KAAAA,MAAA,CAAA6C,YAAA,CAAAX,OAAA,CAAAK,GAAA,EAAAL,OAAA,CAAAE,KAAA;MACA;IACA;IACAU,eAAA,WAAAA,gBAAAZ,OAAA;MAAA,IAAAa,MAAA;MACA,SAAA/C,MAAA;QACAkC,OAAA,CAAAQ,IAAA,CAAAC,OAAA,WAAAJ,GAAA;UAAA,OAAAQ,MAAA,CAAA/C,MAAA,CAAA6C,YAAA,CAAAN,GAAA,EAAAL,OAAA,CAAAE,KAAA;QAAA;MACA;IACA;IACAY,cAAA,WAAAA,eAAAd,OAAA;MACA,SAAAlC,MAAA;QACA,KAAAA,MAAA,CAAAiD,WAAA,CAAAf,OAAA,CAAAK,GAAA,EAAAL,OAAA,CAAAE,KAAA;MACA;IACA;IACAc,cAAA,WAAAA,eAAAhB,OAAA;MAAA,IAAAiB,MAAA;MACA,SAAAnD,MAAA;QACAkC,OAAA,CAAAQ,IAAA,CAAAC,OAAA,WAAAJ,GAAA;UAAA,OAAAY,MAAA,CAAAnD,MAAA,CAAAiD,WAAA,CAAAV,GAAA,EAAAL,OAAA,CAAAE,KAAA;QAAA;MACA;IACA;IACAgB,gBAAA,WAAAA,iBAAAlB,OAAA;MACA,SAAAlC,MAAA;QACA,KAAAA,MAAA,CAAAqD,UAAA,CAAAnB,OAAA,CAAAK,GAAA,EAAAL,OAAA,CAAAE,KAAA;MACA;IACA;IACAkB,gBAAA,WAAAA,iBAAApB,OAAA;MAAA,IAAAqB,MAAA;MACA,SAAAvD,MAAA;QACAkC,OAAA,CAAAQ,IAAA,CAAAC,OAAA,WAAAJ,GAAA;UAAA,OAAAgB,MAAA,CAAAvD,MAAA,CAAAqD,UAAA,CAAAd,GAAA,EAAAL,OAAA,CAAAE,KAAA;QAAA;MACA;IACA;IACAoB,mBAAA,WAAAA,oBAAAxC,IAAA;MACA,KAAAhB,MAAA,CAAAwD,mBAAA,CAAAxC,IAAA;IACA;IACAyC,aAAA,WAAAA,cAAA;MAAA,IAAAC,MAAA;MACA,iBAAAC,SAAA,EAAAC,IAAA;QACA,IAAAD,SAAA;UACA,IAAAE,KAAA,GAAAD,IAAA,CAAAC,KAAA;UACA,IAAAlE,QAAA,IAAAiE,IAAA,CAAAE,MAAA;UACA,IAAAC,QAAA,GAAAL,MAAA,CAAAtD,KAAA;UACA,IAAAD,aAAA,GAAAuD,MAAA,CAAAvD,aAAA;UAAA,SAAA6D,IAAA,GAAAC,SAAA,CAAAC,MAAA,EALAC,IAAA,OAAAC,KAAA,CAAAJ,IAAA,OAAAA,IAAA,WAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;YAAAF,IAAA,CAAAE,IAAA,QAAAJ,SAAA,CAAAI,IAAA;UAAA;UAMA,IAAAnC,OAAA;YACAoC,OAAA,EAAAV,IAAA,CAAAU,OAAA;YACAnE,aAAA,EAAAA,aAAA;YACA4D,QAAA,EAAAA,QAAA;YACApE,QAAA,EAAAA,QAAA;YACAkE,KAAA,EAAAA,KAAA;YACAU,OAAA,EAAAX,IAAA;YACAY,QAAA,EAAAL,IAAA;YACAR,SAAA,EAAAA;UACA;UACA,IAAAC,IAAA,IAAAA,IAAA,CAAAa,IAAA,iBAAAd,SAAA;YACAD,MAAA,CAAAgB,oBAAA,CAAAxC,OAAA;UACA;UACAwB,MAAA,CAAAlD,KAAA,sBAAA0B,OAAA;QACA;UACAwB,MAAA,CAAAlD,KAAA,sBAAAoD,IAAA;QACA;MACA;IACA;IACA;IACAc,oBAAA;MAAA,IAAAC,qBAAA,GAAAC,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,UAAAC,QAAAnB,IAAA;QAAA,IAAAoB,OAAA;QAAA,OAAAH,mBAAA,GAAAI,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cAAAF,QAAA,CAAAE,IAAA;cAAA,OAEA,KAAAC,cAAA,CAAAC,gCAAA,CAAA3B,IAAA;YAAA;cAAAoB,OAAA,GAAAG,QAAA,CAAAK,IAAA;cACA,KAAAR,OAAA;gBACA,IAAApB,IAAA,CAAAW,OAAA,CAAAkB,UAAA,IAAA7B,IAAA,CAAAW,OAAA,CAAAkB,UAAA,CAAAvB,MAAA;kBACA,KAAAwB,kBAAA,GAAA9B,IAAA,CAAAjE,QAAA;kBACA,KAAAgG,+BAAA,CAAA/B,IAAA;gBACA;cACA;gBACA,KAAA8B,kBAAA,GAAA9B,IAAA,CAAAjE,QAAA;gBACA,KAAAgG,+BAAA,CAAA/B,IAAA;cACA;YAAA;YAAA;cAAA,OAAAuB,QAAA,CAAAS,IAAA;UAAA;QAAA,GAAAb,OAAA;MAAA,CACA;MAAA,SAAAL,qBAAAmB,EAAA;QAAA,OAAAlB,qBAAA,CAAAmB,KAAA,OAAA7B,SAAA;MAAA;MAAA,OAAAS,oBAAA;IAAA;IACAqB,aAAA,WAAAA,cAAA;MACA;MACA,IAAAC,QAAA,GAAAC,QAAA,CAAAC,aAAA;MACA,IAAAF,QAAA,EAAAA,QAAA,CAAAG,KAAA,CAAAC,OAAA;MACAH,QAAA,CAAAC,aAAA,iCAAAC,KAAA,CAAAC,OAAA,GACA;MACA,KAAA5E,KAAA,CAAA6E,OAAA,CAAAC,GAAA,CAAAH,KAAA,CAAAC,OAAA;MACAH,QAAA,CAAAC,aAAA,iCAAAK,OAAA;QACAN,QAAA,CAAAC,aAAA,2BAAAC,KAAA,CAAAC,OAAA,GACA;MACA;IACA;IACAI,gBAAA,WAAAA,iBAAAC,MAAA;MACA,KAAAjG,KAAA,sBAAAiG,MAAA;IACA;IACAd,+BAAA,WAAAA,gCAAA/B,IAAA;MACA,KAAA8C,YAAA,QAAApB,cAAA,CAAAqB,iBAAA,CAAA/C,IAAA;MACA,KAAAgD,cAAA;IACA;IACA;IACAC,SAAA,WAAAA,UAAAC,SAAA,EAAAC,IAAA,EAAAC,OAAA;MACA,IAAAC,SAAA,GAAAD,OAAA;MACA,SAAAhH,MAAA;QACA,IAAAiH,SAAA;UACA,KAAAA,SAAA,CAAAC,SAAA,EAAAD,SAAA,CAAAC,SAAA;QACA;UACAD,SAAA;YAAAC,SAAA;YAAAC,mBAAA;UAAA;QACA;QACA,KAAAnH,MAAA,CAAA6G,SAAA,CAAAC,SAAA,EAAAC,IAAA,EAAAE,SAAA;MACA;IACA;IACAG,eAAA,WAAAA,gBAAAN,SAAA,EAAAC,IAAA,EAAAC,OAAA;MACA,SAAAhH,MAAA;QACA,KAAAA,MAAA,CAAAoH,eAAA,CAAAN,SAAA,EAAAC,IAAA,EAAAC,OAAA;MACA;IACA;IACAK,YAAA,WAAAA,aAAA;MACA,IAAAC,SAAA,QAAA9F,KAAA,CAAA+F,gBAAA,CAAArB,aAAA;MACA,SAAAsB,YAAA;QAAA;QACAF,SAAA,CAAAG,SAAA,CAAAC,GAAA;QACAJ,SAAA,CAAAG,SAAA,CAAAE,MAAA;MACA;QACAL,SAAA,CAAAG,SAAA,CAAAC,GAAA;QACAJ,SAAA,CAAAG,SAAA,CAAAE,MAAA;MACA;MACA,KAAAH,YAAA,SAAAA,YAAA;IACA;IACAI,wBAAA,WAAAA,yBAAA;MACA,IAAAN,SAAA,QAAA9F,KAAA,CAAA+F,gBAAA,CAAArB,aAAA;MACA,IAAAoB,SAAA;QACA,KAAA9F,KAAA,CAAAqG,aAAA,CAAAC,UAAA,CAAAC,WAAA,MAAAvG,KAAA,CAAAqG,aAAA;QACAP,SAAA,CAAAU,WAAA,MAAAxG,KAAA,CAAAqG,aAAA;QACA,KAAAI,iBAAA;MACA;IACA;IACAC,WAAA,WAAAA,YAAAC,QAAA;MACA,IAAAA,QAAA;QACA,KAAAC,MAAA;QACA,KAAAC,iBAAA,CAAA1F,OAAA,WAAA2F,IAAA;UACAA,IAAA,CAAAlG,KAAA;QACA;QACA,KAAAmG,oBAAA;MACA;QACA,KAAAH,MAAA;QACA,KAAAC,iBAAA,CAAA1F,OAAA,WAAA2F,IAAA;UACAA,IAAA,CAAAlG,KAAA;QACA;QACA,KAAAoG,qBAAA;MACA;IACA;IACAC,YAAA,WAAAA,aAAAC,aAAA;MAAA,IAAAC,MAAA;MACA,UAAAP,MAAA;QACA,KAAAQ,WAAA,GAAAC,UAAA;UACAF,MAAA,CAAAN,iBAAA,CAAAK,aAAA,EAAAtG,KAAA;QACA;MACA;IACA;IACA0G,YAAA,WAAAA,aAAAJ,aAAA;MACA,UAAAN,MAAA;QACA,KAAAC,iBAAA,CAAAK,aAAA,EAAAtG,KAAA;QACA2G,YAAA,MAAAH,WAAA;MACA;IACA;IACAhC,cAAA,WAAAA,eAAA;MACA,KAAA5G,MAAA,CAAA6G,SAAA,CACA,KAAA7G,MAAA,CAAAgJ,eAAA,MAAAtD,kBAAA,MACA,KAAAlE,KAAA,CAAA6E,OAAA,CAAAC,GAAA,EACA;QAAAY,SAAA;QAAAC,mBAAA;MAAA,EACA;MACA,KAAApB,aAAA;IACA;IACAwC,oBAAA,WAAAA,qBAAA;MACA,SAAAvI,MAAA;QACA,IAAAiJ,OAAA,QAAAjJ,MAAA,CAAAkJ,kBAAA;QACA,IAAAC,GAAA;QACA,KAAAnJ,MAAA,CAAA6G,SAAA,CAAAoC,OAAA,EAAAE,GAAA;UACAC,MAAA;UACAlC,SAAA;QACA;MACA;IACA;IACAsB,qBAAA,WAAAA,sBAAA;MACA,KAAAlC,GAAA,CACA+C,gBAAA,iCACA1G,OAAA,WAAA2F,IAAA;QACAA,IAAA,CAAAgB,KAAA;MACA;IACA;IACAC,SAAA,WAAAA,UAAA;MACA,IAAAC,MAAA;MACA,SAAAxJ,MAAA;QACA,IAAAyJ,WAAA,QAAAzJ,MAAA,CAAAyJ,WAAA;QAAA,IAAAC,SAAA,GAAAC,0BAAA,CACAF,WAAA,CAAAG,MAAA;UAAAC,KAAA;QAAA;UAAA,KAAAH,SAAA,CAAAI,CAAA,MAAAD,KAAA,GAAAH,SAAA,CAAAK,CAAA,IAAAC,IAAA;YAAA,IAAA5H,KAAA,GAAAyH,KAAA,CAAAzH,KAAA;YACA,IAAAA,KAAA,CAAAyB,KAAA,EAAA2F,MAAA,CAAAS,IAAA,CAAA7H,KAAA,CAAAyB,KAAA;UACA;QAAA,SAAAqG,GAAA;UAAAR,SAAA,CAAAS,CAAA,CAAAD,GAAA;QAAA;UAAAR,SAAA,CAAAU,CAAA;QAAA;QACA,OAAAhG,KAAA,CAAAiG,IAAA,KAAAC,GAAA,CAAAd,MAAA;MACA;IACA;IACAjJ,QAAA,WAAAA,SAAA;MACA,SAAAP,MAAA;QACA,IAAAK,KAAA;UACAD,KAAA,OAAAA,KAAA;UACAE,QAAA,OAAAN,MAAA,CAAAO,QAAA;QACA;QACA,IAAAgK,UAAA,QAAAvK,MAAA,CAAAwK,aAAA;QACA,SAAArK,aAAA,EACAE,KAAA,yBAAAF,aAAA,MACA,IAAAoK,UAAA,IAAAA,UAAA,CAAApK,aAAA,EACAE,KAAA,oBAAAkK,UAAA,CAAApK,aAAA;QACA,IAAAoK,UAAA,IAAAA,UAAA,CAAAE,IAAA,EACApK,KAAA,WAAAkK,UAAA,CAAAE,IAAA;QACA,OAAApK,KAAA;MACA;MACA,OAAAT,SAAA;IACA;IACA8K,QAAA,WAAAA,SAAArK,KAAA;MACA,IAAAA,KAAA;QACA,SAAAL,MAAA,IACAK,KAAA,CAAAD,KAAA,SAAAA,KAAA,IAAAC,KAAA,CAAAD,KAAA,KACA,CAAAC,KAAA,CAAAF,aAAA,IAAAE,KAAA,CAAAF,aAAA,UAAAA,aAAA,GACA;UACA,IAAAE,KAAA,CAAAC,QAAA;YACA,KAAAN,MAAA,CAAA0K,QAAA,CAAArK,KAAA,CAAAC,QAAA;UACA;QACA;UACA,KAAAqK,aAAA,CAAAtK,KAAA;QACA;MACA;IACA;IACAuK,eAAA,WAAAA,gBAAAvK,KAAA;MACA,IAAAA,KAAA;QACA,IAAAA,KAAA,CAAAC,QAAA,EACA,KAAAN,MAAA,CAAA0K,QAAA,CAAArK,KAAA,CAAAC,QAAA;QACA,IAAAD,KAAA,CAAAwK,UAAA,EACA,KAAAC,mBAAA,CAAAzK,KAAA,CAAAwK,UAAA;MACA;IACA;IACAF,aAAA,WAAAA,cAAAtK,KAAA;MAAA,IAAA0K,MAAA;MACA,UAAA/K,MAAA,UAAAgL,OAAA;QACA,KAAAA,OAAA;QACA,IAAAC,OAAA;QACA,SAAAC,cAAA;UACAD,OAAA;YAAAE,QAAA;UAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA,IAAAZ,UAAA;UAAAa,KAAA,OAAAhL;QAAA;QACA;QACA,IAAAC,KAAA;UACA,IAAAA,KAAA,CAAAoK,IAAA;YACAF,UAAA;cAAAE,IAAA,EAAApK,KAAA,CAAAoK;YAAA;UACA,WAAApK,KAAA,CAAAD,KAAA;YACAmK,UAAA,CAAAa,KAAA,GAAA/K,KAAA,CAAAD,KAAA;YACA,IAAAC,KAAA,CAAAF,aAAA;cACAoK,UAAA,oBAAAlK,KAAA,CAAAF,aAAA;YACA,WAAAoK,UAAA,CAAAa,KAAA;cACA;cACAb,UAAA;YACA;UACA;QACA;UACA;UACA;UACA,SAAApK,aAAA;YACAoK,UAAA,yBAAApK,aAAA;UACA;QACA;QAEA,IAAAkL,QAAA,QAAAtL,UAAA,CAAAuL,OAAA,CACAf,UAAA,EACA,KAAA/I,KAAA,CAAA4E,OAAA,EACA,KAAA3C,aAAA,IACA;UACA;UACA;UACA;UACA8H,WAAA,OAAAA,WAAA;UACA,iBAAAC,OAAA;UACAC,YAAA;UACAC,YAAA;UACAC,UAAA,OAAAA,UAAA;UACAC,QAAA,OAAAA,QAAA;UACAX,OAAA,EAAAA;QACA,EACA;QACAI,QAAA,CAAAQ,IAAA,WAAAC,cAAA;UACAf,MAAA,CAAA/K,MAAA,GAAA8L,cAAA;UACAf,MAAA,CAAAgB,cAAA;UACA,IAAAhB,MAAA,CAAAiB,aAAA,EACAjB,MAAA,CAAAH,eAAA,CAAAG,MAAA,CAAAiB,aAAA,OACA;YACAjB,MAAA,CAAAH,eAAA,CAAAvK,KAAA;UACA;QACA;MACA,WAAAA,KAAA;QACA,KAAA2L,aAAA;UAAA1L,QAAA,EAAAD,KAAA,CAAAC,QAAA;UAAAuK,UAAA,EAAAxK,KAAA,CAAAwK;QAAA;QACA,SAAA7K,MAAA,UAAAgL,OAAA,EACA,KAAAJ,eAAA,MAAAoB,aAAA;MACA;IACA;IACAC,gCAAA,WAAAA,iCAAA;MACA,IAAAC,IAAA,QAAA1K,KAAA,CAAA4E,OAAA;MACA,IAAA8F,IAAA;QACA,IAAAC,QAAA,GAAAC,gBAAA,CAAAF,IAAA;QACA,IAAAG,OAAA,GAAAC,QAAA,CAAAH,QAAA,CAAAI,UAAA,IAAAD,QAAA,CAAAH,QAAA,CAAAK,aAAA;QACA,IAAAC,MAAA,GAAAP,IAAA,CAAAQ,YAAA,GAAAL,OAAA;QACA,KAAAM,iBAAA,GAAAF,MAAA;MACA;IACA;IACAG,SAAA,WAAAA,UAAA;MACA;QACA,SAAA5M,MAAA;UACA,KAAAA,MAAA,CAAA6M,MAAA;UACA,KAAAC,WAAA,MAAA5B,cAAA;UACA,SAAAlL,MAAA,CAAA+M,QAAA;YACA,KAAA/M,MAAA,CAAA+M,QAAA,CAAAF,MAAA;UACA;QACA;QACA,KAAAZ,gCAAA;MACA,SAAAe,OAAA;QACAC,OAAA,CAAAC,KAAA;MACA;IACA;IACAnB,cAAA,WAAAA,eAAA;MACA;MACA,KAAAoB,MAAA,OAAAjO,YAAA,CACA,KAAAsC,KAAA,CAAA4E,OAAA,EACA,KAAAwG,SAAA,CACA;MACA,SAAA5M,MAAA,CAAAgH,OAAA,SAAAhH,MAAA,CAAAgH,OAAA,CAAAb,KAAA;QACA,KAAAiH,IAAA;MACA;MACA,KAAApN,MAAA,CAAAqN,oBAAA;MACA,KAAA5M,wBAAA,MAAAE,iBAAA;MACA,KAAA2M,QAAA,QAAAtN,MAAA,CAAAuN,SAAA;MACA,KAAAvN,MAAA,CAAAmC,iBAAA;MACA;MACA;MACA,KAAAqL,OAAA,QAAAxN,MAAA,CAAAyN,UAAA;MACA,KAAA7F,wBAAA;MACA,KAAAoD,OAAA;MACA,KAAAiB,gCAAA;MACA,KAAAnL,UAAA;MACA,KAAA8L,SAAA;MACA,KAAApM,KAAA;IACA;IACAsM,WAAA,WAAAA,YAAA9L,IAAA;MACA,SAAAhB,MAAA,EACA,KAAAA,MAAA,CAAA8M,WAAA,CAAA9L,IAAA;IACA;IACA0M,kBAAA,WAAAA,mBAAA1M,IAAA;MACA,KAAAF,UAAA,GAAAE,IAAA;IACA;IACA;AACA;AACA;AACA;IACA8J,mBAAA,WAAAA,oBAAA6C,IAAA,EAAAC,YAAA;MACA,SAAA5N,MAAA;QACA,IAAA2N,IAAA,KAAA/N,SAAA,IAAA+N,IAAA;UACA,KAAA3N,MAAA,CAAA6N,kBAAA;UACA;QACA;UACA,IAAAC,aAAA,QAAA9N,MAAA,CAAA+N,MAAA,CAAAJ,IAAA;UACA,IAAAG,aAAA,IAAAA,aAAA,CAAA9I,OAAA,IACA8I,aAAA,CAAA9I,OAAA,CAAAd,MAAA;YACA,KAAAlE,MAAA,CAAAgO,iBAAA,CAAAF,aAAA;YACA,IAAAF,YAAA,IACAE,aAAA,CAAA9I,OAAA,IAAA8B,SAAA,IACAgH,aAAA,CAAA9I,OAAA,IAAAiJ,IAAA;cACA,KAAAjO,MAAA,CAAA6G,SAAA,CACAiH,aAAA,CAAA9I,OAAA,IAAA8B,SAAA,EACAgH,aAAA,CAAA9I,OAAA,IAAAiJ,IAAA,EACA;gBAAA/G,SAAA;gBAAAC,mBAAA;cAAA,EACA;YACA;YACA;UACA,OAEA,KAAAnH,MAAA,CAAA6N,kBAAA;QACA;MACA;MACA;IACA;IACA;AACA;AACA;IACAK,iBAAA,WAAAA,kBAAAP,IAAA;MACA,SAAA3N,MAAA,EACA,YAAAA,MAAA,CAAA+N,MAAA,CAAAJ,IAAA;MACA;IACA;EACA;EACAQ,KAAA;IACA/N,KAAA,EAAAgO,MAAA;IACAjO,aAAA;MACAsE,IAAA,EAAA2J,MAAA;MACAC,OAAA;IACA;IACA9C,WAAA;MACA9G,IAAA,EAAA6J,OAAA;MACAD,OAAA;IACA;IACA7C,OAAA;MACA/G,IAAA,EAAA8J,MAAA;MACAF,OAAA;IACA;IACA3C,YAAA;MACAjH,IAAA,EAAA6J,OAAA;MACAD,OAAA;IACA;IACA1C,UAAA;MACAlH,IAAA,EAAA6J,OAAA;MACAD,OAAA;IACA;IACA5C,YAAA;MACAhH,IAAA,EAAA6J,OAAA;MACAD,OAAA;IACA;IACAzC,QAAA;MACAnH,IAAA,EAAA6J,OAAA;MACAD,OAAA;IACA;IACAlG,QAAA;MACA1D,IAAA,EAAA6J,OAAA;MACAD,OAAA;IACA;IACAG,eAAA;MACA/J,IAAA,EAAA6J,OAAA;MACAD,OAAA;IACA;IACAnD,cAAA;MACAzG,IAAA,EAAA6J,OAAA;MACAD,OAAA;IACA;IACAI,cAAA;MACAhK,IAAA,EAAA6J,OAAA;MACAD,OAAA;IACA;IACAK,cAAA;MACAjK,IAAA,EAAA2J,MAAA;MACAC,OAAA;IACA;IACAM,QAAA;MACAlK,IAAA,EAAA6J,OAAA;MACAD,OAAA;IACA;IACAO,oBAAA;MACAnK,IAAA,EAAA6J,OAAA;MACAD,OAAA;IACA;IACAQ,oBAAA;MACApK,IAAA,EAAA2J,MAAA;MACAC,OAAA;IACA;IACA;AACA;AACA;IACAhO,KAAA;MACAoE,IAAA,EAAAqK,MAAA;MACAT,OAAA,EAAAzO;IACA;IACA;AACA;AACA;IACAmP,UAAA;MACAtK,IAAA,EAAA2J,MAAA;MACAC,OAAA;IACA;IACAW,QAAA;MACAvK,IAAA,EAAA2J,MAAA;MACAC,OAAA;IACA;EACA;EACAY,OAAA,WAAAA,QAAA;IACA;MACAD,QAAA,OAAAA,QAAA;MACAD,UAAA,OAAAA;IACA;EACA;EACAnL,IAAA,WAAAA,KAAA;IACA;MACAsL,MAAA;MACA5B,QAAA;MACA6B,YAAA,GACA;QACAtL,KAAA;QACAtB,GAAA;MACA,EACA;MACA6M,WAAA,GACA;QACAvL,KAAA;QACAtB,GAAA;QACA8M,OAAA;MACA,EACA;MACA7B,OAAA;MACAb,iBAAA;MACAtE,iBAAA,GACA;QAAAjG,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,GACA;QAAAA,KAAA;MAAA,EACA;MACAgL,IAAA;MACAhF,MAAA;MACAzH,iBAAA;MACA2O,mBAAA;MACAtE,OAAA;MACAvM,aAAA,EAAAA,aAAA;MACAiI,YAAA,EAAAtH,yBAAA;MACAmQ,0BAAA;MACA7J,kBAAA,EAAA9F,SAAA;MACAkB,UAAA;MACAG,WAAA;MACAE,aAAA;MACA8G,iBAAA;MACAT,YAAA;IACA;EACA;EACAgI,KAAA;IACApP,KAAA,WAAAA,MAAA;MACA,UAAAC,KAAA,OAAAsK,aAAA;IACA;IACAxC,QAAA,WAAAA,SAAAsH,GAAA;MACA,KAAAvH,WAAA,CAAAuH,GAAA;IACA;IACApP,KAAA;MACAqP,OAAA,WAAAA,QAAArP,KAAA;QACA,KAAAqK,QAAA,CAAArK,KAAA;MACA;MACAsP,SAAA;MACAC,IAAA;IACA;EACA;EACAC,OAAA,WAAAA,QAAA;IACA,IAAAC,OAAA,GAAA3Q,OAAA;IACA,KAAAY,UAAA,OAAA+P,OAAA,CAAAC,UAAA,MAAAhB,UAAA;IACA,SAAAP,eAAA,OAAA7D,aAAA;IACA,KAAArF,cAAA,OAAA5G,cAAA;IACA,KAAA4G,cAAA,CAAA0K,UAAA,MAAAhB,QAAA,OAAAD,UAAA;EACA;AACA"}]}