{"remainingRequest":"D:\\jenkins\\workspace\\tj_zsj_web\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\tj_zsj_web\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\tj_zsj_web\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\tj_zsj_web\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\tj_zsj_web\\src\\views\\YunSearcher\\ResourceDetails.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\tj_zsj_web\\src\\views\\YunSearcher\\ResourceDetails.vue","mtime":1742507583469},{"path":"D:\\jenkins\\workspace\\tj_zsj_web\\babel.config.js","mtime":1741330404271},{"path":"D:\\jenkins\\workspace\\tj_zsj_web\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\tj_zsj_web\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\tj_zsj_web\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\tj_zsj_web\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\tj_zsj_web\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvdGpfenNqX3dlYi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vcmVnZW5lcmF0b3JSdW50aW1lLmpzIjsKaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvdGpfenNqX3dlYi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMi5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS90al96c2pfd2ViL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZXJyb3IuY2F1c2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc29ydC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNwbGljZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIudG8tZml4ZWQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7CmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JzsKaW1wb3J0IHsgZ2V0QXBwbHksIGdldEFwcGx5RGV0YWlsLCBnZXRDbG91ZFVzZWFnZSBhcyBfZ2V0Q2xvdWRVc2VhZ2UsIHNhdmVBcHBseSwgZGVsZXRlQXBwbHlEZXRhaWwsIGRvd25sb2FkQXBwbHksIGRlbGV0ZUFwcGx5TGlzdCB9IGZyb20gJ0AvYXBpL3B1YmxpY0Jhc2ljL3Jlc291cmNlQmlkJzsKaW1wb3J0IHsgZ2V0RGljdGlvbmFyeUJ5Q29kZSB9IGZyb20gJ0AvdXRpbHMvZGljdGlvbmFyeSc7CmltcG9ydCBhcHBseURldGFpbEZvcm0gZnJvbSAnLi9hcHBseURldGFpbEZvcm0udnVlJzsKaW1wb3J0IGFwcGx5QXBwcm92YWwgZnJvbSAnLi9hcHBseUFwcHJvdmFsLnZ1ZSc7CmltcG9ydCBhcHBseVJlY29yZCBmcm9tICcuL2FwcGx5UmVjb3JkLnZ1ZSc7CmltcG9ydCBmaWxlVXBsb2FkIGZyb20gJ0AvY29tcG9uZW50cy91cGxvYWQvZmlsZUxpc3RVcGxvYWQudnVlJzsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICdSZXNvdXJjZURldGFpbHMnLAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBpZDogJycsCiAgICAgIGRpYWxvZ1Zpc2libGU6IGZhbHNlLAogICAgICBzZWxlY3RlZE1lbnU6ICcnLAogICAgICBidXR0b25Mb2FkaW5nOiBmYWxzZSwKICAgICAgdHlwZTogJycsCiAgICAgIGFjdGl2ZU5hbWVzOiBbJzEnXSwKICAgICAgY2xvdWRUeXBlOiBbXSwKICAgICAgbG9hZGluZzogZmFsc2UsCiAgICAgIGFwcGx5Zm9ybTogewogICAgICAgIGFwcGx5RGF0ZTogbW9tZW50KCkuZm9ybWF0KCdZWVlZLU1NLUREJyksCiAgICAgICAgY2xvdWRUeXBlOiBudWxsLAogICAgICAgIGNsb3VkQXBwbHlGaWxlOiBbXSwKICAgICAgICBjbG91ZEFwcGx5VXNlRGV0YWlsZWRMaXN0OiBbewogICAgICAgICAgY2xvdWRUeXBlOiAxLAogICAgICAgICAgdXNlVHlwZTogMQogICAgICAgIH0sIHsKICAgICAgICAgIGNsb3VkVHlwZTogMSwKICAgICAgICAgIHVzZVR5cGU6IDIKICAgICAgICB9LCB7CiAgICAgICAgICBjbG91ZFR5cGU6IDIsCiAgICAgICAgICB1c2VUeXBlOiAxCiAgICAgICAgfSwgewogICAgICAgICAgY2xvdWRUeXBlOiAyLAogICAgICAgICAgdXNlVHlwZTogMgogICAgICAgIH1dCiAgICAgIH0sCiAgICAgIGFwcGx5Zm9ybVJ1bGVzOiB7CiAgICAgICAgYXBwbHlVbml0TmFtZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpeWNleS9jeWQjeensCcsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2JsdXInLCAnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICBhcHBseVVuaXRDb250YWN0czogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpeWNleS9jeiBlOezu+S6uicsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2JsdXInLCAnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICBhcHBseVVuaXRDb250YWN0c1Bob25lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWl5Y2V5L2N6IGU57O75Lq655S16K+dJywKICAgICAgICAgIHRyaWdnZXI6IFsnYmx1cicsICdjaGFuZ2UnXQogICAgICAgIH0sIHsKICAgICAgICAgIHBhdHRlcm46IC9eMVszLTldXGR7OX0kLywKICAgICAgICAgIG1lc3NhZ2U6ICfmiYvmnLrmoLzlvI/kuI3mraPnoa4nLAogICAgICAgICAgdHJpZ2dlcjogWydibHVyJywgJ2NoYW5nZSddCiAgICAgICAgfV0sCiAgICAgICAgYXBwbHlVbml0Q29udGFjdHNNYWlsOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWl6YKu566xJywKICAgICAgICAgIHRyaWdnZXI6IFsnYmx1cicsICdjaGFuZ2UnXQogICAgICAgIH0sIHsKICAgICAgICAgIHR5cGU6ICdlbWFpbCcsCiAgICAgICAgICBtZXNzYWdlOiAn6YKu566x5qC85byP5LiN5q2j56GuJywKICAgICAgICAgIHRyaWdnZXI6IFsnYmx1cicsICdjaGFuZ2UnXQogICAgICAgIH1dLAogICAgICAgIGFwcGx5RGF0ZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeeUs+ivt+aXtumXtCcsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2JsdXInLCAnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICBhcHBseUFwcE5hbWU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfor7fovpPlhaXlupTnlKjns7vnu5/lkI3np7AnLAogICAgICAgICAgdHJpZ2dlcjogWydibHVyJywgJ2NoYW5nZSddCiAgICAgICAgfV0sCiAgICAgICAgYXBwbHlBcHBEZXZlbG9wVW5pdDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpeW6lOeUqOW8gOWPkeWNleS9jScsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2JsdXInLCAnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICBjbG91ZFR5cGU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6notYTmupDmiYDlsZ7kupHlubPlj7AnLAogICAgICAgICAgdHJpZ2dlcjogWydibHVyJywgJ2NoYW5nZSddCiAgICAgICAgfV0sCiAgICAgICAgYXBwUHVycG9zZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpei9r+S7tueUqOmAlOeugOimgeivtOaYjicsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2JsdXInLCAnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICBhcHBseUFwcENvbnRyYWN0czogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpeW6lOeUqOezu+e7n+iBlOezu+S6uicsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2JsdXInLCAnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICBhcHBseUFwcENvbnRyYWN0c1Bob25lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWl5bqU55So57O757uf6IGU57O75Lq655S16K+dJywKICAgICAgICAgIHRyaWdnZXI6IFsnYmx1cicsICdjaGFuZ2UnXQogICAgICAgIH0sIHsKICAgICAgICAgIHBhdHRlcm46IC9eMVszLTldXGR7OX0kLywKICAgICAgICAgIG1lc3NhZ2U6ICfmiYvmnLrmoLzlvI/kuI3mraPnoa4nLAogICAgICAgICAgdHJpZ2dlcjogWydibHVyJywgJ2NoYW5nZSddCiAgICAgICAgfV0sCiAgICAgICAgdmlydHVhbE1hY2hpbmVOdW06IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfor7fovpPlhaXomZrmi5/mnLrmlbDph48nLAogICAgICAgICAgdHJpZ2dlcjogWydibHVyJywgJ2NoYW5nZSddCiAgICAgICAgfV0sCiAgICAgICAgY3B1TnVtOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWlQ1BV5qC45pWwJywKICAgICAgICAgIHRyaWdnZXI6IFsnYmx1cicsICdjaGFuZ2UnXQogICAgICAgIH1dLAogICAgICAgIG1lbW9yeUNhcGFjaXR5OiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWl5YaF5a2Y5a656YePJywKICAgICAgICAgIHRyaWdnZXI6IFsnYmx1cicsICdjaGFuZ2UnXQogICAgICAgIH1dLAogICAgICAgIGRhdGFDYXBhY2l0eTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpeaVsOaNrumHjycsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2JsdXInLCAnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICBhcHBseVVuaXRPcGluaW9uOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWl55Sz6K+35Y2V5L2N5oSP6KeBJywKICAgICAgICAgIHRyaWdnZXI6IFsnYmx1cicsICdjaGFuZ2UnXQogICAgICAgIH1dLAogICAgICAgIG1hbmFnZXJVbml0T3BpbmlvbjogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpeS4u+euoeWNleS9jeaEj+ingScsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2JsdXInLCAnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICBjcHVOdW1Ub3RhbDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpScsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2JsdXInLCAnY2hhbmdlJ10KICAgICAgICB9LCB7CiAgICAgICAgICB2YWxpZGF0b3I6IHRoaXMudmFsaWRhdGVDcHVOdW1Ub3RhbCwKICAgICAgICAgIHRyaWdnZXI6IFsnYmx1cicsICdjaGFuZ2UnXQogICAgICAgIH1dLAogICAgICAgIGNwdU51bVVzZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpScsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2JsdXInLCAnY2hhbmdlJ10KICAgICAgICB9LCB7CiAgICAgICAgICB2YWxpZGF0b3I6IHRoaXMudmFsaWRhdGVDcHVOdW1Vc2UsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2JsdXInLCAnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICBjcHVOdW1Vc2VSYXRlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWlJywKICAgICAgICAgIHRyaWdnZXI6IFsnYmx1cicsICdjaGFuZ2UnXQogICAgICAgIH1dLAogICAgICAgIG1lbW9yeUNhcGFjaXR5VG90YWw6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfor7fovpPlhaUnLAogICAgICAgICAgdHJpZ2dlcjogWydibHVyJywgJ2NoYW5nZSddCiAgICAgICAgfSwgewogICAgICAgICAgdmFsaWRhdG9yOiB0aGlzLnZhbGlkYXRlQ2FwYWNpdHlUb3RhbCwKICAgICAgICAgIHRyaWdnZXI6IFsnYmx1cicsICdjaGFuZ2UnXQogICAgICAgIH1dLAogICAgICAgIG1lbW9yeUNhcGFjaXR5VXNlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWlJywKICAgICAgICAgIHRyaWdnZXI6IFsnYmx1cicsICdjaGFuZ2UnXQogICAgICAgIH0sIHsKICAgICAgICAgIHZhbGlkYXRvcjogdGhpcy52YWxpZGF0ZUNhcGFjaXR5VXNlLAogICAgICAgICAgdHJpZ2dlcjogWydibHVyJywgJ2NoYW5nZSddCiAgICAgICAgfV0sCiAgICAgICAgbWVtb3J5Q2FwYWNpdHlVc2VSYXRlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWlJywKICAgICAgICAgIHRyaWdnZXI6IFsnYmx1cicsICdjaGFuZ2UnXQogICAgICAgIH1dLAogICAgICAgIHN0b3JhZ2VDYXBhY2l0eVRvdGFsOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWlJywKICAgICAgICAgIHRyaWdnZXI6IFsnYmx1cicsICdjaGFuZ2UnXQogICAgICAgIH0sIHsKICAgICAgICAgIHZhbGlkYXRvcjogdGhpcy52YWxpZGF0ZVN0b3JhZ2VUb3RhbCwKICAgICAgICAgIHRyaWdnZXI6IFsnYmx1cicsICdjaGFuZ2UnXQogICAgICAgIH1dLAogICAgICAgIHN0b3JhZ2VDYXBhY2l0eVVzZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpScsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2JsdXInLCAnY2hhbmdlJ10KICAgICAgICB9LCB7CiAgICAgICAgICB2YWxpZGF0b3I6IHRoaXMudmFsaWRhdGVTdG9yYWdlVXNlLAogICAgICAgICAgdHJpZ2dlcjogWydibHVyJywgJ2NoYW5nZSddCiAgICAgICAgfV0sCiAgICAgICAgc3RvcmFnZUNhcGFjaXR5VXNlUmF0ZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpScsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2JsdXInLCAnY2hhbmdlJ10KICAgICAgICB9XQogICAgICB9LAogICAgICBkYWRUb1NvbjogewogICAgICAgIGJpelBhdGg6ICdyZXNvdXJjZUFwcGx5JywKICAgICAgICBmaWxlTGlzdDogW10KICAgICAgfSwKICAgICAgc2F2aW5nOiBmYWxzZSwKICAgICAgbG9hZGluZ0RldGFpbDogZmFsc2UsCiAgICAgIGRldGFpbFRhYmxlRGF0YTogW10sCiAgICAgIGRldGFpbERlbElkOiBbXSwKICAgICAgcmVhZE9ubHk6IGZhbHNlLAogICAgICBhdWRpdDogZmFsc2UsCiAgICAgIGZpbmlzaDogZmFsc2UsCiAgICAgIHBhZ2VUeXBlOiAnJywKICAgICAgb3JpZ2luVXNlRGF0YTogW3sKICAgICAgICBjbG91ZFR5cGU6IDEsCiAgICAgICAgdXNlVHlwZTogMQogICAgICB9LCB7CiAgICAgICAgY2xvdWRUeXBlOiAxLAogICAgICAgIHVzZVR5cGU6IDIKICAgICAgfSwgewogICAgICAgIGNsb3VkVHlwZTogMiwKICAgICAgICB1c2VUeXBlOiAxCiAgICAgIH0sIHsKICAgICAgICBjbG91ZFR5cGU6IDIsCiAgICAgICAgdXNlVHlwZTogMgogICAgICB9XQogICAgfTsKICB9LAogIGNvbXBvbmVudHM6IHsKICAgIGFwcGx5QXBwcm92YWw6IGFwcGx5QXBwcm92YWwsCiAgICBhcHBseURldGFpbEZvcm06IGFwcGx5RGV0YWlsRm9ybSwKICAgIGFwcGx5UmVjb3JkOiBhcHBseVJlY29yZCwKICAgIGZpbGVVcGxvYWQ6IGZpbGVVcGxvYWQKICB9LAogIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7CiAgICBpZiAodGhpcy4kcm91dGUucXVlcnkpIHsKICAgICAgdGhpcy5oYW5kbGVPcGVuKHRoaXMuJHJvdXRlLnF1ZXJ5LnBhZ2VUeXBlLCB0aGlzLiRyb3V0ZS5xdWVyeS50eXBlLCB0aGlzLiRyb3V0ZS5xdWVyeS5pZCk7CiAgICAgIHRoaXMuc2VsZWN0ZWRNZW51ID0gdGhpcy4kcm91dGUucXVlcnkuc2VsZWN0ZWRNZW51OwogICAgfQogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHt9LAogIG1ldGhvZHM6IHsKICAgIGdldERpY3Rpb25hcnlCeUNvZGU6IGdldERpY3Rpb25hcnlCeUNvZGUsCiAgICAvLyDov5Tlm54KICAgIGdvQmFjazogZnVuY3Rpb24gZ29CYWNrKCkgewogICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7CiAgICAgICAgcGF0aDogJy9wbGF0TGF5b3V0L3Jlc291cmNlTGlzdFBhZ2UnLAogICAgICAgIHF1ZXJ5OiB7CiAgICAgICAgICBwYWdlVHlwZTogdGhpcy5wYWdlVHlwZSwKICAgICAgICAgIHNlbGVjdGVkTWVudTogdGhpcy5zZWxlY3RlZE1lbnUKICAgICAgICB9CiAgICAgIH0pOwogICAgICB0aGlzLmhhbmRsZUNsb3NlKCk7CiAgICB9LAogICAgaGFuZGxlSW5pdERpY3Q6IGZ1bmN0aW9uIGhhbmRsZUluaXREaWN0KCkgewogICAgICB0aGlzLmNsb3VkVHlwZSA9IHRoaXMuZ2V0RGljdGlvbmFyeUJ5Q29kZSgnenktc3N5cHQnKTsKICAgICAgaWYgKHRoaXMuY2xvdWRUeXBlLmxlbmd0aCkgewogICAgICAgIHRoaXMuYXBwbHlmb3JtLmNsb3VkVHlwZSA9IHBhcnNlSW50KHRoaXMuY2xvdWRUeXBlWzBdLnZhbHVlKTsKICAgICAgfQogICAgfSwKICAgIGhhbmRsZU9wZW46IGZ1bmN0aW9uIGhhbmRsZU9wZW4ocGFnZVR5cGUsIHR5cGUsIGlkKSB7CiAgICAgIHRoaXMucGFnZVR5cGUgPSBwYWdlVHlwZTsKICAgICAgdGhpcy50eXBlID0gdHlwZTsKICAgICAgdGhpcy5oYW5kbGVJbml0RGljdCgpOwogICAgICBpZiAodHlwZSA9PT0gJ2FkZCcpIHsKICAgICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlOwogICAgICAgIHRoaXMuZ2V0Q2xvdWRVc2VhZ2UoJ2luaXQnKTsKICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnZWRpdCcpIHsKICAgICAgICB0aGlzLmlkID0gaWQ7CiAgICAgICAgdGhpcy5oYW5kbGVRdWVyeUFwcGx5KCk7CiAgICAgICAgdGhpcy5oYW5kbGVRdWVyeUFwcGx5RGV0YWlsKCk7CiAgICAgICAgdGhpcy5nZXRDbG91ZFVzZWFnZSgpOwogICAgICB9CiAgICB9LAogICAgLy8g5paw5aKe5pe26I635Y+W5LqR6LWE5rqQ5L2/55So5oOF5Ya1CiAgICBnZXRDbG91ZFVzZWFnZTogZnVuY3Rpb24gZ2V0Q2xvdWRVc2VhZ2UodHlwZSkgewogICAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7CiAgICAgICAgdmFyIF95aWVsZCRfZ2V0Q2xvdWRVc2VhZywgc3RhdGUsIHZhbHVlLCB0ZW1wRGF0YTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gX2dldENsb3VkVXNlYWdlKCk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBfeWllbGQkX2dldENsb3VkVXNlYWcgPSBfY29udGV4dC5zZW50OwogICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJF9nZXRDbG91ZFVzZWFnLnN0YXRlOwogICAgICAgICAgICAgIHZhbHVlID0gX3lpZWxkJF9nZXRDbG91ZFVzZWFnLnZhbHVlOwogICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgX3RoaXMubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgdGVtcERhdGEgPSBbXTsKICAgICAgICAgICAgICAgIHZhbHVlLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuY2xvdWRUeXBlIC0gYi5jbG91ZFR5cGU7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgdmFyIG5ld0l0ZW0gPSB7CiAgICAgICAgICAgICAgICAgICAgY2xvdWRUeXBlOiBpdGVtLmNsb3VkVHlwZSwKICAgICAgICAgICAgICAgICAgICBjcHVOdW1Ub3RhbDogaXRlbS5jcHVOdW1Ub3RhbCwKICAgICAgICAgICAgICAgICAgICBjcHVOdW1Vc2U6IGl0ZW0uY3B1TnVtVXNlLAogICAgICAgICAgICAgICAgICAgIGNwdU51bVVzZVJhdGU6IGl0ZW0uY3B1TnVtVXNlUmF0ZSwKICAgICAgICAgICAgICAgICAgICBtZW1vcnlDYXBhY2l0eVRvdGFsOiBpdGVtLm1lbW9yeUNhcGFjaXR5VG90YWwsCiAgICAgICAgICAgICAgICAgICAgbWVtb3J5Q2FwYWNpdHlVc2U6IGl0ZW0ubWVtb3J5Q2FwYWNpdHlVc2UsCiAgICAgICAgICAgICAgICAgICAgbWVtb3J5Q2FwYWNpdHlVc2VSYXRlOiBpdGVtLm1lbW9yeUNhcGFjaXR5VXNlUmF0ZSwKICAgICAgICAgICAgICAgICAgICBzdG9yYWdlQ2FwYWNpdHlUb3RhbDogaXRlbS5zdG9yYWdlQ2FwYWNpdHlUb3RhbCwKICAgICAgICAgICAgICAgICAgICBzdG9yYWdlQ2FwYWNpdHlVc2U6IGl0ZW0uc3RvcmFnZUNhcGFjaXR5VXNlLAogICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VDYXBhY2l0eVVzZVJhdGU6IGl0ZW0uc3RvcmFnZUNhcGFjaXR5VXNlUmF0ZQogICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICB0ZW1wRGF0YS5wdXNoKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgbmV3SXRlbSksIHt9LCB7CiAgICAgICAgICAgICAgICAgICAgdXNlVHlwZTogMQogICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgIHRlbXBEYXRhLnB1c2goX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBuZXdJdGVtKSwge30sIHsKICAgICAgICAgICAgICAgICAgICB1c2VUeXBlOiAyCiAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdpbml0JykgewogICAgICAgICAgICAgICAgICBfdGhpcy5hcHBseWZvcm0uY2xvdWRBcHBseVVzZURldGFpbGVkTGlzdCA9IHRlbXBEYXRhOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX3RoaXMub3JpZ2luVXNlRGF0YSA9IF8uY2xvbmVEZWVwKHRlbXBEYXRhKTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgX3RoaXMubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGhhbmRsZUZpbGVDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZUZpbGVDaGFuZ2UoZGF0YSkgewogICAgICB0aGlzLmFwcGx5Zm9ybS5jbG91ZEFwcGx5RmlsZSA9IGRhdGE7CiAgICB9LAogICAgaGFuZGxlUmVjb3JkOiBmdW5jdGlvbiBoYW5kbGVSZWNvcmQoKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXMyLiRyZWZzLmFwcGx5UmVjb3JkLmhhbmRsZU9wZW4oX3RoaXMyLmFwcGx5Zm9ybSk7CiAgICAgIH0pOwogICAgfSwKICAgIGhhbmRsZVNhdmU6IGZ1bmN0aW9uIGhhbmRsZVNhdmUoKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICB0aGlzLnNhdmluZyA9IHRydWU7CiAgICAgIHRoaXMuJHJlZnMuYXBwbHlmb3JtLnZhbGlkYXRlKC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoYm9vbCwgb2JqZWN0KSB7CiAgICAgICAgICB2YXIgc3VibWl0RGF0YSwgdGVtcERhdGEsIF95aWVsZCRzYXZlQXBwbHksIHN0YXRlLCBtZXNzYWdlLCB2YWx1ZTsKICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBpZiAoIWJvb2wpIHsKICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxNTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdWJtaXREYXRhID0ge307CiAgICAgICAgICAgICAgICB0ZW1wRGF0YSA9IF8uY2xvbmVEZWVwKF90aGlzMy5hcHBseWZvcm0pOwogICAgICAgICAgICAgICAgc3VibWl0RGF0YS5jbG91ZEFwcGx5ID0gdGVtcERhdGE7CiAgICAgICAgICAgICAgICBzdWJtaXREYXRhLmNsb3VkQXBwbHlVc2VEZXRhaWxlZExpc3QgPSB0ZW1wRGF0YS5jbG91ZEFwcGx5VXNlRGV0YWlsZWRMaXN0OwogICAgICAgICAgICAgICAgZGVsZXRlIHN1Ym1pdERhdGEuY2xvdWRBcHBseS5jbG91ZEFwcGx5VXNlRGV0YWlsZWRMaXN0OwogICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSA4OwogICAgICAgICAgICAgICAgcmV0dXJuIHNhdmVBcHBseShzdWJtaXREYXRhKTsKICAgICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgICBfeWllbGQkc2F2ZUFwcGx5ID0gX2NvbnRleHQyLnNlbnQ7CiAgICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCRzYXZlQXBwbHkuc3RhdGU7CiAgICAgICAgICAgICAgICBtZXNzYWdlID0gX3lpZWxkJHNhdmVBcHBseS5tZXNzYWdlOwogICAgICAgICAgICAgICAgdmFsdWUgPSBfeWllbGQkc2F2ZUFwcGx5LnZhbHVlOwogICAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICAgIF90aGlzMy5zYXZpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgX3RoaXMzLmlkID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS5zdWNjZXNzKCfkupHotYTmupDnlLPor7fln7rnoYDkv6Hmga/kv53lrZjmiJDlip/vvIEnKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIF90aGlzMy5zYXZpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgX3RoaXMzLiRtZXNzYWdlLndhcm5pbmcobWVzc2FnZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDE3OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS53YXJuaW5nKCJcdTY3MDkiLmNvbmNhdChPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCwgIlx1NEUyQVx1NUI1N1x1NkJCNVx1NjcyQVx1OTAxQVx1OEZDN1x1NjgyMVx1OUE4Q1x1RkYwQ1x1OEJGN1x1NkI2M1x1Nzg2RVx1NTg2Qlx1NTE5OVx1ODg2OFx1NTM1NVx1NTE4NVx1NUJCOVx1MzAwMiIpKTsKICAgICAgICAgICAgICAgIF90aGlzMy5zYXZpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICBjYXNlIDE3OgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTIpOwogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94LCBfeDIpIHsKICAgICAgICAgIHJldHVybiBfcmVmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKTsKICAgIH0sCiAgICBoYW5kbGVRdWVyeUFwcGx5OiBmdW5jdGlvbiBoYW5kbGVRdWVyeUFwcGx5KCkgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMygpIHsKICAgICAgICB2YXIgX3lpZWxkJGdldEFwcGx5LCBjbG91ZEFwcGx5LCBjbG91ZEFwcGx5VXNlRGV0YWlsZWRMaXN0OwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIGdldEFwcGx5KF90aGlzNC5pZCk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBfeWllbGQkZ2V0QXBwbHkgPSBfY29udGV4dDMuc2VudDsKICAgICAgICAgICAgICBjbG91ZEFwcGx5ID0gX3lpZWxkJGdldEFwcGx5LmNsb3VkQXBwbHk7CiAgICAgICAgICAgICAgY2xvdWRBcHBseVVzZURldGFpbGVkTGlzdCA9IF95aWVsZCRnZXRBcHBseS5jbG91ZEFwcGx5VXNlRGV0YWlsZWRMaXN0OwogICAgICAgICAgICAgIGlmIChjbG91ZEFwcGx5KSB7CiAgICAgICAgICAgICAgICBfdGhpczQuYXBwbHlmb3JtID0gY2xvdWRBcHBseTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKGNsb3VkQXBwbHlVc2VEZXRhaWxlZExpc3QpIHsKICAgICAgICAgICAgICAgIF90aGlzNC5hcHBseWZvcm0uY2xvdWRBcHBseVVzZURldGFpbGVkTGlzdCA9IGNsb3VkQXBwbHlVc2VEZXRhaWxlZExpc3Q7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF90aGlzNC5zdGF0dXMgPSBfdGhpczQuYXBwbHlmb3JtLnN0YXR1czsKICAgICAgICAgICAgICBfdGhpczQucmVhZE9ubHkgPSAhKF90aGlzNC5hcHBseWZvcm0uc3RhdHVzID09PSAwIHx8IF90aGlzNC5hcHBseWZvcm0uc3RhdHVzID09PSAyMCk7CiAgICAgICAgICAgICAgX3RoaXM0LmF1ZGl0ID0gX3RoaXM0LmFwcGx5Zm9ybS5zdGF0dXMgPT09IDEwOwogICAgICAgICAgICAgIGlmIChfdGhpczQuYXBwbHlmb3JtLnN0YXR1cyA9PT0gMzApIHsKICAgICAgICAgICAgICAgIF90aGlzNC5maW5pc2ggPSB0cnVlOwogICAgICAgICAgICAgICAgX3RoaXM0LmFjdGl2ZU5hbWVzID0gWycyJ107CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF90aGlzNC5maW5pc2ggPSBmYWxzZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKF90aGlzNC5hcHBseWZvcm0uY2xvdWRBcHBseUZpbGUpIHsKICAgICAgICAgICAgICAgIF90aGlzNC4kc2V0KF90aGlzNC5kYWRUb1NvbiwgJ2ZpbGVMaXN0JywgX3RoaXM0LmFwcGx5Zm9ybS5jbG91ZEFwcGx5RmlsZSk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF90aGlzNC4kc2V0KF90aGlzNC5kYWRUb1NvbiwgJ2ZpbGVMaXN0JywgW10pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfdGhpczQuZGlhbG9nVmlzaWJsZSA9IHRydWU7CiAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTMpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDmn6Xor6LotYTmupDmmI7nu4YKICAgIGhhbmRsZVF1ZXJ5QXBwbHlEZXRhaWw6IGZ1bmN0aW9uIGhhbmRsZVF1ZXJ5QXBwbHlEZXRhaWwoKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU0KCkgewogICAgICAgIHZhciByZXM7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gZ2V0QXBwbHlEZXRhaWwoX3RoaXM1LmlkKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIHJlcyA9IF9jb250ZXh0NC5zZW50OwogICAgICAgICAgICAgIF90aGlzNS5kZXRhaWxUYWJsZURhdGEgPSByZXMudmFsdWUgfHwgW107CiAgICAgICAgICAgICAgLy8gdGhpcy5sb2FkaW5nRGV0YWlsID0gZmFsc2UKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU0KTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgaGFuZGxlQWRkRGV0YWlsOiBmdW5jdGlvbiBoYW5kbGVBZGREZXRhaWwoKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICBpZiAoIXRoaXMuaWQpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+WFiOS/neWtmOS6kei1hOa6kOeUs+ivt+WfuuehgOS/oeaBr++8jOWGjea3u+WKoOi1hOa6kOeUs+ivt+aYjue7hu+8gScpOwogICAgICAgIHJldHVybjsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICBfdGhpczYuJHJlZnMuYXBwbHlEZXRhaWxGb3JtLmhhbmRsZU9wZW4oX3RoaXM2LnBhZ2VUeXBlLCAnYWRkJywgX3RoaXM2LmlkLCB7CiAgICAgICAgICAgIGNsb3VkVHlwZTogX3RoaXM2LmFwcGx5Zm9ybS5jbG91ZFR5cGUKICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICB9CiAgICB9LAogICAgaGFuZGxlRWRpdERldGFpbDogZnVuY3Rpb24gaGFuZGxlRWRpdERldGFpbChyb3cpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgdHlwZSA9ICdlZGl0JzsKICAgICAgICBpZiAoX3RoaXM3LnJlYWRPbmx5KSB7CiAgICAgICAgICB0eXBlID0gJ3JlYWRPbmx5JzsKICAgICAgICB9CiAgICAgICAgaWYgKF90aGlzNy5maW5pc2ggJiYgX3RoaXM3LnJlYWRPbmx5KSB7CiAgICAgICAgICB0eXBlID0gJ2V4Y3V0ZSc7CiAgICAgICAgfQogICAgICAgIF90aGlzNy4kcmVmcy5hcHBseURldGFpbEZvcm0uaGFuZGxlT3BlbihfdGhpczcucGFnZVR5cGUsIHR5cGUsIF90aGlzNy5pZCwgcm93KTsKICAgICAgfSk7CiAgICB9LAogICAgaGFuZGxlU2VsZWN0aW9uQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVTZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0aW9uKSB7CiAgICAgIHRoaXMuZGV0YWlsRGVsSWQgPSBzZWxlY3Rpb24ubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgcmV0dXJuIGl0ZW0uY2xvdWRBcHBseURldGFpbC5pZDsKICAgICAgfSk7CiAgICB9LAogICAgaGFuZGxlRGVsRGV0YWlsOiBmdW5jdGlvbiBoYW5kbGVEZWxEZXRhaWwoKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICB0aGlzLiRjb25maXJtKCfnoa7lrprliKDpmaTlkJfvvJ8nLCAn5o+Q56S6JywgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9kZWxldGVBcHBseURldGFpbCA9IGRlbGV0ZUFwcGx5RGV0YWlsKF90aGlzOC5pZCksCiAgICAgICAgICBzdGF0ZSA9IF9kZWxldGVBcHBseURldGFpbC5zdGF0ZSwKICAgICAgICAgIG1lc3NhZ2UgPSBfZGVsZXRlQXBwbHlEZXRhaWwubWVzc2FnZTsKICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgIF90aGlzOC4kbWVzc2FnZS5zdWNjZXNzKCfotYTmupDnlLPor7fmmI7nu4bliKDpmaTmiJDlip/vvIEnKTsKICAgICAgICAgIF90aGlzOC5oYW5kbGVRdWVyeUFwcGx5RGV0YWlsKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF90aGlzOC4kbWVzc2FnZS53YXJuaW5nKG1lc3NhZ2UpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAogICAgLy8g5a6h5qC4CiAgICBoYW5kbGVBcHByb3ZhbDogZnVuY3Rpb24gaGFuZGxlQXBwcm92YWwodHlwZSkgewogICAgICB2YXIgX3RoaXM5ID0gdGhpczsKICAgICAgaWYgKCF0aGlzLmlkKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor7flhYjloavlhpnnp4HmnInkupHotYTmupDkv6Hmga/vvIzlho3lj5HotbflrqHmoLjvvIEnKTsKICAgICAgICByZXR1cm47CiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuZGV0YWlsVGFibGVEYXRhLmxlbmd0aCkgewogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygn6K+35YWI5aGr5YaZ56eB5pyJ5LqR6LWE5rqQ55Sz6K+35piO57uG77yM5YaN5Y+R6LW35a6h5qC477yBJyk7CiAgICAgICAgcmV0dXJuOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIF90aGlzOS4kcmVmcy5hcHBseUFwcHJvdmFsLmhhbmRsZU9wZW4odHlwZSwgX3RoaXM5LmlkKTsKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKICAgIC8v55Sz6K+36KGo5a+85Ye6CiAgICBhcHBsaWNhdGlvbkZvcm06IGZ1bmN0aW9uIGFwcGxpY2F0aW9uRm9ybSgpIHsKICAgICAgdmFyIF90aGlzMTAgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KCkgewogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNSQoX2NvbnRleHQ1KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDUucHJldiA9IF9jb250ZXh0NS5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIGRvd25sb2FkQXBwbHkoX3RoaXMxMC5pZCk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBfdGhpczEwLiRtZXNzYWdlLnN1Y2Nlc3MoJ+WvvOWHuuaIkOWKnycpOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NS5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDliKDpmaQKICAgIGRlbGV0ZVJvdXJjZUNoYW5nZTogZnVuY3Rpb24gZGVsZXRlUm91cmNlQ2hhbmdlKCkgewogICAgICB2YXIgX3RoaXMxMSA9IHRoaXM7CiAgICAgIHRoaXMuYnV0dG9uTG9hZGluZyA9IHRydWU7CiAgICAgIHRoaXMuJGNvbmZpcm0oJ+ehruWumuWIoOmZpOWQl++8nycsICfmj5DnpLonLCB7CiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgX2RlbGV0ZUFwcGx5TGlzdCA9IGRlbGV0ZUFwcGx5TGlzdChfdGhpczExLmlkKSwKICAgICAgICAgIHN0YXRlID0gX2RlbGV0ZUFwcGx5TGlzdC5zdGF0ZSwKICAgICAgICAgIG1lc3NhZ2UgPSBfZGVsZXRlQXBwbHlMaXN0Lm1lc3NhZ2U7CiAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICBfdGhpczExLmJ1dHRvbkxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgIF90aGlzMTEuZ29CYWNrKCk7CiAgICAgICAgICBfdGhpczExLiRtZXNzYWdlLnN1Y2Nlc3MoJ+WIoOmZpOaIkOWKnycpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfdGhpczExLmJ1dHRvbkxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgIF90aGlzMTEuJG1lc3NhZ2Uud2FybmluZyhtZXNzYWdlKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIGhhbmRsZUNsb3NlOiBmdW5jdGlvbiBoYW5kbGVDbG9zZSgpIHsKICAgICAgdGhpcy4kc2V0KHRoaXMuZGFkVG9Tb24sICdmaWxlTGlzdCcsIFtdKTsKICAgICAgdGhpcy5hY3RpdmVOYW1lcyA9IFsnMSddOwogICAgICB0aGlzLnR5cGUgPSAnJzsKICAgICAgdGhpcy5yZWFkT25seSA9IGZhbHNlOwogICAgICB0aGlzLmF1ZGl0ID0gZmFsc2U7CiAgICAgIHRoaXMuZmluaXNoID0gZmFsc2U7CiAgICAgIHRoaXMucGFnZVR5cGUgPSAnJzsKICAgICAgdGhpcy5pZCA9ICcnOwogICAgICB0aGlzLmFwcGx5Zm9ybSA9IHsKICAgICAgICBhcHBseURhdGU6IG1vbWVudCgpLmZvcm1hdCgnWVlZWS1NTS1ERCcpLAogICAgICAgIGNsb3VkVHlwZTogbnVsbCwKICAgICAgICBjbG91ZEFwcGx5RmlsZTogW10sCiAgICAgICAgY2xvdWRBcHBseVVzZURldGFpbGVkTGlzdDogW3sKICAgICAgICAgIGNsb3VkVHlwZTogMSwKICAgICAgICAgIHVzZVR5cGU6IDEKICAgICAgICB9LCB7CiAgICAgICAgICBjbG91ZFR5cGU6IDEsCiAgICAgICAgICB1c2VUeXBlOiAyCiAgICAgICAgfSwgewogICAgICAgICAgY2xvdWRUeXBlOiAyLAogICAgICAgICAgdXNlVHlwZTogMQogICAgICAgIH0sIHsKICAgICAgICAgIGNsb3VkVHlwZTogMiwKICAgICAgICAgIHVzZVR5cGU6IDIKICAgICAgICB9XQogICAgICB9OwogICAgICB0aGlzLmRldGFpbFRhYmxlRGF0YSA9IFtdOwogICAgICB0aGlzLmRldGFpbERlbElkID0gW107CiAgICAgIHRoaXMub3JpZ2luVXNlRGF0YSA9IFtdOyAvLyDotYTmupDkvb/nlKjmg4XlhrXljp/lp4vmlbDmja4KICAgICAgdGhpcy4kZW1pdCgncmVsb2FkJyk7CiAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IGZhbHNlOwogICAgfSwKICAgIC8vIOS6keW5s+WPsOexu+Wei+WPmOWMlu+8jOa4heepuuW6lOeUqOezu+e7n+inhOaooeaVsOaNru+8jOi/mOWOn+WIhumFjeWQjuaVsOaNrgogICAgaGFuZGxlQ2hhbmdlQ2xvdWRUeXBlOiBmdW5jdGlvbiBoYW5kbGVDaGFuZ2VDbG91ZFR5cGUoKSB7CiAgICAgIGRlbGV0ZSB0aGlzLmFwcGx5Zm9ybS5jcHVOdW07CiAgICAgIGRlbGV0ZSB0aGlzLmFwcGx5Zm9ybS5kYXRhQ2FwYWNpdHk7CiAgICAgIGRlbGV0ZSB0aGlzLmFwcGx5Zm9ybS5tZW1vcnlDYXBhY2l0eTsKICAgICAgdGhpcy5hcHBseWZvcm0uY2xvdWRBcHBseVVzZURldGFpbGVkTGlzdCA9IF8uY2xvbmVEZWVwKHRoaXMub3JpZ2luVXNlRGF0YSk7CiAgICAgIHRoaXMuJGZvcmNlVXBkYXRlKCk7CiAgICB9LAogICAgLy8g55Sz6K+35pWw5o2u5Y+Y5YyW77yM5aKe5Yqg5L2/55So5YC8CiAgICBoYW5kbGVDaGFuZ2VBcHBseVVzZTogZnVuY3Rpb24gaGFuZGxlQ2hhbmdlQXBwbHlVc2UoZGF0YVR5cGUsIGNsb3VkVHlwZSwgY3VyVikgewogICAgICB2YXIgY2hhbmdlRGF0YSwgb3JpZ2luRGF0YSwgaW5kZXg7CiAgICAgIGlmIChjbG91ZFR5cGUgPT09IDEpIHsKICAgICAgICBjaGFuZ2VEYXRhID0gdGhpcy5hcHBseWZvcm0uY2xvdWRBcHBseVVzZURldGFpbGVkTGlzdFsxXTsKICAgICAgICBvcmlnaW5EYXRhID0gdGhpcy5vcmlnaW5Vc2VEYXRhWzFdOwogICAgICAgIGluZGV4ID0gMTsKICAgICAgfSBlbHNlIGlmIChjbG91ZFR5cGUgPT09IDIpIHsKICAgICAgICBjaGFuZ2VEYXRhID0gdGhpcy5hcHBseWZvcm0uY2xvdWRBcHBseVVzZURldGFpbGVkTGlzdFszXTsKICAgICAgICBvcmlnaW5EYXRhID0gdGhpcy5vcmlnaW5Vc2VEYXRhWzNdOwogICAgICAgIGluZGV4ID0gMzsKICAgICAgfQogICAgICB2YXIgY3VycmVudFZhbFRhbnMgPSBjdXJWOwogICAgICAvLyDlhoXlrrnjgIHlgqjlrZjlrZfmrrXpnIDljZXkvY3mjaLnrpcgRyAtPiBUQiDkv53nlZky5L2N5bCP5pWwCiAgICAgIGlmIChkYXRhVHlwZSAhPT0gJ2NwdU51bScpIHsKICAgICAgICBjdXJyZW50VmFsVGFucyA9IHBhcnNlRmxvYXQoKGN1clYgLyAxMDI0KS50b0ZpeGVkKDIpKTsKICAgICAgfQogICAgICBjaGFuZ2VEYXRhWyIiLmNvbmNhdChkYXRhVHlwZSwgIlVzZSIpXSA9IHBhcnNlRmxvYXQoKG9yaWdpbkRhdGFbIiIuY29uY2F0KGRhdGFUeXBlLCAiVXNlIildICsgY3VycmVudFZhbFRhbnMpLnRvRml4ZWQoMikpOwogICAgICBjaGFuZ2VEYXRhWyIiLmNvbmNhdChkYXRhVHlwZSwgIlVzZVJhdGUiKV0gPSBwYXJzZUZsb2F0KChjaGFuZ2VEYXRhWyIiLmNvbmNhdChkYXRhVHlwZSwgIlVzZSIpXSAvIGNoYW5nZURhdGFbIiIuY29uY2F0KGRhdGFUeXBlLCAiVG90YWwiKV0gKiAxMDApLnRvRml4ZWQoMikpOwogICAgICB0aGlzLmFwcGx5Zm9ybS5jbG91ZEFwcGx5VXNlRGV0YWlsZWRMaXN0LnNwbGljZShpbmRleCwgMSwgY2hhbmdlRGF0YSk7CiAgICB9LAogICAgLy8g5oC75pWw5o2u5Y+Y5YyW6K6h566X5q+U546HCiAgICBoYW5kbGVDaGFuZ2VUb3RhbDogZnVuY3Rpb24gaGFuZGxlQ2hhbmdlVG90YWwoZGF0YVR5cGUsIGluZGV4LCBjdXJWKSB7CiAgICAgIHZhciBjaGFuZ2VEYXRhID0gdGhpcy5hcHBseWZvcm0uY2xvdWRBcHBseVVzZURldGFpbGVkTGlzdFtpbmRleF07CiAgICAgIGNoYW5nZURhdGFbIiIuY29uY2F0KGRhdGFUeXBlLCAiVXNlUmF0ZSIpXSA9IHBhcnNlRmxvYXQoKGNoYW5nZURhdGFbIiIuY29uY2F0KGRhdGFUeXBlLCAiVXNlIildIC8gY3VyViAqIDEwMCkudG9GaXhlZCgyKSk7CiAgICAgIHRoaXMuYXBwbHlmb3JtLmNsb3VkQXBwbHlVc2VEZXRhaWxlZExpc3Quc3BsaWNlKGluZGV4LCAxLCBjaGFuZ2VEYXRhKTsKICAgIH0sCiAgICAvLyDkvb/nlKjmlbDmja7lj5jljJborqHnrpfmr5TnjocKICAgIGhhbmRsZUNoYW5nZVVzZTogZnVuY3Rpb24gaGFuZGxlQ2hhbmdlVXNlKGRhdGFUeXBlLCBpbmRleCwgY3VyVikgewogICAgICB2YXIgY2hhbmdlRGF0YSA9IHRoaXMuYXBwbHlmb3JtLmNsb3VkQXBwbHlVc2VEZXRhaWxlZExpc3RbaW5kZXhdOwogICAgICBjaGFuZ2VEYXRhWyIiLmNvbmNhdChkYXRhVHlwZSwgIlVzZVJhdGUiKV0gPSBwYXJzZUZsb2F0KChjdXJWIC8gY2hhbmdlRGF0YVsiIi5jb25jYXQoZGF0YVR5cGUsICJUb3RhbCIpXSAqIDEwMCkudG9GaXhlZCgyKSk7CiAgICAgIHRoaXMuYXBwbHlmb3JtLmNsb3VkQXBwbHlVc2VEZXRhaWxlZExpc3Quc3BsaWNlKGluZGV4LCAxLCBjaGFuZ2VEYXRhKTsKICAgIH0sCiAgICAvLyDmlbDmja7lrZfmrrXmoKHpqowKICAgIHZhbGlkYXRlQ3B1TnVtVG90YWw6IGZ1bmN0aW9uIHZhbGlkYXRlQ3B1TnVtVG90YWwocnVsZSwgdmFsdWUsIGNhbGxiYWNrKSB7CiAgICAgIHZhciBpbmRleCA9IHJ1bGUuZmllbGQuc3BsaXQoJy4nKVsxXTsKICAgICAgdmFyIHRhcmdldCA9IHRoaXMuYXBwbHlmb3JtLmNsb3VkQXBwbHlVc2VEZXRhaWxlZExpc3RbaW5kZXhdOwogICAgICBpZiAodGFyZ2V0LmNwdU51bVVzZSA+IHZhbHVlKSB7CiAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCdDUFXmgLvmoLjlv4PmlbDlsI/kuo7kvb/nlKjmoLjlv4PmlbDvvIEnKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY2FsbGJhY2soKTsKICAgICAgfQogICAgfSwKICAgIHZhbGlkYXRlQ3B1TnVtVXNlOiBmdW5jdGlvbiB2YWxpZGF0ZUNwdU51bVVzZShydWxlLCB2YWx1ZSwgY2FsbGJhY2spIHsKICAgICAgdmFyIGluZGV4ID0gcnVsZS5maWVsZC5zcGxpdCgnLicpWzFdOwogICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5hcHBseWZvcm0uY2xvdWRBcHBseVVzZURldGFpbGVkTGlzdFtpbmRleF07CiAgICAgIGlmICh0YXJnZXQuY3B1TnVtVG90YWwgPCB2YWx1ZSkgewogICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcignQ1BV5L2/55So5qC45b+D5pWw6LaF6L+H5oC75qC45b+D5pWw77yBJykpOwogICAgICB9IGVsc2UgewogICAgICAgIGNhbGxiYWNrKCk7CiAgICAgIH0KICAgIH0sCiAgICB2YWxpZGF0ZUNhcGFjaXR5VG90YWw6IGZ1bmN0aW9uIHZhbGlkYXRlQ2FwYWNpdHlUb3RhbChydWxlLCB2YWx1ZSwgY2FsbGJhY2spIHsKICAgICAgdmFyIGluZGV4ID0gcnVsZS5maWVsZC5zcGxpdCgnLicpWzFdOwogICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5hcHBseWZvcm0uY2xvdWRBcHBseVVzZURldGFpbGVkTGlzdFtpbmRleF07CiAgICAgIGlmICh0YXJnZXQubWVtb3J5Q2FwYWNpdHlVc2UgPiB2YWx1ZSkgewogICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcign5YaF5a2Y5oC75a656YeP5pWw5bCP5LqO5L2/55So5a656YeP77yBJykpOwogICAgICB9IGVsc2UgewogICAgICAgIGNhbGxiYWNrKCk7CiAgICAgIH0KICAgIH0sCiAgICB2YWxpZGF0ZUNhcGFjaXR5VXNlOiBmdW5jdGlvbiB2YWxpZGF0ZUNhcGFjaXR5VXNlKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaykgewogICAgICB2YXIgaW5kZXggPSBydWxlLmZpZWxkLnNwbGl0KCcuJylbMV07CiAgICAgIHZhciB0YXJnZXQgPSB0aGlzLmFwcGx5Zm9ybS5jbG91ZEFwcGx5VXNlRGV0YWlsZWRMaXN0W2luZGV4XTsKICAgICAgaWYgKHRhcmdldC5tZW1vcnlDYXBhY2l0eVRvdGFsIDwgdmFsdWUpIHsKICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoJ+WGheWtmOS9v+eUqOWuuemHj+aVsOi2hei/h+aAu+WuuemHj++8gScpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9CiAgICB9LAogICAgdmFsaWRhdGVTdG9yYWdlVG90YWw6IGZ1bmN0aW9uIHZhbGlkYXRlU3RvcmFnZVRvdGFsKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaykgewogICAgICB2YXIgaW5kZXggPSBydWxlLmZpZWxkLnNwbGl0KCcuJylbMV07CiAgICAgIHZhciB0YXJnZXQgPSB0aGlzLmFwcGx5Zm9ybS5jbG91ZEFwcGx5VXNlRGV0YWlsZWRMaXN0W2luZGV4XTsKICAgICAgaWYgKHRhcmdldC5zdG9yYWdlQ2FwYWNpdHlVc2UgPiB2YWx1ZSkgewogICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcign5YKo5a2Y5oC75a656YeP5bCP5LqO5L2/55So5a656YeP77yBJykpOwogICAgICB9IGVsc2UgewogICAgICAgIGNhbGxiYWNrKCk7CiAgICAgIH0KICAgIH0sCiAgICB2YWxpZGF0ZVN0b3JhZ2VVc2U6IGZ1bmN0aW9uIHZhbGlkYXRlU3RvcmFnZVVzZShydWxlLCB2YWx1ZSwgY2FsbGJhY2spIHsKICAgICAgdmFyIGluZGV4ID0gcnVsZS5maWVsZC5zcGxpdCgnLicpWzFdOwogICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5hcHBseWZvcm0uY2xvdWRBcHBseVVzZURldGFpbGVkTGlzdFtpbmRleF07CiAgICAgIGlmICh0YXJnZXQuc3RvcmFnZUNhcGFjaXR5VG90YWwgPCB2YWx1ZSkgewogICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcign5YKo5a2Y5L2/55So5a656YeP6LaF6L+H5oC75a656YeP77yBJykpOwogICAgICB9IGVsc2UgewogICAgICAgIGNhbGxiYWNrKCk7CiAgICAgIH0KICAgIH0KICB9Cn07"},null]}