Files
jsowell-charger-web/jsowell-ui/node_modules/.cache/vue-loader/49f1cc8d54bc2cbeeba6db8f19aca396.json
Lemon f5e6e29f00 Merge branch 'dev-zza' into dev
# Conflicts:
#	jsowell-ui/.env.development
#	jsowell-ui/.env.staging
#	jsowell-ui/bin/build-sit.bat
#	jsowell-ui/bin/build.bat
#	jsowell-ui/src/api/adapayMember/adapayMember.js
#	jsowell-ui/src/api/pile/merchant.js
#	jsowell-ui/src/router/index.js
#	jsowell-ui/src/views/financial/financeDetail.vue
#	jsowell-ui/src/views/financial/merchant.vue
#	jsowell-ui/src/views/homeIndex/homeIndex.vue
#	jsowell-ui/src/views/login.vue
#	jsowell-ui/src/views/pile/basic/detail.vue
#	jsowell-ui/src/views/pile/station/components/SiteInfo.vue
#	jsowell-ui/src/views/pile/station/detail.vue
#	jsowell-ui/src/views/pile/station/orderReport.vue
2025-06-03 14:26:37 +08:00

1 line
46 KiB
JSON

{"remainingRequest":"D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\src\\views\\pile\\merchant\\components\\adapayMember.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\src\\views\\pile\\merchant\\components\\adapayMember.vue","mtime":1747098376147},{"path":"D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1748394193395},{"path":"D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\node_modules\\thread-loader\\dist\\cjs.js","mtime":1748394193395},{"path":"D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":1748394197445},{"path":"D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1748394193395},{"path":"D:\\ideaProjects\\jsowell-charger-web\\jsowell-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":1748394199226}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgew0KICAgIHNlbGVjdEFkYXBheU1lbWJlciwNCiAgICBjcmVhdGVTZXR0bGVBY2NvdW50LA0KICAgIHVwZGF0ZUFkYXBheU1lbWJlciwNCn0gZnJvbSAiQC9hcGkvYWRhcGF5TWVtYmVyL2FkYXBheU1lbWJlciI7DQppbXBvcnQgeyBnZXRUb2tlbiB9IGZyb20gIkAvdXRpbHMvYXV0aCI7DQppbXBvcnQgdGV4dCBmcm9tICJAL2Fzc2V0cy9qc29uL2JhbmtfY29kZS5qc29uIjsNCmV4cG9ydCBkZWZhdWx0IHsNCiAgICBjb21wb25lbnRzOiB7fSwNCiAgICBkYXRhKCkgew0KICAgICAgICByZXR1cm4gew0KICAgICAgICAgICAgZGF0YURpc2FibGVkOiBmYWxzZSwNCiAgICAgICAgICAgIGFkZExlZ0Rpc2FibGVkOiBmYWxzZSwNCiAgICAgICAgICAgIHVwZGF0ZWxlZ2FsQ2VydElkOiBudWxsLA0KICAgICAgICAgICAgdXBkYXRlU29jaWFsQ3JlZGl0Q29kZTogbnVsbCwNCiAgICAgICAgICAgIGFkZExlZ2FsQ2VydElkRGF0ZTogbnVsbCwNCiAgICAgICAgICAgIGRhdGFWYWx1ZTogbnVsbCwNCiAgICAgICAgICAgIGFkYXBheUxlZ2FsQ2VydElkQ2hlY2tlZDogZmFsc2UsDQogICAgICAgICAgICBhZGFwYXlTb2NpYWxDcmVkQ2hlY2tlZDogZmFsc2UsDQogICAgICAgICAgICBwaWNrZXJDaGVja2VkOiBmYWxzZSwgLy8g57uf5LiA56S+5Lya57yW56CB5pyJ5pWI5pyfIOmVv+acnw0KICAgICAgICAgICAgbGVnYWxDZXJ0SWRDaGVja2VkOiBmYWxzZSwgLy8g6Lqr5Lu96K+B6ZW/5pyfDQogICAgICAgICAgICBhcmVhTGlzdDogW10sDQogICAgICAgICAgICBiYW5rVmFsdWU6ICIiLA0KICAgICAgICAgICAgYmFua0xpc3Q6IFtdLCAvLyDpk7booYzku6PnoIFKU09O5pWw5o2uDQogICAgICAgICAgICBzaG93QWRhcGF5Q29ycDogbnVsbCwNCiAgICAgICAgICAgIHVwZGF0ZURpYWxvZzogZmFsc2UsDQogICAgICAgICAgICBhZGFwYXlDb3JwUnVsZXM6IHsNCiAgICAgICAgICAgICAgICBuYW1lOiBbDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLA0KICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIuivt+Whq+WGmeS8geS4muWQjeensCIsDQogICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIsDQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICAgICBzb2NpYWxDcmVkaXRDb2RlOiBbDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLA0KICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIuivt+Whq+WGmee7n+S4gOekvuS8muS/oeeUqOeggSIsDQogICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIsDQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICAgICBidXNpbmVzc1Njb3BlOiBbDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLA0KICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIuivt+Whq+WGmee7j+iQpeiMg+WbtCIsDQogICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIsDQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICAgICBsZWdhbFBlcnNvbjogWw0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICLor7floavlhpnms5Xkurrlp5PlkI0iLA0KICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogImJsdXIiLA0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIF0sDQogICAgICAgICAgICAgICAgbGVnYWxDZXJ0SWQ6IFsNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsDQogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAi6K+35aGr5YaZ5rOV5Lq66Lqr5Lu96K+B5Y+356CBIiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXI6ICJibHVyIiwNCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBdLA0KICAgICAgICAgICAgICAgIGxlZ2FsQ2VydElkRXhwaXJlczogWw0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICLor7floavlhpnkvJrlkZjmmLXnp7AiLA0KICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogImJsdXIiLA0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIF0sDQogICAgICAgICAgICAgICAgbGVnYWxNcDogWw0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICLor7floavlhpnkvJrlkZjmmLXnp7AiLA0KICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogImJsdXIiLA0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIF0sDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgc2hvd0FjY291bnRMaXN0OiBmYWxzZSwNCiAgICAgICAgICAgIGRpYWxvZzogZmFsc2UsDQogICAgICAgICAgICBtZXJjaGFudElkOiBudWxsLA0KICAgICAgICAgICAgYWRhcGF5Q29ycE1lbWJlcjogew0KICAgICAgICAgICAgICAgIGJhbmtBY2N0VHlwZTogIjEiLA0KICAgICAgICAgICAgICAgIG1lcmNoYW50SWQ6IHRoaXMuJHJvdXRlLnBhcmFtcy5pZCwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICAvLyDmsYfku5jkvJrlkZgNCiAgICAgICAgICAgIGFkYXBheU1lbWJlcjogIiIsDQogICAgICAgICAgICBvcGVuQ3JlYXRlQWRhcGF5TWVtYmVyOiBmYWxzZSwNCiAgICAgICAgICAgIC8vIOaxh+S7mOe7k+eul+i0puaItw0KICAgICAgICAgICAgYWRhcGF5U2V0dGxlQWNjb3VudDogbnVsbCwNCiAgICAgICAgICAgIGRpYWxvZ1J1bGVzOiB7DQogICAgICAgICAgICAgICAgZW1haWw6IFsNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsDQogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAi6K+35aGr5YaZ5Lya5ZGY6YKu566xIiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXI6ICJibHVyIiwNCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogImVtYWlsIiwNCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICLor7fovpPlhaXmraPnoa7nmoTpgq7nrrHlnLDlnYAiLA0KICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogImJsdXIiLA0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIF0sDQogICAgICAgICAgICAgICAgZ2VuZGVyOiBbDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLA0KICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIuivt+mAieaLqeS8muWRmOaAp+WIqyIsDQogICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIsDQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICAgICBsb2NhdGlvbjogWw0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICLor7floavlhpnkvJrlkZjlnLDlnYAiLA0KICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogImJsdXIiLA0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIF0sDQogICAgICAgICAgICAgICAgbmlja25hbWU6IFsNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsDQogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAi6K+35aGr5YaZ5Lya5ZGY5pi156ewIiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXI6ICJibHVyIiwNCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBdLA0KICAgICAgICAgICAgICAgIGNhcmRJZDogWw0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICLor7floavlhpnpk7booYzljaHlj7ciLA0KICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogImJsdXIiLA0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiAvXlsxLTldXGR7OSwyOX0kLywNCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICLpk7booYzljaHlj7fmoLzlvI/mnInor68iLA0KICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogImJsdXIiLA0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIF0sDQogICAgICAgICAgICAgICAgY2FyZE5hbWU6IFsNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsDQogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAi6K+35aGr5YaZ6ZO26KGM5Y2h5Y+35a+55bqU55qE5oi35ZCNIiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXI6ICJibHVyIiwNCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBdLA0KICAgICAgICAgICAgICAgIHRlbE5vOiBbDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLA0KICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIuivt+Whq+WGmeaJi+acuuWPtyIsDQogICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIsDQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IC9eKD86KD86XCt8MDApODYpPzFcZHsxMH0kLywNCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICLmiYvmnLrlj7fmoLzlvI/mnInor68iLA0KICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogImJsdXIiLA0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIF0sDQogICAgICAgICAgICAgICAgYmFua0FjY3RUeXBlOiBbDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLA0KICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIuivt+mAieaLqemTtuihjOi0puaIt+exu+WeiyIsDQogICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIsDQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICAgICBhcmVhQ29kZTogWw0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICLpk7booYzotKbmiLflvIDmiLfpk7booYzmiYDlnKjlnLDljLrnvJbnoIEiLA0KICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogImJsdXIiLA0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIF0sDQogICAgICAgICAgICAgICAgY2VydElkOiBbDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLA0KICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIuivt+Whq+WGmeivgeS7tuWPtyIsDQogICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIsDQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICAgICBiYW5rQ29kZTogWw0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICLor7floavlhpnpk7booYznsbvlnosiLA0KICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogImNoYW5nZSIsDQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICAgICBjYXJkTm86IFsNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsDQogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAi6K+35aGr5YaZ6ZO26KGM5Y2h5Y+3IiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXI6ICJibHVyIiwNCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBdLA0KICAgICAgICAgICAgICAgIG5hbWU6IFsNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsDQogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAi6K+36L6T5YWl5LyB5Lia5ZCN56ewIiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXI6ICJibHVyIiwNCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBdLA0KICAgICAgICAgICAgICAgIHByb3ZDb2RlOiBbDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLA0KICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIuivt+mAieaLqeecgeS7vee8lueggSIsDQogICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyOiAiY2hhbmdlIiwNCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBdLA0KICAgICAgICAgICAgICAgIHNvY2lhbENyZWRpdENvZGU6IFsNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsDQogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAi6K+36L6T5YWl57uf5LiA56S+5Lya5L+h55So56CBIiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXI6ICJibHVyIiwNCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBdLA0KICAgICAgICAgICAgICAgIGJ1c2luZXNzU2NvcGU6IFsNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsDQogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAi6K+36L6T5YWl57uP6JCl6IyD5Zu0IiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXI6ICJibHVyIiwNCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBdLA0KICAgICAgICAgICAgICAgIGxlZ2FsUGVyc29uOiBbDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLA0KICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIuivt+i+k+WFpeazleS6uuWnk+WQjSIsDQogICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIsDQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICAgICBsZWdhbENlcnRJZDogWw0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICLor7fovpPlhaXms5Xkurrouqvku73or4Hlj7fnoIEiLA0KICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogImJsdXIiLA0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIF0sDQogICAgICAgICAgICAgICAgbGVnYWxNcDogWw0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICLor7fovpPlhaXms5XkurrmiYvmnLrlj7ciLA0KICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogImJsdXIiLA0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiAvXjFcZHsxMH0kLywNCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICLmiYvmnLrlj7fnoIHmoLzlvI/mnInor68iLA0KICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogImJsdXIiLA0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIF0sDQogICAgICAgICAgICAgICAgYWRkcmVzczogWw0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICLor7fovpPlhaXkvIHkuJrlnLDlnYAiLA0KICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogImJsdXIiLA0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIF0sDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgY2F0ZVByb3BzOiB7DQogICAgICAgICAgICAgICAgZXhwYW5kVHJpZ2dlcjogImNsaWNrIiwNCiAgICAgICAgICAgICAgICBsYWJlbDogInRpdGxlIiwNCiAgICAgICAgICAgICAgICB2YWx1ZTogInZhbHVlIiwNCiAgICAgICAgICAgICAgICBjaGlsZHJlbjogImNpdGllcyIsDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgdmFsdWU6IFtdLA0KICAgICAgICAgICAgb3B0aW9uczogW10sDQogICAgICAgICAgICBzZXR0bGVBY2NvdW50OiB7fSwNCiAgICAgICAgICAgIHNldHRsZUFjY291bnRMaXN0OiBbXSwNCiAgICAgICAgICAgIGFjdGlvblVybDogcHJvY2Vzcy5lbnYuVlVFX0FQUF9CQVNFX0FQSSArICIvY29tbW9uL3VwbG9hZE9TUyIsDQogICAgICAgICAgICBkaWFsb2dJbWFnZVVybDogIiIsDQogICAgICAgICAgICBoZWFkZXJzOiB7DQogICAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogIkJlYXJlciAiICsgZ2V0VG9rZW4oKSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBpbWFnZVVybDogbnVsbCwNCiAgICAgICAgICAgIGlkQ2FyZExpc3Q6IFtdLA0KICAgICAgICAgICAgc2lkZUNhcmRMaXN0OiBbXSwNCiAgICAgICAgICAgIGRlcG9zaXRCYW5rTGlzdDogW10sDQogICAgICAgICAgICBidXNpbmVzc0xpc3Q6IFtdLA0KICAgICAgICAgICAgdXBsb2FkRGlzYWJsZTogZmFsc2UsDQogICAgICAgICAgICBzaWRlRGlzYWJsZTogZmFsc2UsDQogICAgICAgICAgICBkZXBvc2l0QmFua0Rpc2FibGU6IGZhbHNlLA0KICAgICAgICAgICAgYnVzaW5lc3NEaXNhYmxlOiBmYWxzZSwNCiAgICAgICAgfTsNCiAgICB9LA0KICAgIG1ldGhvZHM6IHsNCiAgICAgICAgYWRhcGF5TGVnYWxDZXJ0SWRDaGFuZ2UoZSkgew0KICAgICAgICAgICAgaWYgKGUgPT09IHRydWUpIHsNCiAgICAgICAgICAgICAgICB0aGlzLmFkZExlZ0Rpc2FibGVkID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZWxlZ2FsQ2VydElkID0gIjIwOTkxMjMxIjsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgdGhpcy5hZGRMZWdEaXNhYmxlZCA9IGZhbHNlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICBhZGFwYXlTb2NpYWxDcmVkQ2hhbmdlKGUpIHsNCiAgICAgICAgICAgIGlmIChlID09PSB0cnVlKSB7DQogICAgICAgICAgICAgICAgdGhpcy5kYXRhRGlzYWJsZWQgPSB0cnVlOw0KICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU29jaWFsQ3JlZGl0Q29kZSA9ICIyMDk5MTIzMSI7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHRoaXMuZGF0YURpc2FibGVkID0gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIC8vIOazleS6uui6q+S7veivgeacieaViOacnyDlvZPnlKjmiLfngrnlh7vplb/mnJ/ml7blh7rnjrDnmoTkuovku7YNCiAgICAgICAgbGVnYWxDZXJ0SWRhQ2hhbmdlKGUpIHsNCiAgICAgICAgICAgIGlmIChlID09PSB0cnVlKSB7DQogICAgICAgICAgICAgICAgdGhpcy5hZGRMZWdhbENlcnRJZERhdGUgPSAiMjA5OTEyMzEiOw0KICAgICAgICAgICAgICAgIHRoaXMuYWRkTGVnRGlzYWJsZWQgPSB0cnVlOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICB0aGlzLmFkZExlZ0Rpc2FibGVkID0gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIC8vIOe7n+S4gOekvuS8mue8lueggeacieaViOacnyDngrnlh7vplb/mnJ/ml7blh7rnjrDnmoTkuovku7YNCiAgICAgICAgZGF0YUNoYW5nZShlKSB7DQogICAgICAgICAgICBpZiAoZSA9PT0gdHJ1ZSkgew0KICAgICAgICAgICAgICAgIHRoaXMuZGF0YVZhbHVlID0gIjIwOTkxMjMxIjsNCiAgICAgICAgICAgICAgICB0aGlzLmRhdGFEaXNhYmxlZCA9IHRydWU7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHRoaXMuZGF0YURpc2FibGVkID0gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIGJ1c2luZXNzRXhjZWVkKGZpbGVzKSB7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoDQogICAgICAgICAgICAgICAgYOW9k+WJjemZkOWItumAieaLqSAxIOW8oOWbvueJh++8jOacrOasoemAieaLqeS6hiAke2ZpbGVzLmxlbmd0aH3lvKBgDQogICAgICAgICAgICApOw0KICAgICAgICB9LA0KICAgICAgICAvLyDlr7nlm77niYfov5vooYzkuIrkvKDliY3lpITnkIbljovnvKkNCiAgICAgICAgYmVmb3JlRm9ybWVyKGZpbGUpIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7DQogICAgICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsNCiAgICAgICAgICAgICAgICAvLyDlsIblm77niYfnu5jliLbliLDkuIDkuKpjYW52YXPnlLvluIPkuIrvvIzlubborr7lrprljovnvKnlkI7nmoTlrr3luqblkozpq5jluqbjgIINCiAgICAgICAgICAgICAgICByZWFkZXIub25sb2FkID0gKGUpID0+IHsNCiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7DQoNCiAgICAgICAgICAgICAgICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7DQogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXhXaWR0aCA9IDgwMDsgLy8g6K6+572u5Y6L57yp5ZCO55qE5pyA5aSn5a695bqmDQogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXhIZWlnaHQgPSA2MDA7IC8vIOiuvue9ruWOi+e8qeWQjueahOacgOWkp+mrmOW6pg0KICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdpZHRoID0gaW1nLndpZHRoOw0KICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhlaWdodCA9IGltZy5oZWlnaHQ7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IGhlaWdodCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IG1heFdpZHRoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCAqPSBtYXhXaWR0aCAvIHdpZHRoOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IG1heFdpZHRoOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhlaWdodCA+IG1heEhlaWdodCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCAqPSBtYXhIZWlnaHQgLyBoZWlnaHQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IG1heEhlaWdodDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMud2lkdGggPSB3aWR0aDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWwhmNhbnZhc+eUu+W4g+S4reeahOWGheWuuei9rOaNouS4ukJsb2Llr7nosaENCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy50b0Jsb2IoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsb2IpID0+IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcHJlc3NlZEZpbGUgPSBuZXcgRmlsZSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtibG9iXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUubmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogYmxvYi50eXBlIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGNvbXByZXNzZWRGaWxlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUudHlwZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjgNCiAgICAgICAgICAgICAgICAgICAgICAgICk7IC8vIOiuvue9ruWOi+e8qei0qOmHj++8jOi/memHjOiuvuS4ujAuOA0KICAgICAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICAgICAgICBpbWcuc3JjID0gZS50YXJnZXQucmVzdWx0Ow0KICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgfSwNCiAgICAgICAgYnVzaW5lc3NTdWNjZXNzKHJlcywgZmlsZSkgew0KICAgICAgICAgICAgdGhpcy4kcmVmcy5hZGFwYXlDb3JwTWVtYmVyLmNsZWFyVmFsaWRhdGUoKTsNCiAgICAgICAgICAgIHRoaXMuaW1hZ2VVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUucmF3KTsNCiAgICAgICAgICAgIGNvbnNvbGUubG9nKCLlm77niYfkuIrkvKDmiJDlip8gdXJs77yaIiwgdGhpcy5pbWFnZVVybCk7DQogICAgICAgICAgICB0aGlzLmJ1c2luZXNzTGlzdC5wdXNoKHsgdXJsOiByZXMudXJsIH0pOw0KICAgICAgICAgICAgaWYgKHJlcy5jb2RlID09PSAyMDApIHsNCiAgICAgICAgICAgICAgICB0aGlzLmJ1c2luZXNzRGlzYWJsZSA9IHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIGJ1c2luZXNzUmVtb3ZlKGZpbGUsIGZpbGVMaXN0KSB7DQogICAgICAgICAgICBjb25zb2xlLmxvZygi56e76Zmk5Zu+54mHIiwgZmlsZSwgZmlsZUxpc3QpOw0KICAgICAgICAgICAgY29uc3QgaSA9IHRoaXMuYnVzaW5lc3NMaXN0LmZpbmRJbmRleCgoeCkgPT4geC51aWQgPT09IGZpbGUudWlkKTsNCiAgICAgICAgICAgIHRoaXMuYnVzaW5lc3NMaXN0LnNwbGljZShpLCAxKTsNCiAgICAgICAgICAgIHRoaXMuYnVzaW5lc3NEaXNhYmxlID0gZmFsc2U7DQogICAgICAgIH0sDQogICAgICAgIGRlcG9zaXRCYW5rRXhjZWVkKGZpbGVzKSB7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoDQogICAgICAgICAgICAgICAgYOW9k+WJjemZkOWItumAieaLqSAxIOW8oOWbvueJh++8jOacrOasoemAieaLqeS6hiAke2ZpbGVzLmxlbmd0aH3lvKBgDQogICAgICAgICAgICApOw0KICAgICAgICB9LA0KICAgICAgICAvLyDlr7nlm77niYfov5vooYzkuIrkvKDliY3lpITnkIbljovnvKkNCiAgICAgICAgYmVmb3JlRGF0YShmaWxlKSB7DQogICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gew0KICAgICAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7DQogICAgICAgICAgICAgICAgLy8g5bCG5Zu+54mH57uY5Yi25Yiw5LiA5LiqY2FudmFz55S75biD5LiK77yM5bm26K6+5a6a5Y6L57yp5ZCO55qE5a695bqm5ZKM6auY5bqm44CCDQogICAgICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7DQogICAgICAgICAgICAgICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpOw0KDQogICAgICAgICAgICAgICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7DQogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4V2lkdGggPSA4MDA7IC8vIOiuvue9ruWOi+e8qeWQjueahOacgOWkp+WuveW6pg0KICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gNjAwOyAvLyDorr7nva7ljovnvKnlkI7nmoTmnIDlpKfpq5jluqYNCiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB3aWR0aCA9IGltZy53aWR0aDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoZWlnaHQgPSBpbWcuaGVpZ2h0Ow0KDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBoZWlnaHQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBtYXhXaWR0aCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgKj0gbWF4V2lkdGggLyB3aWR0aDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBtYXhXaWR0aDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgPiBtYXhIZWlnaHQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggKj0gbWF4SGVpZ2h0IC8gaGVpZ2h0Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSBtYXhIZWlnaHQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLndpZHRoID0gd2lkdGg7DQogICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0Ow0KDQogICAgICAgICAgICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltZywgMCwgMCwgd2lkdGgsIGhlaWdodCk7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyDlsIZjYW52YXPnlLvluIPkuK3nmoTlhoXlrrnovazmjaLkuLpCbG9i5a+56LGhDQogICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMudG9CbG9iKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibG9iKSA9PiB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXByZXNzZWRGaWxlID0gbmV3IEZpbGUoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmxvYl0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLm5hbWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6IGJsb2IudHlwZSB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShjb21wcmVzc2VkRmlsZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLnR5cGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMC44DQogICAgICAgICAgICAgICAgICAgICAgICApOyAvLyDorr7nva7ljovnvKnotKjph4/vvIzov5nph4zorr7kuLowLjgNCiAgICAgICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgICAgICAgaW1nLnNyYyA9IGUudGFyZ2V0LnJlc3VsdDsNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpOw0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0sDQogICAgICAgIGRlcG9zaXRCYW5rU3VjY2VzcyhyZXMsIGZpbGUpIHsNCiAgICAgICAgICAgIHRoaXMuJHJlZnMuYWRhcGF5Q29ycE1lbWJlci5jbGVhclZhbGlkYXRlKCk7DQogICAgICAgICAgICB0aGlzLmltYWdlVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlLnJhdyk7DQogICAgICAgICAgICBjb25zb2xlLmxvZygi5Zu+54mH5LiK5Lyg5oiQ5YqfIHVybO+8miIsIHRoaXMuaW1hZ2VVcmwpOw0KICAgICAgICAgICAgdGhpcy5kZXBvc2l0QmFua0xpc3QucHVzaCh7IHVybDogcmVzLnVybCB9KTsNCiAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PT0gMjAwKSB7DQogICAgICAgICAgICAgICAgdGhpcy5kZXBvc2l0QmFua0Rpc2FibGUgPSB0cnVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICBkZXBvc2l0QmFua1JlbW92ZShmaWxlLCBmaWxlTGlzdCkgew0KICAgICAgICAgICAgY29uc29sZS5sb2coIuenu+mZpOWbvueJhyIsIGZpbGUsIGZpbGVMaXN0KTsNCiAgICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLmRlcG9zaXRCYW5rTGlzdC5maW5kSW5kZXgoKHgpID0+IHgudWlkID09PSBmaWxlLnVpZCk7DQogICAgICAgICAgICB0aGlzLmRlcG9zaXRCYW5rTGlzdC5zcGxpY2UoaSwgMSk7DQogICAgICAgICAgICB0aGlzLmRlcG9zaXRCYW5rRGlzYWJsZSA9IGZhbHNlOw0KICAgICAgICB9LA0KICAgICAgICBzaWRlQ2FyZEV4Y2VlZChmaWxlcykgew0KICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKA0KICAgICAgICAgICAgICAgIGDlvZPliY3pmZDliLbpgInmi6kgMSDlvKDlm77niYfvvIzmnKzmrKHpgInmi6nkuoYgJHtmaWxlcy5sZW5ndGh95bygYA0KICAgICAgICAgICAgKTsNCiAgICAgICAgfSwNCiAgICAgICAgLy8g5a+55Zu+54mH6L+b6KGM5LiK5Lyg5YmN5aSE55CG5Y6L57ypDQogICAgICAgIGdldEJlZm9yZShmaWxlKSB7DQogICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gew0KICAgICAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7DQogICAgICAgICAgICAgICAgLy8g5bCG5Zu+54mH57uY5Yi25Yiw5LiA5LiqY2FudmFz55S75biD5LiK77yM5bm26K6+5a6a5Y6L57yp5ZCO55qE5a695bqm5ZKM6auY5bqm44CCDQogICAgICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7DQogICAgICAgICAgICAgICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpOw0KDQogICAgICAgICAgICAgICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7DQogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4V2lkdGggPSA4MDA7IC8vIOiuvue9ruWOi+e8qeWQjueahOacgOWkp+WuveW6pg0KICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gNjAwOyAvLyDorr7nva7ljovnvKnlkI7nmoTmnIDlpKfpq5jluqYNCiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB3aWR0aCA9IGltZy53aWR0aDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoZWlnaHQgPSBpbWcuaGVpZ2h0Ow0KDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBoZWlnaHQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBtYXhXaWR0aCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgKj0gbWF4V2lkdGggLyB3aWR0aDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBtYXhXaWR0aDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgPiBtYXhIZWlnaHQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggKj0gbWF4SGVpZ2h0IC8gaGVpZ2h0Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSBtYXhIZWlnaHQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLndpZHRoID0gd2lkdGg7DQogICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0Ow0KDQogICAgICAgICAgICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltZywgMCwgMCwgd2lkdGgsIGhlaWdodCk7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyDlsIZjYW52YXPnlLvluIPkuK3nmoTlhoXlrrnovazmjaLkuLpCbG9i5a+56LGhDQogICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMudG9CbG9iKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibG9iKSA9PiB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXByZXNzZWRGaWxlID0gbmV3IEZpbGUoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmxvYl0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLm5hbWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6IGJsb2IudHlwZSB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShjb21wcmVzc2VkRmlsZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLnR5cGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMC44DQogICAgICAgICAgICAgICAgICAgICAgICApOyAvLyDorr7nva7ljovnvKnotKjph4/vvIzov5nph4zorr7kuLowLjgNCiAgICAgICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgICAgICAgaW1nLnNyYyA9IGUudGFyZ2V0LnJlc3VsdDsNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpOw0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0sDQogICAgICAgIHNpZGVDYXJkU3VjY2VzcyhyZXMpIHsNCiAgICAgICAgICAgIHRoaXMuJHJlZnMuYWRhcGF5Q29ycE1lbWJlci5jbGVhclZhbGlkYXRlKCk7DQogICAgICAgICAgICB0aGlzLnNpZGVDYXJkTGlzdC5wdXNoKHsgdXJsOiByZXMudXJsIH0pOw0KICAgICAgICAgICAgaWYgKHJlcy5jb2RlID09PSAyMDApIHsNCiAgICAgICAgICAgICAgICB0aGlzLnNpZGVEaXNhYmxlID0gdHJ1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgc2lkZUNhcmRSZW1vdmUoZmlsZSwgZmlsZUxpc3QpIHsNCiAgICAgICAgICAgIGNvbnNvbGUubG9nKCLnp7vpmaTlm77niYciLCBmaWxlLCBmaWxlTGlzdCk7DQogICAgICAgICAgICAvLyDku45waWNz5pWw57uE5Lit77yM5om+5Yiw5Zu+54mH5a+55bqU55qE57Si5byV5YC8DQogICAgICAgICAgICBjb25zdCBpID0gdGhpcy5zaWRlQ2FyZExpc3QuZmluZEluZGV4KCh4KSA9PiB4LnVpZCA9PT0gZmlsZS51aWQpOw0KICAgICAgICAgICAgLy8g6LCD55Soc3BsaWNl5pa55rOV77yM56e76Zmk5Zu+54mH5L+h5oGvDQogICAgICAgICAgICB0aGlzLnNpZGVDYXJkTGlzdC5zcGxpY2UoaSwgMSk7DQogICAgICAgICAgICB0aGlzLnNpZGVEaXNhYmxlID0gZmFsc2U7DQogICAgICAgIH0sDQogICAgICAgIGlkQ2FyZEV4Y2VlZChmaWxlcykgew0KICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKA0KICAgICAgICAgICAgICAgIGDlvZPliY3pmZDliLbpgInmi6kgMSDlvKDlm77niYfvvIzmnKzmrKHpgInmi6nkuoYgJHtmaWxlcy5sZW5ndGh95bygYA0KICAgICAgICAgICAgKTsNCiAgICAgICAgfSwNCiAgICAgICAgLy8g5a+55Zu+54mH6L+b6KGM5LiK5Lyg5YmN5aSE55CG5Y6L57ypDQogICAgICAgIGJlZm9yZVVwbG9hZChmaWxlKSB7DQogICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gew0KICAgICAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7DQogICAgICAgICAgICAgICAgLy8g5bCG5Zu+54mH57uY5Yi25Yiw5LiA5LiqY2FudmFz55S75biD5LiK77yM5bm26K6+5a6a5Y6L57yp5ZCO55qE5a695bqm5ZKM6auY5bqm44CCDQogICAgICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7DQogICAgICAgICAgICAgICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpOw0KDQogICAgICAgICAgICAgICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7DQogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4V2lkdGggPSA4MDA7IC8vIOiuvue9ruWOi+e8qeWQjueahOacgOWkp+WuveW6pg0KICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gNjAwOyAvLyDorr7nva7ljovnvKnlkI7nmoTmnIDlpKfpq5jluqYNCiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB3aWR0aCA9IGltZy53aWR0aDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoZWlnaHQgPSBpbWcuaGVpZ2h0Ow0KDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBoZWlnaHQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBtYXhXaWR0aCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgKj0gbWF4V2lkdGggLyB3aWR0aDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBtYXhXaWR0aDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgPiBtYXhIZWlnaHQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggKj0gbWF4SGVpZ2h0IC8gaGVpZ2h0Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSBtYXhIZWlnaHQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLndpZHRoID0gd2lkdGg7DQogICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0Ow0KDQogICAgICAgICAgICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltZywgMCwgMCwgd2lkdGgsIGhlaWdodCk7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyDlsIZjYW52YXPnlLvluIPkuK3nmoTlhoXlrrnovazmjaLkuLpCbG9i5a+56LGhDQogICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMudG9CbG9iKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibG9iKSA9PiB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXByZXNzZWRGaWxlID0gbmV3IEZpbGUoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmxvYl0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLm5hbWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6IGJsb2IudHlwZSB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShjb21wcmVzc2VkRmlsZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLnR5cGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMC44DQogICAgICAgICAgICAgICAgICAgICAgICApOyAvLyDorr7nva7ljovnvKnotKjph4/vvIzov5nph4zorr7kuLowLjgNCiAgICAgICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgICAgICAgaW1nLnNyYyA9IGUudGFyZ2V0LnJlc3VsdDsNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpOw0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0sDQogICAgICAgIGlkQ2FyZFN1Y2Nlc3MocmVzKSB7DQogICAgICAgICAgICB0aGlzLiRyZWZzLmFkYXBheUNvcnBNZW1iZXIuY2xlYXJWYWxpZGF0ZSgpOw0KICAgICAgICAgICAgdGhpcy5pZENhcmRMaXN0LnB1c2goeyB1cmw6IHJlcy51cmwgfSk7DQogICAgICAgICAgICBpZiAocmVzLmNvZGUgPT09IDIwMCkgew0KICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRGlzYWJsZSA9IHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIGlkQ2FyZFJlbW92ZShmaWxlLCBmaWxlTGlzdCkgew0KICAgICAgICAgICAgY29uc29sZS5sb2coIuenu+mZpOWbvueJhyIsIGZpbGUsIGZpbGVMaXN0KTsNCiAgICAgICAgICAgIC8vIOS7jnBpY3PmlbDnu4TkuK3vvIzmib7liLDlm77niYflr7nlupTnmoTntKLlvJXlgLwNCiAgICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLmlkQ2FyZExpc3QuZmluZEluZGV4KCh4KSA9PiB4LnVpZCA9PT0gZmlsZS51aWQpOw0KICAgICAgICAgICAgLy8g6LCD55Soc3BsaWNl5pa55rOV77yM56e76Zmk5Zu+54mH5L+h5oGvDQogICAgICAgICAgICB0aGlzLmlkQ2FyZExpc3Quc3BsaWNlKGksIDEpOw0KICAgICAgICAgICAgdGhpcy51cGxvYWREaXNhYmxlID0gZmFsc2U7DQogICAgICAgIH0sDQogICAgICAgIC8vIOS/ruaUueaMiemSrg0KICAgICAgICB1cGRhdGVEaWFsb2dGb3JtKGZvcm0pIHsNCiAgICAgICAgICAgIHRoaXMuYWRhcGF5Q29ycE1lbWJlci5idXNpbmVzc05hbWUgPSB0aGlzLmFkYXBheUNvcnBNZW1iZXIubmFtZTsNCiAgICAgICAgICAgIGNvbnNvbGUubG9nKCLkv67mlLkiLCB0aGlzLmFkYXBheUNvcnBNZW1iZXIuYnVzaW5lc3NOYW1lKTsNCiAgICAgICAgICAgIHRoaXMuYWRhcGF5Q29ycE1lbWJlci5sZWdhbENlcnRJZEV4cGlyZXMgPSB0aGlzLnVwZGF0ZWxlZ2FsQ2VydElkOw0KICAgICAgICAgICAgdGhpcy5hZGFwYXlDb3JwTWVtYmVyLnNvY2lhbENyZWRpdENvZGVFeHBpcmVzID0NCiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNvY2lhbENyZWRpdENvZGU7DQogICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmFkYXBheUNvcnBNZW1iZXIsICJ0aGlzLmFkYXBheUNvcnBNZW1iZXIiKTsNCiAgICAgICAgICAgIHRoaXMuYWRhcGF5Q29ycE1lbWJlci5tZXJjaGFudElkID0gdGhpcy5tZXJjaGFudElkOw0KICAgICAgICAgICAgY29uc29sZS5sb2coIuS/ruaUueaIkOWKnyIsIGZvcm0pOw0KICAgICAgICAgICAgdGhpcy4kcmVmc1tmb3JtXS52YWxpZGF0ZSgodmFsaWQpID0+IHsNCiAgICAgICAgICAgICAgICBpZiAodmFsaWQpIHsNCiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2codmFsaWQsICJ2YWxpZCIpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuYWRhcGF5Q29ycE1lbWJlci5zb2NpYWxDcmVkaXRDb2RlRXhwaXJlcykNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRtZXNzYWdlLndhcm5pbmcoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIuivt+i+k+WFpee7n+S4gOekvuS8muS/oeeUqOivgeacieaViOacnyINCiAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5hZGFwYXlDb3JwTWVtYmVyLmxlZ2FsQ2VydElkRXhwaXJlcykNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRtZXNzYWdlLndhcm5pbmcoIuivt+i+k+WFpeazleS6uui6q+S7veivgeacieaViOacnyIpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoDQogICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5pZENhcmRMaXN0WzBdIHx8DQogICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5zaWRlQ2FyZExpc3RbMF0gfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLmRlcG9zaXRCYW5rTGlzdFswXSB8fA0KICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuYnVzaW5lc3NMaXN0WzBdDQogICAgICAgICAgICAgICAgICAgICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi6K+35LiK5Lyg5Zu+54mHIik7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkYXBheUNvcnBNZW1iZXIuaW1nTGlzdCA9IFsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlkQ2FyZExpc3RbMF0udXJsLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2lkZUNhcmRMaXN0WzBdLnVybCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcG9zaXRCYW5rTGlzdFswXS51cmwsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5idXNpbmVzc0xpc3RbMF0udXJsLA0KICAgICAgICAgICAgICAgICAgICAgICAgXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRhcGF5Q29ycE1lbWJlci5pbWdMaXN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGlzLmFkYXBheUNvcnBNZW1iZXIuaW1nTGlzdCINCiAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgdXBkYXRlQWRhcGF5TWVtYmVyKHRoaXMuYWRhcGF5Q29ycE1lbWJlcikudGhlbigNCiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4gew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCLkv67mlLkiLCByZXNwb25zZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCLkv67mlLnmiJDlip8iKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZURpYWxvZyA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0QWRhcGF5TWVtYmVyKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0sDQogICAgICAgIC8vIDwhLS0gQS3lvoXlrqHmoLjvvJtCLeWuoeaguOWksei0pe+8m0Mt5byA5oi35aSx6LSl77ybRC3lvIDmiLfmiJDlip/kvYbmnKrliJvlu7rnu5PnrpfotKbmiLfvvJtFLeW8gOaIt+WSjOWIm+W7uue7k+eul+i0puaIt+aIkOWKnw0KICAgICAgICBhdWRpdFN0YXR1cyhzdGF0dXMpIHsNCiAgICAgICAgICAgIGxldCBhcnIgPSBbDQogICAgICAgICAgICAgICAgeyB0eXBlOiAiQSIsIHN0YXR1c1RpdGxlOiAi5b6F5a6h5qC4IiB9LA0KICAgICAgICAgICAgICAgIHsgdHlwZTogIkIiLCBzdGF0dXNUaXRsZTogIuWuoeaguOWksei0pSIgfSwNCiAgICAgICAgICAgICAgICB7IHR5cGU6ICJDIiwgc3RhdHVzVGl0bGU6ICLlvIDmiLflpLHotKUiIH0sDQogICAgICAgICAgICAgICAgeyB0eXBlOiAiRCIsIHN0YXR1c1RpdGxlOiAi5byA5oi35oiQ5Yqf5L2G5pyq5Yib5bu657uT566X6LSm5oi3IiB9LA0KICAgICAgICAgICAgICAgIHsgdHlwZTogIkUiLCBzdGF0dXNUaXRsZTogIuW8gOaIt+WSjOWIm+W7uue7k+eul+i0puaIt+aIkOWKnyIgfSwNCiAgICAgICAgICAgIF07DQogICAgICAgICAgICBsZXQgc3RyID0gYXJyLmZpbmQoKGl0ZW0pID0+IGl0ZW0udHlwZSA9PT0gc3RhdHVzKTsNCiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHN0ciwnc3RyIGF1ZGl0U3RhdHVzJykNCiAgICAgICAgICAgIGlmIChzdHIgPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIHJldHVybiAi5LiAIjsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHN0ci5zdGF0dXNUaXRsZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgcHJvdkNvZGUoY29kZSkgew0KICAgICAgICAgICAgbGV0IGFyciA9IHRoaXMub3B0aW9ucy5maW5kKChpdGVtKSA9PiBpdGVtLnZhbHVlID09PSBjb2RlKTsNCiAgICAgICAgICAgIGlmIChhcnIgPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIHJldHVybiAi5LiAIjsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgdGhpcy5hcmVhTGlzdCA9IGFyci5jaXRpZXM7DQogICAgICAgICAgICAgICAgcmV0dXJuIGFyci50aXRsZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgYXJlYUNvZGUoYXJlYSkgew0KICAgICAgICAgICAgbGV0IGFyciA9IHRoaXMuYXJlYUxpc3QuZmluZCgoaXRlbSkgPT4gaXRlbS52YWx1ZSA9PT0gYXJlYSk7DQogICAgICAgICAgICBpZiAoYXJyID09IG51bGwpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gIuS4gCI7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHJldHVybiBhcnIudGl0bGU7DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIGVudGVycHJpc2VDaGFuZ2UodmFsdWUpIHsNCiAgICAgICAgICAgIHRoaXMuYWRhcGF5Q29ycE1lbWJlci5wcm92Q29kZSA9IHZhbHVlWzBdOw0KICAgICAgICAgICAgdGhpcy5hZGFwYXlDb3JwTWVtYmVyLmFyZWFDb2RlID0gdmFsdWVbMV07DQogICAgICAgIH0sDQogICAgICAgIC8vIOaWsOW7uuaPkOS6pOaMiemSrg0KICAgICAgICBzdWJtaXREaWFsb2dGb3JtKGFkYXBheUNvcnBNZW1iZXIpIHsNCiAgICAgICAgICAgIGNvbnN0IGxvYWRpbmcgPSB0aGlzLiRsb2FkaW5nKHsNCiAgICAgICAgICAgICAgICBsb2NrOiB0cnVlLA0KICAgICAgICAgICAgICAgIHRleHQ6ICfmj5DkuqTkuK0nLA0KICAgICAgICAgICAgICAgIHNwaW5uZXI6ICdlbC1pY29uLWxvYWRpbmcnLA0KICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICdyZ2JhKDAsIDAsIDAsIDAuNyknDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIHRoaXMuYWRhcGF5Q29ycE1lbWJlci5idXNpbmVzc05hbWUgPSB0aGlzLmFkYXBheUNvcnBNZW1iZXIubmFtZTsNCiAgICAgICAgICAgIGNvbnNvbGUubG9nKA0KICAgICAgICAgICAgICAgICLmlrDlu7og5LyB5Lia5ZCN56ew5Lyg6YCS55qE5YC8LmJ1c2luZXNzTmFtZSIsDQogICAgICAgICAgICAgICAgdGhpcy5hZGFwYXlDb3JwTWVtYmVyLmJ1c2luZXNzTmFtZQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgICAgIHRoaXMuYWRhcGF5Q29ycE1lbWJlci5zb2NpYWxDcmVkaXRDb2RlRXhwaXJlcyA9IHRoaXMuZGF0YVZhbHVlOw0KICAgICAgICAgICAgdGhpcy5hZGFwYXlDb3JwTWVtYmVyLmxlZ2FsQ2VydElkRXhwaXJlcyA9IHRoaXMuYWRkTGVnYWxDZXJ0SWREYXRlOw0KICAgICAgICAgICAgdGhpcy5hZGFwYXlDb3JwTWVtYmVyLm1lcmNoYW50SWQgPSB0aGlzLm1lcmNoYW50SWQ7DQogICAgICAgICAgICB0aGlzLiRyZWZzW2FkYXBheUNvcnBNZW1iZXJdLnZhbGlkYXRlKCh2YWxpZCkgPT4gew0KICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuYWRhcGF5Q29ycE1lbWJlciwgInRoaXMuYWRhcGF5Q29ycE1lbWJlciIpOw0KICAgICAgICAgICAgICAgIGlmICh2YWxpZCkgew0KICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh2YWxpZCwgYWRhcGF5Q29ycE1lbWJlcik7DQogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFkYXBheUNvcnBNZW1iZXIuYmFua0FjY3RUeXBlID09PSAiMSIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5hZGFwYXlDb3JwTWVtYmVyLnNvY2lhbENyZWRpdENvZGVFeHBpcmVzKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRtZXNzYWdlLndhcm5pbmcoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICLor7fovpPlhaXnu5/kuIDnpL7kvJrkv6HnlKjor4HmnInmlYjmnJ8iDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5hZGFwYXlDb3JwTWVtYmVyLmxlZ2FsQ2VydElkRXhwaXJlcykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kbWVzc2FnZS53YXJuaW5nKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi6K+36L6T5YWl5rOV5Lq66Lqr5Lu96K+B5pyJ5pWI5pyfIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuaWRDYXJkTGlzdFswXSB8fA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLnNpZGVDYXJkTGlzdFswXSB8fA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLmRlcG9zaXRCYW5rTGlzdFswXSB8fA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLmJ1c2luZXNzTGlzdFswXQ0KICAgICAgICAgICAgICAgICAgICAgICAgKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi6K+35LiK5Lyg5Zu+54mHIik7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRhcGF5Q29ycE1lbWJlci5pbWdMaXN0ID0gWw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlkQ2FyZExpc3RbMF0udXJsLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpZGVDYXJkTGlzdFswXS51cmwsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVwb3NpdEJhbmtMaXN0WzBdLnVybCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5idXNpbmVzc0xpc3RbMF0udXJsLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIuaJp+ihjOivt+axgu+8jOWIm+W7uuaIkOWKnyIpOw0KICAgICAgICAgICAgICAgICAgICBjcmVhdGVTZXR0bGVBY2NvdW50KHRoaXMuYWRhcGF5Q29ycE1lbWJlcikudGhlbigNCiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4gew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCLmlrDlop4iLCByZXNwb25zZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCLmlrDlop7miJDlip/vvIzor7fli7/ph43mlrDmj5DkuqTvvIEiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZyA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0QWRhcGF5TWVtYmVyKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZy5jbG9zZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCLooajmoLzmj5DkuqTlpLHotKXvvIzor7fogZTns7vns7vnu5/nrqHnkIblkZjvvIEiKTsNCiAgICAgICAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcigi6KGo5qC85o+Q5Lqk5aSx6LSl77yM6K+36IGU57O757O757uf566h55CG5ZGY77yBIik7DQogICAgICAgICAgICAgICAgICAgIGxvYWRpbmcuY2xvc2UoKTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZyA9IGZhbHNlOw0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0sDQogICAgICAgIHJlc2V0Rm9ybShhZGFwYXlDb3JwTWVtYmVyKSB7DQogICAgICAgICAgICB0aGlzLiRyZWZzW2FkYXBheUNvcnBNZW1iZXJdLnJlc2V0RmllbGRzKCk7DQogICAgICAgIH0sDQogICAgICAgIC8vIOafpeivouaxh+S7mOS8muWRmA0KICAgICAgICBzZWxlY3RBZGFwYXlNZW1iZXIoKSB7DQogICAgICAgICAgICBjb25zb2xlLmxvZygidGhpcy5tZXJjaGFudElkIiwgdGhpcy5hZGFwYXlDb3JwTWVtYmVyLm1lcmNoYW50SWQpOw0KICAgICAgICAgICAgbGV0IHBhcmFtID0gew0KICAgICAgICAgICAgICAgIG1lcmNoYW50SWQ6IHRoaXMuYWRhcGF5Q29ycE1lbWJlci5tZXJjaGFudElkLA0KICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIHNlbGVjdEFkYXBheU1lbWJlcihwYXJhbSkudGhlbigocmVzcG9uc2UpID0+IHsNCiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygi5p+l6K+iIHNlbGVjdEFkYXBheU1lbWJlciIsIHJlc3BvbnNlKTsNCiAgICAgICAgICAgICAgICB0aGlzLmFkYXBheU1lbWJlciA9IHJlc3BvbnNlLmRhdGE7DQogICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICAgICAvLyDlr7nlhazov5Tlm57nmoTnu5PmnpwNCg0KICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5a+55YWs5L+h5oGvJyx0aGlzLmFkYXBheUNvcnBNZW1iZXIpDQogICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLnNldHRsZUFjY291bnRMaXN0ICE9PSBudWxsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkYXBheUNvcnBNZW1iZXIgPSByZXNwb25zZS5kYXRhLmFkYXBheU1lbWJlcjsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGxlQWNjb3VudExpc3QgPQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuc2V0dGxlQWNjb3VudExpc3Q7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dBY2NvdW50TGlzdCA9IHRydWU7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93QWRhcGF5Q29ycCA9IHJlc3BvbnNlLmRhdGEuYWRhcGF5Q29ycE1lbWJlcjsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuYWRhcGF5Q29ycE1lbWJlciAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLmFkYXBheUNvcnBNZW1iZXIgPQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuYWRhcGF5Q29ycE1lbWJlcik7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0sDQogICAgICAgIGpzb25IdHRwKCkgew0KICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzOw0KICAgICAgICAgICAgLy8oMSku5a6e5L6L5YyWYWpheOWvueixoQ0KICAgICAgICAgICAgbGV0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOw0KICAgICAgICAgICAgLy8oMiku6K6+572u6K+35rGC5pa55rOV5ZKM5Zyw5Z2ADQogICAgICAgICAgICAvL2dldOivt+axgueahOaVsOaNruebtOaOpea3u+WKoOWcqHVybOeahOWQjumdoiDmoLzlvI/mmK8gdXJsP2tleT12YWx1ZQ0KICAgICAgICAgICAgeGhyLm9wZW4oDQogICAgICAgICAgICAgICAgImdldCIsDQogICAgICAgICAgICAgICAgImh0dHBzOi8vY2RuLmNsb3VkcG5yLmNvbS9hZGFwYXlyZXNvdXJjZS9kb2N1bWVudHMvQWRhcGF5JUU3JTlDJTgxJUU1JUI4JTgyJUU3JUJDJTk2JUU3JUEwJTgxJUVGJUJDJTg4JUU1JTlCJTlCJUU0JUJEJThEJUVGJUJDJTg5Lmpzb24iDQogICAgICAgICAgICApOw0KICAgICAgICAgICAgLy8oMyku5Y+R6YCB6K+35rGCDQogICAgICAgICAgICB4aHIuc2VuZCgpOw0KICAgICAgICAgICAgLy8oNCku5rOo5YaM5Zue6LCD5Ye95pWwDQogICAgICAgICAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHhoci5yZXNwb25zZVRleHQsJ3Jlc3BvbnNlVGV4dCcpDQogICAgICAgICAgICAgICAgdGhhdC5vcHRpb25zID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsNCiAgICAgICAgICAgIH07DQogICAgICAgIH0sDQogICAgfSwNCiAgICBjcmVhdGVkKCkgew0KICAgICAgICB0aGlzLnNlbGVjdEFkYXBheU1lbWJlcigpOw0KICAgICAgICB0aGlzLmpzb25IdHRwKCk7DQogICAgICAgIHRoaXMuYmFua0xpc3QgPSB0ZXh0LmJhbmtMaXN0Ow0KICAgICAgICB0aGlzLm1lcmNoYW50SWQgPSB0aGlzLiRyb3V0ZS5wYXJhbXMuaWQ7DQogICAgfSwNCn07DQo="},null]}