{"remainingRequest":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataResource\\appLayer\\appLayerCatalogue\\fieldsManage.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataResource\\appLayer\\appLayerCatalogue\\fieldsManage.vue","mtime":1746730556257},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\babel.config.js","mtime":1733906004399},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZXJyb3IuY2F1c2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zb3J0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc3BsaWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC50ZXN0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCgppbXBvcnQgZGlhbG9nTWl4aW4gZnJvbSAnQC9taXhpbnMvZGlhbG9nLmpzJzsKaW1wb3J0IHV0aWxzIGZyb20gJ0AvaG90ZW50LXVpLXV0aWwuanMnOwppbXBvcnQgZW51bURpY3REaWFsb2cgZnJvbSAnLi9lbnVtRGljdERpYWxvZy52dWUnOwppbXBvcnQgbXVsdGlEaWN0RGlhbG9nIGZyb20gJy4vbXVsdGlEaWN0RGlhbG9nLnZ1ZSc7CmltcG9ydCB7IGdldERpY3Rpb25hcnlCeUNvZGUgfSBmcm9tICdAL3V0aWxzL2RpY3Rpb25hcnkuanMnOwppbXBvcnQgQVBJIGZyb20gJ0AvYXBpL2J1c2luZXNzL2RhdGFBUFBDYXRhbG9nJzsKaW1wb3J0IHsgbWFwU3RhdGUgfSBmcm9tICd2dWV4JzsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICdGaWVsZHNNYW5hZ2UnLAogIGNvbXBvbmVudHM6IHsKICAgIGVudW1EaWN0RGlhbG9nOiBlbnVtRGljdERpYWxvZywKICAgIG11bHRpRGljdERpYWxvZzogbXVsdGlEaWN0RGlhbG9nCiAgfSwKICBtaXhpbnM6IFtkaWFsb2dNaXhpbl0sCiAgcHJvcHM6IFtdLAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgdmFyIGNoZWNrZXkgPSBmdW5jdGlvbiBjaGVja2V5KHJ1bGUsIHZhbHVlLCBjYWxsYmFjaykgewogICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcign5a2X5q6157yW56CB5LiN6IO95Li656m6JykpOwogICAgICB9IGVsc2UgewogICAgICAgIGlmIChfdGhpcy5mb3JtLmF0dHJEYXRhLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgcmV0dXJuIGl0ZW0uY29kZSA9PT0gdmFsdWU7CiAgICAgICAgfSkubGVuZ3RoID4gMSkgewogICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCflrZfmrrXnvJbnoIHkuI3og73ph43lpI0hJykpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgIH0KICAgICAgfQogICAgfTsKICAgIHJldHVybiB7CiAgICAgIGZpZWxkc1J1bGVzOiB7CiAgICAgICAgbmFtZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+Wtl+auteWQjeensOS4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XSwKICAgICAgICBjb2RlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5a2X5q6157yW56CB5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH0sIHsKICAgICAgICAgIHBhdHRlcm46IC9eW2EtekEtWl1bYS16QS1aMC05X10qJC8sCiAgICAgICAgICBtZXNzYWdlOiAn5Lul5a2X5q+N5byA5aS055qE5a2X5q+N44CB5pWw5a2X44CB5LiL5YiS57q/57uE5ZCIJywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJywgJ2JsdXInXQogICAgICAgIH0sIHsKICAgICAgICAgIHZhbGlkYXRvcjogY2hlY2tleSwKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH1dCiAgICAgIH0sCiAgICAgIGZvcm06IHsKICAgICAgICBhdHRyRGF0YTogW10KICAgICAgfSwKICAgICAgaW1wb3J0RGF0YTogewogICAgICAgIHRhYmxlSWQ6ICcnCiAgICAgIH0sCiAgICAgIGRpYWxvZ1Zpc2libGVFbnVtOiBmYWxzZSwKICAgICAgZGlhbG9nVmlzaWJsZU11bHRpOiBmYWxzZSwKICAgICAgY3VycmVudFJvdzogbnVsbCwKICAgICAgaW5kZXg6IG51bGwsCiAgICAgIHRhYmVsRGF0YTogbnVsbCwKICAgICAgdGFibGVMb2FkaW5nOiBmYWxzZSwKICAgICAgdXBsb2FkTG9hZGluZzogZmFsc2UsCiAgICAgIHVwbG9hZFZpc2libGU6IGZhbHNlLAogICAgICBwdWJsaXNoZWQ6IGZhbHNlLAogICAgICBmaWVsZHNRdWVyeTogewogICAgICAgIHBhZ2VCZWFuOiB7CiAgICAgICAgICBwYWdlU2l6ZTogLTEKICAgICAgICB9LAogICAgICAgIHF1ZXJ5czogW3sKICAgICAgICAgIGdyb3VwOiAnbWFpbicsCiAgICAgICAgICBvcGVyYXRpb246ICdFUVVBTCcsCiAgICAgICAgICBwYXJlbnRHcm91cDogJycsCiAgICAgICAgICBwcm9wZXJ0eTogJ3RhYmxlSWQnLAogICAgICAgICAgcmVsYXRpb246ICdBTkQnLAogICAgICAgICAgdmFsdWU6ICcnCiAgICAgICAgfV0KICAgICAgfQogICAgfTsKICB9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7CiAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgIGRvY3VtZW50Lm9ua2V5ZG93biA9IGZ1bmN0aW9uICgpIHsKICAgICAgaWYgKF90aGlzMi5mb3JtLmF0dHJEYXRhKSB7CiAgICAgICAgdmFyIGtleSA9IHdpbmRvdy5ldmVudC5rZXlDb2RlOwogICAgICAgIGlmIChrZXkgPT0gMTEzKSB7CiAgICAgICAgICAvLyA9PSA4MyAmJiBldmVudC5jdHJsS2V5CiAgICAgICAgICBfdGhpczIuYWRkQXR0clJvd3MoKTsKICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBfdGhpczIuJHJlZnMuYXR0clRhYmxlU2Nyb2xsYmFySGVpZ2h0LmJvZHlXcmFwcGVyLnNjcm9sbFRvcCA9IF90aGlzMi4kcmVmcy5hdHRyVGFibGVTY3JvbGxiYXJIZWlnaHQuYm9keVdyYXBwZXIuc2Nyb2xsSGVpZ2h0OwogICAgICAgICAgfSwgNTAwKTsKICAgICAgICB9CiAgICAgIH0KICAgIH07CiAgfSwKICBjb21wdXRlZDogX29iamVjdFNwcmVhZCh7CiAgICBhY3Rpb25Vcmw6IGZ1bmN0aW9uIGFjdGlvblVybChfKSB7CiAgICAgIHJldHVybiAiIi5jb25jYXQod2luZG93LmNvbnRleHQucG9ydGFsLCAiL2Jpei9hcHAvY2F0YWxvZ3MvdGFibGUvZmllbGQvdjEvaW1wb3J0RmlsZSIpOwogICAgfQogIH0sIG1hcFN0YXRlKHsKICAgIGhlYWRlcnM6IGZ1bmN0aW9uIGhlYWRlcnMoc3RhdGUpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBBdXRob3JpemF0aW9uOiAiQmVhcmVyICIuY29uY2F0KHN0YXRlLmxvZ2luLmN1cnJlbnRVc2VyLnRva2VuKQogICAgICB9OwogICAgfQogIH0pKSwKICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge30sCiAgbWV0aG9kczogewogICAgaW5pdERhdGE6IGZ1bmN0aW9uIGluaXREYXRhKGRhdGEpIHsKICAgICAgdGhpcy50YWJlbERhdGEgPSBkYXRhOwogICAgICB0aGlzLmltcG9ydERhdGEudGFibGVJZCA9IGRhdGEuaWQ7CiAgICAgIHRoaXMucHVibGlzaGVkID0gdGhpcy50YWJlbERhdGEuZGVwbG95ZWQgPT09ICcxJzsKICAgICAgdGhpcy5nZXRGaWVsZHNCeVRhYmxlKCk7CiAgICB9LAogICAgZ2V0RmllbGRzQnlUYWJsZTogZnVuY3Rpb24gZ2V0RmllbGRzQnlUYWJsZSgpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHsKICAgICAgICB2YXIgX3lpZWxkJEFQSSRxdWVyeUZpZWxkLCBfeWllbGQkQVBJJHF1ZXJ5RmllbGQyLCByb3dzOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF90aGlzMy50YWJsZUxvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgIF90aGlzMy5maWVsZHNRdWVyeS5xdWVyeXNbMF0udmFsdWUgPSBfdGhpczMudGFiZWxEYXRhLmlkOwogICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAyOwogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA1OwogICAgICAgICAgICAgIHJldHVybiBBUEkucXVlcnlGaWVsZHNCeVRhYmxlSWQoX3RoaXMzLmZpZWxkc1F1ZXJ5KTsKICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgIF95aWVsZCRBUEkkcXVlcnlGaWVsZCA9IF9jb250ZXh0LnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRxdWVyeUZpZWxkMiA9IF95aWVsZCRBUEkkcXVlcnlGaWVsZC5yb3dzOwogICAgICAgICAgICAgIHJvd3MgPSBfeWllbGQkQVBJJHF1ZXJ5RmllbGQyID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCRBUEkkcXVlcnlGaWVsZDI7CiAgICAgICAgICAgICAgaWYgKHJvd3MubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICByb3dzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uZmllbGRWYWx1ZVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICBpdGVtLmZpZWxkVmFsdWVUeXBlID0gaXRlbS5maWVsZFZhbHVlVHlwZS50b1N0cmluZygpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIF90aGlzMy5mb3JtLmF0dHJEYXRhID0gcm93cy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZmllbGRUeXBlID09PSAnMic7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIF90aGlzMy5mb3JtLmF0dHJEYXRhLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuc24gLSBiLnNuOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF90aGlzMy5mb3JtLmF0dHJEYXRhID0gW107CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxNDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gMTE7CiAgICAgICAgICAgICAgX2NvbnRleHQudDAgPSBfY29udGV4dFsiY2F0Y2giXSgyKTsKICAgICAgICAgICAgICBfdGhpczMuJG1lc3NhZ2Uud2FybmluZyhfY29udGV4dC50MCB8fCAn6LWE5rqQ6aG55a2X5q615p+l6K+i5aSx6LSl77yBJyk7CiAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDE0OwogICAgICAgICAgICAgIF90aGlzMy50YWJsZUxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuZmluaXNoKDE0KTsKICAgICAgICAgICAgY2FzZSAxNzoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUsIG51bGwsIFtbMiwgMTEsIDE0LCAxN11dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgZ2V0RGljdGlvbmFyeUJ5Q29kZTogZ2V0RGljdGlvbmFyeUJ5Q29kZSwKICAgIGNoYW5nZURpY3Q6IGZ1bmN0aW9uIGNoYW5nZURpY3QoZGF0YSwga2V5KSB7CiAgICAgIHRoaXMuY3VycmVudFJvdy5kaW1lbnNpb25JZCA9IGRhdGFba2V5XTsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhLnNwbGljZSh0aGlzLmluZGV4LCAxLCB0aGlzLmN1cnJlbnRSb3cpOwogICAgfSwKICAgIC8vIOaWsOWinuWtl+autQogICAgYWRkQXR0clJvd3M6IGZ1bmN0aW9uIGFkZEF0dHJSb3dzKCkgewogICAgICB2YXIgbGFzdCA9IHRoaXMuZm9ybS5hdHRyRGF0YVt0aGlzLmZvcm0uYXR0ckRhdGEubGVuZ3RoIC0gMV07CiAgICAgIHZhciBzbiA9IGxhc3QgJiYgbGFzdC5zbiA/IGxhc3Quc24gKyAxIDogMTsKICAgICAgdmFyIHJvdyA9IHsKICAgICAgICB0YWJsZUlkOiB0aGlzLnRhYmVsRGF0YS5pZCwKICAgICAgICBjb2RlOiAnJywKICAgICAgICBuYW1lOiAnJywKICAgICAgICBkZXNjOiAnJywKICAgICAgICBmaWVsZFR5cGU6ICcyJywKICAgICAgICBpc0luaXRGaWxlZDogJ04nLAogICAgICAgIGlzUGs6ICcwJywKICAgICAgICBpc1JlcXVpcmVkOiAnMCcsCiAgICAgICAgdWlDb21Db2RlOiAnaW5wdXQnLAogICAgICAgIGRhdGFUeXBlOiAndmFyY2hhcicsCiAgICAgICAgZGVmYXVsdFZhbHVlOiAnJywKICAgICAgICBmb3JtYXQ6ICcnLAogICAgICAgIGZpZWxkVmFsdWVUeXBlOiAnMScsCiAgICAgICAgZGltZW5zaW9uSWQ6ICcnLAogICAgICAgIHVuaXQ6ICcnLAogICAgICAgIGF0dHJMZW5ndGg6IDIwMCwKICAgICAgICBkZWNpbWFsTGVuOiAwLAogICAgICAgIGlzRW5jcnlwdDogJzAnLAogICAgICAgIGlzRWRpdDogJzAnLAogICAgICAgIGlzRGVzZW5zaXRpemU6ICcwJywKICAgICAgICBpbmRleDogdGhpcy5mb3JtLmF0dHJEYXRhLmxlbmd0aCArIDEKICAgICAgfTsKICAgICAgc24gPyByb3cuc24gPSBzbiA6IG51bGw7CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YS5zcGxpY2UodGhpcy5mb3JtLmF0dHJEYXRhLmxlbmd0aCwgMCwgcm93KTsKICAgIH0sCiAgICBjaGFuZ2VGaWVsZFZhbHVlVHlwZTogZnVuY3Rpb24gY2hhbmdlRmllbGRWYWx1ZVR5cGUodmFsLCByb3csIGluZGV4KSB7CiAgICAgIHJvdy5kaW1lbnNpb25JZCA9ICcnOwogICAgICByb3cuZmllbGRWYWx1ZVR5cGUgPSB2YWw7CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YS5zcGxpY2UoaW5kZXgsIDEsIHJvdyk7CiAgICB9LAogICAgLy8gVUnnsbvlnovliIfmjaLorr7nva7pu5jorqTlgLwKICAgIGNoYW5nZVVJVHlwZTogZnVuY3Rpb24gY2hhbmdlVUlUeXBlKHZhbCwgcm93LCBpbmRleCkgewogICAgICBpZiAoIXRoaXMucHVibGlzaGVkICYmICFyb3cuaWQpIHsKICAgICAgICByb3cuZGF0YVR5cGUgPSAndmFyY2hhcic7CiAgICAgIH0KICAgICAgcm93LmZvcm1hdCA9ICcnOwogICAgICByb3cuZmllbGRWYWx1ZVR5cGUgPSAnMSc7CiAgICAgIGlmICh2YWwgPT09ICdkYXRlJykgewogICAgICAgIGlmICghdGhpcy5wdWJsaXNoZWQgJiYgIXJvdy5pZCkgewogICAgICAgICAgcm93LmRhdGFUeXBlID0gJ2RhdGUnOyAvLyDlj5HluIPlkI5VSeWSjOaVsOaNruexu+Wei+S4jeWFs+iBlAogICAgICAgIH0KICAgICAgICByb3cuZm9ybWF0ID0gJ3l5eXktTU0tZGQnOwogICAgICB9IGVsc2UgaWYgKHZhbCA9PT0gJ2RhdGV0aW1lJykgewogICAgICAgIGlmICghdGhpcy5wdWJsaXNoZWQgJiYgIXJvdy5pZCkgewogICAgICAgICAgcm93LmRhdGFUeXBlID0gJ2RhdGV0aW1lJzsgLy8g5Y+R5biD5ZCOVUnlkozmlbDmja7nsbvlnovkuI3lhbPogZQKICAgICAgICB9CiAgICAgICAgcm93LmZvcm1hdCA9ICd5eXl5LU1NLWRkIEhIOm1tOnNzJzsKICAgICAgfSBlbHNlIGlmICh2YWwgPT09ICdzZWxlY3QnIHx8IHZhbCA9PT0gJ2NoZWNrYm94JyB8fCB2YWwgPT09ICdyYWRpbycpIHsKICAgICAgICByb3cuZmllbGRWYWx1ZVR5cGUgPSAnMic7CiAgICAgIH0KICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhLnNwbGljZShpbmRleCwgMSwgcm93KTsKICAgIH0sCiAgICAvLyDmlbDmja7nsbvlnovliIfmjaLorr7nva7pu5jorqTlgLwKICAgIGNoYW5nZURhdGFUeXBlOiBmdW5jdGlvbiBjaGFuZ2VEYXRhVHlwZSh2YWwsIHJvdywgaW5kZXgpIHsKICAgICAgcm93LmF0dHJMZW5ndGggPSAwOwogICAgICByb3cuZGVjaW1hbExlbiA9IDA7CiAgICAgIHJvdy5mb3JtYXQgPSAnJzsKICAgICAgcm93LmZpZWxkVmFsdWVUeXBlID0gJzEnOwogICAgICByb3cuZGltZW5zaW9uSWQgPSAnJzsKICAgICAgaWYgKHZhbCA9PT0gJ2RhdGV0aW1lJykgewogICAgICAgIHJvdy5mb3JtYXQgPSAneXl5eS1NTS1kZCc7CiAgICAgIH0gZWxzZSBpZiAodmFsID09PSAndmFyY2hhcicpIHsKICAgICAgICByb3cuYXR0ckxlbmd0aCA9IDIwMDsKICAgICAgfSBlbHNlIGlmICh2YWwgPT09ICdudW1iZXInKSB7CiAgICAgICAgcm93LmF0dHJMZW5ndGggPSAxMDsKICAgICAgICByb3cuZGVjaW1hbExlbiA9IDI7CiAgICAgIH0KICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhLnNwbGljZShpbmRleCwgMSwgcm93KTsKICAgIH0sCiAgICAvLyDpgInmi6nlrZflhbgKICAgIGhhbmRsZVNlYXJjaERpY3Q6IGZ1bmN0aW9uIGhhbmRsZVNlYXJjaERpY3Qocm93LCAkaW5kZXgpIHsKICAgICAgLy8gaWYgKHRoaXMucHVibGlzaGVkICYmIHJvdy5pZCkgewogICAgICAvLyAgIHJldHVybjsKICAgICAgLy8gfQogICAgICB0aGlzLmN1cnJlbnRSb3cgPSByb3c7CiAgICAgIHRoaXMuaW5kZXggPSAkaW5kZXg7CiAgICAgIGlmIChyb3cuZmllbGRWYWx1ZVR5cGUgPT09ICcyJykgewogICAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZUVudW0gPSB0cnVlOwogICAgICB9IGVsc2UgaWYgKHJvdy5maWVsZFZhbHVlVHlwZSA9PT0gJzMnKSB7CiAgICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlTXVsdGkgPSB0cnVlOwogICAgICB9CiAgICB9LAogICAgaGFuZGxlRGVsZXRlOiBmdW5jdGlvbiBoYW5kbGVEZWxldGUocGFyYW0sIGRlcGxveWVkKSB7CiAgICAgIGlmIChkZXBsb3llZCAmJiBwYXJhbS5yb3cuaWQpIHJldHVybjsKICAgICAgdGhpcy5oYW5kbGVDb21tYW5kKHBhcmFtKTsKICAgIH0sCiAgICBoYW5kbGVDb21tYW5kOiBmdW5jdGlvbiBoYW5kbGVDb21tYW5kKHBhcmFtKSB7CiAgICAgIHN3aXRjaCAocGFyYW0uY29tbWFuZCkgewogICAgICAgIGNhc2UgJ2RlbCc6CiAgICAgICAgICB0aGlzLmRlbGV0ZUF0dHJSb3dzKHBhcmFtLnJvdywgcGFyYW0uaW5kZXgpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndXAnOgogICAgICAgICAgdGhpcy5hdHRyVXAocGFyYW0ucm93LCBwYXJhbS5pbmRleCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdkb3duJzoKICAgICAgICAgIHRoaXMuYXR0ckRvd24ocGFyYW0ucm93LCBwYXJhbS5pbmRleCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0sCiAgICBpc0RlbDogZnVuY3Rpb24gaXNEZWwocm93LCBpbmRleCkgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHsKICAgICAgICB2YXIgX3lpZWxkJEFQSSRkZWxldGVGaWVsLCBzdGF0ZSwgbWVzc2FnZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSAwOwogICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gQVBJLmRlbGV0ZUZpZWxkKHJvdy5pZCk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBfeWllbGQkQVBJJGRlbGV0ZUZpZWwgPSBfY29udGV4dDIuc2VudDsKICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCRBUEkkZGVsZXRlRmllbC5zdGF0ZTsKICAgICAgICAgICAgICBtZXNzYWdlID0gX3lpZWxkJEFQSSRkZWxldGVGaWVsLm1lc3NhZ2U7CiAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICBfdGhpczQuZm9ybS5hdHRyRGF0YS5zcGxpY2UoaW5kZXgsIDEpOwogICAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLnN1Y2Nlc3MoJ+Wtl+auteWIoOmZpOaIkOWKnycpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDEyOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSA5OwogICAgICAgICAgICAgIF9jb250ZXh0Mi50MCA9IF9jb250ZXh0MlsiY2F0Y2giXSgwKTsKICAgICAgICAgICAgICBfdGhpczQuJG1lc3NhZ2Uud2FybmluZyhfY29udGV4dDIudDAgfHwgJ+aTjeS9nOWksei0pScpOwogICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMTI7CiAgICAgICAgICAgICAgX3RoaXM0LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmZpbmlzaCgxMik7CiAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTIsIG51bGwsIFtbMCwgOSwgMTIsIDE1XV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDliKDpmaTlrZfmrrUKICAgIGRlbGV0ZUF0dHJSb3dzOiBmdW5jdGlvbiBkZWxldGVBdHRyUm93cyhyb3csIGluZGV4KSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICBpZiAodGhpcy5wdWJsaXNoZWQgJiYgcm93LmlkKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChyb3cuaXNJbml0RmlsZWQgPT09ICdZJykgewogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygn6K+l5a2X5q615Li65Yid5aeL5a2X5q6177yM5LiN5Y+v5Yig6Zmk77yBJyk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMuJGNvbmZpcm0oIlx1NkI2NFx1NjRDRFx1NEY1Q1x1NUMwNlx1NTIyMFx1OTY2NFx1NUI1N1x1NkJCNVx1RkYwOCIuY29uY2F0KHJvdy5uYW1lLCAiXHVGRjA5LCBcdTY2MkZcdTU0MjZcdTdFRTdcdTdFRUQ/IiksICfmj5DnpLonLCB7CiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICB9KS50aGVuKC8qI19fUFVSRV9fKi9fYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoKSB7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIGlmIChyb3cuaWQpIHsKICAgICAgICAgICAgICAgIF90aGlzNS5pc0RlbChyb3csIGluZGV4KTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgX3RoaXM1LmZvcm0uYXR0ckRhdGEuc3BsaWNlKGluZGV4LCAxKTsKICAgICAgICAgICAgICAgIF90aGlzNS4kbWVzc2FnZS5zdWNjZXNzKCflrZfmrrXliKDpmaTmiJDlip8nKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMyk7CiAgICAgIH0pKSkuY2F0Y2goZnVuY3Rpb24gKCkge30pOwogICAgfSwKICAgIGF0dHJVcDogZnVuY3Rpb24gYXR0clVwKHJvdywgaW5kZXgpIHsKICAgICAgLy8gaWYgKHRoaXMucHVibGlzaGVkICYmIHJvdy5pZCkgewogICAgICAvLyAgIHJldHVybjsKICAgICAgLy8gfQoKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4XS5pbmRleCA9IHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleF0uaW5kZXggLSAxOwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXhdLnNuID0gdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4IC0gMV0uc247CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleCAtIDFdLmluZGV4ID0gdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4IC0gMV0uaW5kZXggKyAxOwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXggLSAxXS5zbiA9IHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleCAtIDFdLnNuICsgMTsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhID0gdXRpbHMuYXJyYXlNb3ZlKHRoaXMuZm9ybS5hdHRyRGF0YSwgcm93LCAndXAnKTsKICAgIH0sCiAgICBhdHRyRG93bjogZnVuY3Rpb24gYXR0ckRvd24ocm93LCBpbmRleCkgewogICAgICAvLyBpZiAodGhpcy5wdWJsaXNoZWQgJiYgcm93LmlkKSB7CiAgICAgIC8vICAgcmV0dXJuOwogICAgICAvLyB9CgogICAgICB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXhdLmluZGV4ID0gdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4XS5pbmRleCArIDE7CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleF0uc24gPSB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXhdLnNuICsgMTsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4ICsgMV0uaW5kZXggPSB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXggKyAxXS5pbmRleCAtIDE7CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleCArIDFdLnNuID0gdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4XS5zbiAtIDE7CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YSA9IHV0aWxzLmFycmF5TW92ZSh0aGlzLmZvcm0uYXR0ckRhdGEsIHJvdywgJ2Rvd24nKTsKICAgIH0sCiAgICBvbkNhbmNlbDogZnVuY3Rpb24gb25DYW5jZWwoKSB7CiAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlOwogICAgfSwKICAgIG9uQ29uZmlybTogZnVuY3Rpb24gb25Db25maXJtKCkgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgdGhpcy4kcmVmcy5mb3JtLnZhbGlkYXRlKC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWYyID0gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU0KHZhbGlkLCBvYmplY3QpIHsKICAgICAgICAgIHZhciBRVUVSWUFQSSwgX3lpZWxkJFFVRVJZQVBJLCBzdGF0ZSwgbWVzc2FnZTsKICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBpZiAoIXZhbGlkKSB7CiAgICAgICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMjA7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uc29sZS5sb2coX3RoaXM2LmZvcm0uYXR0ckRhdGEpOwogICAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSAyOwogICAgICAgICAgICAgICAgaWYgKF90aGlzNi5wdWJsaXNoZWQpIHsKICAgICAgICAgICAgICAgICAgUVVFUllBUEkgPSBBUEkuc2F2ZU9yVXBkYXRlRmllbGRzOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgUVVFUllBUEkgPSBBUEkuc2F2ZUZpZWxkczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gNjsKICAgICAgICAgICAgICAgIHJldHVybiBRVUVSWUFQSShfdGhpczYuZm9ybS5hdHRyRGF0YSk7CiAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgX3lpZWxkJFFVRVJZQVBJID0gX2NvbnRleHQ0LnNlbnQ7CiAgICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCRRVUVSWUFQSS5zdGF0ZTsKICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkUVVFUllBUEkubWVzc2FnZTsKICAgICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2Uuc3VjY2Vzcygn5a2X5q615L+d5a2Y5oiQ5YqfJyk7CiAgICAgICAgICAgICAgICAgIF90aGlzNi4kZW1pdCgnY29uZmlybScpOwogICAgICAgICAgICAgICAgICBfdGhpczYudmlzaWJsZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLndhcm5pbmcobWVzc2FnZSB8fCAn5pON5L2c5aSx6LSlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDE1OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgICAgIF9jb250ZXh0NC5wcmV2ID0gMTI7CiAgICAgICAgICAgICAgICBfY29udGV4dDQudDAgPSBfY29udGV4dDRbImNhdGNoIl0oMik7CiAgICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2Uud2FybmluZyhfY29udGV4dDQudDAgfHwgJ+aTjeS9nOWksei0pScpOwogICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICBfY29udGV4dDQucHJldiA9IDE1OwogICAgICAgICAgICAgICAgX3RoaXM2LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuZmluaXNoKDE1KTsKICAgICAgICAgICAgICBjYXNlIDE4OgogICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAyMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGNhc2UgMjA6CiAgICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2Uud2FybmluZygiXHU2NzA5Ii5jb25jYXQoT2JqZWN0LmtleXMob2JqZWN0KS5sZW5ndGgsICJcdTRFMkFcdTVCNTdcdTZCQjVcdTY3MkFcdTkwMUFcdThGQzdcdTY4MjFcdTlBOENcdUZGMENcdThCRjdcdTZCNjNcdTc4NkVcdTU4NkJcdTUxOTlcdTg4NjhcdTUzNTVcdTMwMDIiKSk7CiAgICAgICAgICAgICAgICBfdGhpczYubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgIGNhc2UgMjI6CiAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuc3RvcCgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9LCBfY2FsbGVlNCwgbnVsbCwgW1syLCAxMiwgMTUsIDE4XV0pOwogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94LCBfeDIpIHsKICAgICAgICAgIHJldHVybiBfcmVmMi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICAgIH0oKSk7CiAgICB9LAogICAgZG93bmxvYWQ6IGZ1bmN0aW9uIGRvd25sb2FkKCkgewogICAgICB2YXIgZmlsZVR5cGUyID0gJ+aVsOaNruW6lOeUqOWxguWKqOaAgeihqOWtl+autea4heWNlS54bHN4JzsKICAgICAgdmFyIGZpbGVUeXBlMSA9ICfmlbDmja7lupTnlKjlsYLniannkIbooajlrZfmrrXmuIXljZUueGxzeCc7CiAgICAgIHZhciBmaWxlVHlwZTsKICAgICAgaWYgKHRoaXMudGFiZWxEYXRhLnRhYmxlQ2xhc3MgPT09ICcxJykgewogICAgICAgIGZpbGVUeXBlID0gZmlsZVR5cGUxOwogICAgICB9IGVsc2UgewogICAgICAgIGZpbGVUeXBlID0gZmlsZVR5cGUyOwogICAgICB9CiAgICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwogICAgICBhLmhyZWYgPSB3aW5kb3cuY29udGV4dC5kb3dubG9hZCArIGZpbGVUeXBlOwogICAgICBhLmRvd25sb2FkID0gZmlsZVR5cGU7IC8vIOiuvue9ruS4i+i9veaWh+S7tuaWh+S7tuWQjQogICAgICBhLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7CiAgICAgIGEuY2xpY2soKTsKICAgICAgYS5yZW1vdmUoKTsKICAgIH0sCiAgICAvLyAg5a+85YWl5paH5Lu25LiK5Lyg5YmNCiAgICBiZWZvcmVVcGxvYWQ6IGZ1bmN0aW9uIGJlZm9yZVVwbG9hZChmaWxlKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgIF90aGlzNy51cGxvYWRMb2FkaW5nID0gdHJ1ZTsKICAgICAgICB2YXIgc2l6ZSA9IGZpbGUuc2l6ZSwKICAgICAgICAgIG5hbWUgPSBmaWxlLm5hbWU7CiAgICAgICAgX3RoaXM3LiRjb25maXJtKCJcdThCRjdcdTc4NkVcdThCQTRcdTY2MkZcdTU0MjZcdTVCRkNcdTUxNjUgXHUyMDFDIi5jb25jYXQobmFtZSwgIlx1MjAxRCBcdUZGMUYiKSwgJ+aPkOekuicsIHsKICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu6K6kJywKICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoXykgewogICAgICAgICAgdmFyIHBhc3NlZE9yTm90ID0gdHJ1ZTsgLy8g5piv5ZCm6YCa6L+H6aqM6K+BCiAgICAgICAgICB2YXIgdHlwZVJlZ3VsYXIgPSAvXC4oeGxzfHhsc3gpJC9pOwogICAgICAgICAgdmFyIHZlcmlmaWNhdGlvbiA9IFt7CiAgICAgICAgICAgIGNvbmRpdGlvbjogIXR5cGVSZWd1bGFyLnRlc3QobmFtZSksCiAgICAgICAgICAgIHJlc3VsdDogZnVuY3Rpb24gcmVzdWx0KCkgewogICAgICAgICAgICAgIHJldHVybiBfdGhpczcuJG1lc3NhZ2UuZXJyb3IoJ+WPquiDveS4iuS8oHhsc+aIlnhsc3jmlofku7bnsbvlnosnKTsKICAgICAgICAgICAgfQogICAgICAgICAgfV07CiAgICAgICAgICB2ZXJpZmljYXRpb24uZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICBpZiAoaXRlbS5jb25kaXRpb24pIHsKICAgICAgICAgICAgICBpdGVtLnJlc3VsdCgpOwogICAgICAgICAgICAgIHBhc3NlZE9yTm90ID0gZmFsc2U7CiAgICAgICAgICAgICAgX3RoaXM3LnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgICBwYXNzZWRPck5vdCA/IHJlc29sdmUoKSA6IHJlamVjdCgpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgIF90aGlzNy51cGxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICBfdGhpczcuJG1lc3NhZ2Uud2FybmluZygn5bey5Y+W5raI5LiK5LygJyk7CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOWvvOWFpeaWh+S7tuS4iuS8oOaIkOWKnwogICAgaGFuZGxlU3VjY2VzczogZnVuY3Rpb24gaGFuZGxlU3VjY2VzcyhyZXMpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTUoKSB7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU1JChfY29udGV4dDUpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NS5wcmV2ID0gX2NvbnRleHQ1Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIGlmICghcmVzLnN0YXRlKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX3RoaXM4LiRtZXNzYWdlLnN1Y2Nlc3MoJ+WvvOWFpeaIkOWKnycpOwogICAgICAgICAgICAgIF90aGlzOC51cGxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSA1OwogICAgICAgICAgICAgIHJldHVybiBfdGhpczguZ2V0RmllbGRzQnlUYWJsZSgpOwogICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSA4OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgX3RoaXM4LiRtZXNzYWdlLmVycm9yKHJlcy5tZXNzYWdlKTsKICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU1KTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g5a+85YWl5paH5Lu25LiK5Lyg5aSx6LSlCiAgICBoYW5kbGVFcnJvcjogZnVuY3Rpb24gaGFuZGxlRXJyb3IoZXJyKSB7CiAgICAgIGlmIChlcnIpIHsKICAgICAgICB2YXIgZXJyRGF0YSA9IGVyci50b1N0cmluZygpLnJlcGxhY2UoJ0Vycm9yOicsICcnKTsKICAgICAgICBlcnJEYXRhID0gSlNPTi5wYXJzZShlcnJEYXRhKTsKICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGVyckRhdGEubWVzc2FnZSB8fCAn5a+85YWl5aSx6LSl77yM6K+36YeN6K+VJyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcign5a+85YWl5aSx6LSl77yM6K+36YeN6K+VJyk7CiAgICAgIH0KICAgICAgdGhpcy51cGxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICB9CiAgfQp9Ow=="},null]}