3NAxHUEaM6RAG7rVDPL9L6DFZWkrqFtY98t · data · main.9545492b.chunk.js?1?0
{
    "main.9545492b.chunk.js?1?0": "base64:KHdpbmRvdy53ZWJwYWNrSnNvbnA9d2luZG93LndlYnBhY2tKc29ucHx8W10pLnB1c2goW1swXSx7MTExODpmdW5jdGlvbihlLHQsYSl7fSwxMTIwOmZ1bmN0aW9uKGUsdCxhKXsidXNlIHN0cmljdCI7YS5yKHQpO3ZhciBuPWEoMSkscz1hLm4obikscj1hKDIwMCksbD1hLm4ociksaT0oYSg1NDEpLGEoMzkpKSxjPWEoNDApLG89YSg0MiksZD1hKDQxKSxtPWEoMTEpLGg9YSg0MyksdT1hKDMxKSxwPWEoNTAzKSxiPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIGE7cmV0dXJuIE9iamVjdChpLmEpKHRoaXMsdCksKGE9T2JqZWN0KG8uYSkodGhpcyxPYmplY3QoZC5hKSh0KS5jYWxsKHRoaXMsZSkpKS5jb250cmFjdD0ney0jIFNURExJQl9WRVJTSU9OIDMgIy19XG57LSMgQ09OVEVOVF9UWVBFIERBUFAgIy19XG57LSMgU0NSSVBUX1RZUEUgQUNDT1VOVCAjLX1cblxubGV0IEVNVFBZU1RSSU5HID0gIiJcblxuZnVuYyBnZXRTdHJpbmdGcm9tS2V5KGtleTogU3RyaW5nKSA9IHtcbiAgICBtYXRjaCBnZXRTdHJpbmcodGhpcywga2V5KSB7XG4gICAgICAgIGNhc2Ugc3RyOlN0cmluZyA9PiBzdHJcbiAgICAgICAgY2FzZSBfID0+IEVNVFBZU1RSSU5HXG4gICAgfVxufVxuXG5mdW5jIGlzVmFsaWRTZW5kZXIoc2VuZGVyOiBTdHJpbmcpID0ge1xuICAgIGxldCBlbnRyeUZvclNlbmRlckFkZHJlc3MgPSBnZXRTdHJpbmdGcm9tS2V5KHNlbmRlcilcblxuICAgIGlmIChlbnRyeUZvclNlbmRlckFkZHJlc3MgPT0gRU1UUFlTVFJJTkcpIHRoZW4gZmFsc2UgZWxzZSB0cnVlXG59XG5cbkBDYWxsYWJsZShpKVxuZnVuYyBhZGRSaXNrKG5hbWU6IFN0cmluZywgZGVzY3JpcHRpb246IFN0cmluZykgPSB7XG4gICBsZXQgc2VuZGVyID0gdG9CYXNlNThTdHJpbmcoaS5jYWxsZXIuYnl0ZXMpXG4gICBpZiAoaXNWYWxpZFNlbmRlcihzZW5kZXIpKSB0aGVuXG4gICAgICAgV3JpdGVTZXQoW1xuICAgICAgICAgICBEYXRhRW50cnkodG9CYXNlNThTdHJpbmcoaS50cmFuc2FjdGlvbklkKSArICJfbmFtZSIgLCBuYW1lKSxcbiAgICAgICAgICAgRGF0YUVudHJ5KHRvQmFzZTU4U3RyaW5nKGkudHJhbnNhY3Rpb25JZCkgKyAiX2Rlc2NyaXB0aW9uIiAsIGRlc2NyaXB0aW9uKVxuICAgICAgIF0pXG4gICBlbHNlIHRocm93KCJTZW5kZXIgbm90IGFsbG93ZWQgdG8gc3RvcmUgcmlza3MhIilcbn1cblxuQENhbGxhYmxlKGkpXG5mdW5jIGFkZENvbnNvbGlkYXRlZFJpc2sobmFtZTogU3RyaW5nLCBkZXNjcmlwdGlvbjogU3RyaW5nKSA9IHtcbiAgIGxldCBzZW5kZXIgPSB0b0Jhc2U1OFN0cmluZyhpLmNhbGxlci5ieXRlcylcbiAgIGlmIChpc1ZhbGlkU2VuZGVyKHNlbmRlcikpIHRoZW5cbiAgICAgICBXcml0ZVNldChbXG4gICAgICAgICAgIERhdGFFbnRyeSh0b0Jhc2U1OFN0cmluZyhpLnRyYW5zYWN0aW9uSWQpICsgIl9jb25zb2xpZGF0ZWRfbmFtZSIgLCBuYW1lKSxcbiAgICAgICAgICAgRGF0YUVudHJ5KHRvQmFzZTU4U3RyaW5nKGkudHJhbnNhY3Rpb25JZCkgKyAiX2NvbnNvbGlkYXRlZF9kZXNjcmlwdGlvbiIgLCBkZXNjcmlwdGlvbilcbiAgICAgICBdKVxuICAgZWxzZSB0aHJvdygiU2VuZGVyIG5vdCBhbGxvd2VkIHRvIGNvbnNvbGlkYXRlIHJpc2tzISIpXG59XG5cbkBDYWxsYWJsZShpKVxuZnVuYyBldmFsdWF0ZVJpc2soaWQ6IFN0cmluZywgcHJvYmFiaWxpdHk6IEludCwgaW1wYWN0OiBJbnQpID0ge1xuICAgbGV0IHNlbmRlciA9IHRvQmFzZTU4U3RyaW5nKGkuY2FsbGVyLmJ5dGVzKVxuXG4gICBpZiAoaXNWYWxpZFNlbmRlcihzZW5kZXIpKSB0aGVuXG4gICAgICAgV3JpdGVTZXQoW1xuICAgICAgICAgICBEYXRhRW50cnkoaWQgKyAiXyIgKyB0b0Jhc2U1OFN0cmluZyhpLnRyYW5zYWN0aW9uSWQpICsgIl9wcm9iIiAsIHByb2JhYmlsaXR5KSxcbiAgICAgICAgICAgRGF0YUVudHJ5KGlkICsgIl8iICsgdG9CYXNlNThTdHJpbmcoaS50cmFuc2FjdGlvbklkKSArICJfaW1wIiAsIGltcGFjdClcbiAgICAgICBdKVxuICAgZWxzZSB0aHJvdygiU2VuZGVyIG5vdCBhbGxvd2VkIHRvIGV2YWx1YXRlIG9yIGV2YWx1YXRlZCBhbHJlYWR5ISIpXG59XG5cbkBWZXJpZmllcih0eClcbmZ1bmMgdmVyaWZ5KCkgPSB7XG4gICBtYXRjaCB0eCB7XG4gICAgICAgY2FzZSBfID0+IGZhbHNlXG4gICB9XG59XG4nLGEuc3RhdGU9e2FkZHJlc3NlczpbXSxhZGRyZXNzOiIiLHByb2plY3ROYW1lOiIiLHByb2plY3REZXNjcmlwdGlvbjoiIixzZWVkOiIiLHNob3dQcm9ncmVzc2JhcjohMX0sYS5ub2RlPWEucHJvcHMubm9kZSxhLmhhbmRsZUFkZEFkZHJlc3M9YS5oYW5kbGVBZGRBZGRyZXNzLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlQ2hhbmdlPWEuaGFuZGxlQ2hhbmdlLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlUHJvamVjdE5hbWU9YS5oYW5kbGVQcm9qZWN0TmFtZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZVByb2plY3REZXNjcmlwdGlvbj1hLmhhbmRsZVByb2plY3REZXNjcmlwdGlvbi5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZUZ1bmRBZGRyZXNzPWEuaGFuZGxlRnVuZEFkZHJlc3MuYmluZChPYmplY3QobS5hKShhKSksYX1yZXR1cm4gT2JqZWN0KGguYSkodCxlKSxPYmplY3QoYy5hKSh0LFt7a2V5OiJjb21waWxlQ29udHJhY3QiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBYTUxIdHRwUmVxdWVzdDt0Lm9wZW4oIlBPU1QiLHRoaXMubm9kZSsiL3V0aWxzL3NjcmlwdC9jb21waWxlQ29kZSIsITApLHQuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwiYXBwbGljYXRpb24vanNvbiIpLHQuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IiwiYXBwbGljYXRpb24vanNvbiIpLHQub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aWYoND09PXQucmVhZHlTdGF0ZSYmMjAwPT09dC5zdGF0dXMpe3ZhciBhPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZSkuc2NyaXB0O2UoYSl9fSx0LnNlbmQodGhpcy5jb250cmFjdCl9fSx7a2V5OiJkZXBsb3lDb250cmFjdCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5ub2RlLGE9dGhpczt0aGlzLmNvbXBpbGVDb250cmFjdChmdW5jdGlvbihuKXt2YXIgcz1PYmplY3QodS5zZXRTY3JpcHQpKHtzY3JpcHQ6bn0sZSk7T2JqZWN0KHUuYnJvYWRjYXN0KShzLHQpLnRoZW4oZnVuY3Rpb24oZSl7T2JqZWN0KHUud2FpdEZvclR4KShzLmlkLHt0aW1lb3V0OjEyZTQsYXBpQmFzZTp0fSkudGhlbihmdW5jdGlvbigpe2Euc2V0U3RhdGUoe3Nob3dQcm9ncmVzc2JhcjohMX0pfSl9KX0pfX0se2tleToiY3JlYXRlRGF0YUVudHJpZXMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPVt7a2V5OiJwcm9qZWN0TmFtZSIsdmFsdWU6dGhpcy5zdGF0ZS5wcm9qZWN0TmFtZSx0eXBlOiJzdHJpbmcifSx7a2V5OiJwcm9qZWN0RGVzY3JpcHRpb24iLHZhbHVlOnRoaXMuc3RhdGUucHJvamVjdERlc2NyaXB0aW9uLHR5cGU6InN0cmluZyJ9LHtrZXk6dGhpcy5zdGF0ZS5hZGRyZXNzLHZhbHVlOiJvd25lciIsdHlwZToic3RyaW5nIn1dLHQ9dGhpcyxhPXRoaXMubm9kZSxuPTA7bjx0aGlzLnN0YXRlLmFkZHJlc3Nlcy5sZW5ndGg7bisrKXt2YXIgcz17a2V5OnRoaXMuc3RhdGUuYWRkcmVzc2VzW25dLHZhbHVlOiJ1c2VyIix0eXBlOiJzdHJpbmcifTtlLnB1c2gocyl9dmFyIHI9e3R5cGU6MTIsZGF0YTplfSxsPU9iamVjdCh1LmRhdGEpKHIsdGhpcy5zdGF0ZS5zZWVkKTtPYmplY3QodS5icm9hZGNhc3QpKGwsdGhpcy5ub2RlKS50aGVuKGZ1bmN0aW9uKCl7T2JqZWN0KHUud2FpdEZvclR4KShsLmlkLHt0aW1lb3V0OjEyZTQsYXBpQmFzZTphfSkudGhlbihmdW5jdGlvbihlKXtjb25zb2xlLmxvZyhlKSx0LmRlcGxveUNvbnRyYWN0KHQuc3RhdGUuc2VlZCksdC5zdG9yZVByb2plY3QodC5zdGF0ZSl9KX0pfX0se2tleToic3RvcmVQcm9qZWN0Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGE9dGhpcy5ub2RlO3dpbmRvdy5XYXZlc0tlZXBlci5wdWJsaWNTdGF0ZSgpLnRoZW4oZnVuY3Rpb24obil7dmFyIHM9e3R5cGU6MTYsZEFwcDoiM1BIZmVub0pkMjZjcGVRVmYyOW00Q0pvUm4yM013R1hHcjciLGNhbGw6e2Z1bmN0aW9uOiJzdG9yZVByb2plY3QiLGFyZ3M6W3t0eXBlOiJzdHJpbmciLHZhbHVlOmUuYWRkcmVzc30se3R5cGU6InN0cmluZyIsdmFsdWU6ZS5wcm9qZWN0TmFtZX0se3R5cGU6InN0cmluZyIsdmFsdWU6ZS5wcm9qZWN0RGVzY3JpcHRpb259LHt0eXBlOiJpbnRlZ2VyIix2YWx1ZToobmV3IERhdGUpLmdldFRpbWUoKX0se3R5cGU6InN0cmluZyIsdmFsdWU6bi5hY2NvdW50LmFkZHJlc3N9XX0scGF5bWVudDpbXX0scj1PYmplY3QodS5pbnZva2VTY3JpcHQpKHMsdC5zdGF0ZS5zZWVkKTtPYmplY3QodS5icm9hZGNhc3QpKHIsdC5ub2RlKS50aGVuKGZ1bmN0aW9uKCl7T2JqZWN0KHUud2FpdEZvclR4KShyLmlkLHt0aW1lb3V0OjEyZTQsYXBpQmFzZTphfSkudGhlbihmdW5jdGlvbihlKXtjb25zb2xlLmxvZyhlKX0pfSl9KS5jYXRjaChmdW5jdGlvbihlKXtjb25zb2xlLmVycm9yKGUpfSl9fSx7a2V5OiJoYW5kbGVGdW5kQWRkcmVzcyIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciB0PXUuc2VlZFV0aWxzLmdlbmVyYXRlTmV3U2VlZCgpLGE9bmV3IHAuU2VlZEFkYXB0ZXIodCkuc2VlZC5hZGRyZXNzLG49dGhpcy5ub2RlLHM9dGhpczt0aGlzLnNldFN0YXRlKHtzZWVkOnQsYWRkcmVzczphLHNob3dQcm9ncmVzc2JhcjohMH0pO3ZhciByPXt0eXBlOjQsZGF0YTp7cmVjaXBpZW50OmEsYW1vdW50Onthc3NldElkOiJXQVZFUyIsdG9rZW5zOiIwLjAxNiJ9LGZlZTp7YXNzZXRJZDoiV0FWRVMiLHRva2VuczoiMC4wMDEifX19O3dpbmRvdy5XYXZlc0tlZXBlci5zaWduQW5kUHVibGlzaFRyYW5zYWN0aW9uKHIpLnRoZW4oZnVuY3Rpb24oZSl7dmFyIHQ9SlNPTi5wYXJzZShlKTtPYmplY3QodS53YWl0Rm9yVHgpKHQuaWQse3RpbWVvdXQ6MTJlNCxhcGlCYXNlOm59KS50aGVuKGZ1bmN0aW9uKCl7cy5jcmVhdGVEYXRhRW50cmllcygpfSl9KS5jYXRjaChmdW5jdGlvbihlKXtjb25zb2xlLmVycm9yKCJTb21ldGhpbmcgd2VudCB3cm9uZyIsZSl9KX19LHtrZXk6ImhhbmRsZUNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQuaWQsYT10aGlzLnN0YXRlLmFkZHJlc3NlczthW3RdPWUudGFyZ2V0LnZhbHVlLHRoaXMuc2V0U3RhdGUoe2FkZHJlc3NlczphfSl9fSx7a2V5OiJoYW5kbGVBZGRBZGRyZXNzIix2YWx1ZTpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIHQ9dGhpcy5zdGF0ZS5hZGRyZXNzZXM7dC5wdXNoKCIiKSx0aGlzLnNldFN0YXRlKHthZGRyZXNzZXM6dH0pfX0se2tleToiaGFuZGxlUHJvamVjdE5hbWUiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2V0U3RhdGUoe3Byb2plY3ROYW1lOmUudGFyZ2V0LnZhbHVlfSl9fSx7a2V5OiJoYW5kbGVQcm9qZWN0RGVzY3JpcHRpb24iLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2V0U3RhdGUoe3Byb2plY3REZXNjcmlwdGlvbjplLnRhcmdldC52YWx1ZX0pfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDx0aGlzLnN0YXRlLmFkZHJlc3Nlcy5sZW5ndGg7dCsrKXt2YXIgYT1zLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJmb3JtLWdyb3VwIixrZXk6dH0scy5hLmNyZWF0ZUVsZW1lbnQoImxhYmVsIix7aHRtbEZvcjoicHJvamVjdE5hbWUifSwiQWRkcmVzcyIpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGNsYXNzTmFtZToiZm9ybS1jb250cm9sIixpZDp0LG9uQ2hhbmdlOnRoaXMuaGFuZGxlQ2hhbmdlfSkpO2UucHVzaChhKX12YXIgbj1zLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJtb2RhbCIsdGFiSW5kZXg6Ii0xIixyb2xlOiJkaWFsb2ciLHN0eWxlOntkaXNwbGF5OiJibG9jayJ9fSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJtb2RhbC1kaWFsb2ciLHJvbGU6ImRvY3VtZW50In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToibW9kYWwtY29udGVudCBib3JkZXItbGVmdC1pbmZvIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToibW9kYWwtaGVhZGVyIn0scy5hLmNyZWF0ZUVsZW1lbnQoImg1Iix7Y2xhc3NOYW1lOiJtb2RhbC10aXRsZSJ9LCJJbml0aWFsaXppbmcgcHJvamVjdC4uLiIpKSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJtb2RhbC1ib2R5In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicHJvZ3Jlc3MifSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLXN0cmlwZWQgcHJvZ3Jlc3MtYmFyLWFuaW1hdGVkIixyb2xlOiJwcm9ncmVzc2JhciIsImFyaWEtdmFsdWVub3ciOiIxMDAiLCJhcmlhLXZhbHVlbWluIjoiMCIsImFyaWEtdmFsdWVtYXgiOiIxMDAiLHN0eWxlOnt3aWR0aDoiMTAwJSJ9fSkpKSkpKTtyZXR1cm4gcy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxzLmEuY3JlYXRlRWxlbWVudCgibmF2Iix7Y2xhc3NOYW1lOiJuYXZiYXIgbmF2YmFyLWV4cGFuZCBuYXZiYXItbGlnaHQgYmctd2hpdGUgdG9wYmFyIG1iLTQgc3RhdGljLXRvcCBzaGFkb3cifSxzLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7aWQ6InNpZGViYXJUb2dnbGVUb3AiLGNsYXNzTmFtZToiYnRuIGJ0bi1saW5rIGQtbWQtbm9uZSByb3VuZGVkLWNpcmNsZSBtci0zIn0scy5hLmNyZWF0ZUVsZW1lbnQoImkiLHtjbGFzc05hbWU6ImZhIGZhLWJhcnMifSkpLHMuYS5jcmVhdGVFbGVtZW50KCJ1bCIse2NsYXNzTmFtZToibmF2YmFyLW5hdiBtbC1hdXRvIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToidG9wYmFyLWRpdmlkZXIgZC1ub25lIGQtc20tYmxvY2sifSkscy5hLmNyZWF0ZUVsZW1lbnQoImxpIix7Y2xhc3NOYW1lOiJuYXYtaXRlbSBuby1hcnJvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJtci0yIGQtbm9uZSBkLWxnLWlubGluZSB0ZXh0LWdyYXktNjAwIHNtYWxsIn0sIkNyZWF0ZSBQcm9qZWN0IikpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyLWZsdWlkIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZC1zbS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImgxIix7Y2xhc3NOYW1lOiJoMyBtYi0wIHRleHQtZ3JheS04MDAifSwiQ3JlYXRlIGEgbmV3IHByb2plY3QiKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZCBib3JkZXItbGVmdC1pbmZvIHNoYWRvdyBoLTEwMCBweS0yIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZC1ib2R5In0scy5hLmNyZWF0ZUVsZW1lbnQoImZvcm0iLG51bGwscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6InByb2plY3ROYW1lIn0sIlByb2plY3QgTmFtZSIpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGNsYXNzTmFtZToiZm9ybS1jb250cm9sIixpZDoicHJvamVjdE5hbWUiLG9uQ2hhbmdlOnRoaXMuaGFuZGxlUHJvamVjdE5hbWV9KSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6InByb2plY3REZXNjcmlwdGlvbiJ9LCJQcm9qZWN0IERlc2NyaXB0aW9uIikscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToicHJvamVjdERlc2NyaXB0aW9uIixjbGFzc05hbWU6ImZvcm0tY29udHJvbCIsaWQ6InByb2plY3REZXNjcmlwdGlvbiIsb25DaGFuZ2U6dGhpcy5oYW5kbGVQcm9qZWN0RGVzY3JpcHRpb259KSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6InByb2plY3RBZGRyZXNzIn0sIlByb2plY3QgQWRkcmVzcyIpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InByb2plY3RBZGRyZXNzIixjbGFzc05hbWU6ImZvcm0tY29udHJvbCIsdmFsdWU6dGhpcy5zdGF0ZS5hZGRyZXNzLHJlYWRPbmx5OiEwfSkpLGUscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse2NsYXNzTmFtZToiYnRuIGJ0bi1wcmltYXJ5IG1yLTIgbWItMiIsb25DbGljazp0aGlzLmhhbmRsZUZ1bmRBZGRyZXNzfSwiQ3JlYXRlIFByb2plY3QiKSxzLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7Y2xhc3NOYW1lOiJidG4gYnRuLXNlY29uZGFyeSBtci0yIG1iLTIiLG9uQ2xpY2s6dGhpcy5oYW5kbGVBZGRBZGRyZXNzfSwiQWRkIEFkZHJlc3MiKSx0aGlzLnN0YXRlLnNob3dQcm9ncmVzc2Jhcj9uOnMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwpKSkpKSkpKX19XSksdH0ocy5hLkNvbXBvbmVudCksdj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3ZhciBhO3JldHVybiBPYmplY3QoaS5hKSh0aGlzLHQpLChhPU9iamVjdChvLmEpKHRoaXMsT2JqZWN0KGQuYSkodCkuY2FsbCh0aGlzLGUpKSkuc3RhdGU9e3Jpc2tzOltdLHByb2plY3RBZGRyZXNzOiIifSxhLm5vZGU9YS5wcm9wcy5ub2RlLGEuaGFuZGxlUHJvamVjdEFkZHJlc3NDaGFuZ2U9YS5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZURlc2NyaXB0aW9uQ2hhbmdlPWEuaGFuZGxlRGVzY3JpcHRpb25DaGFuZ2UuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVOYW1lQ2hhbmdlPWEuaGFuZGxlTmFtZUNoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmRlbGV0ZVJpc2tDbGlja2VkPWEuZGVsZXRlUmlza0NsaWNrZWQuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVTdG9yYWdlT2ZSaXNrcz1hLmhhbmRsZVN0b3JhZ2VPZlJpc2tzLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlQWRkUmlzaz1hLmhhbmRsZUFkZFJpc2suYmluZChPYmplY3QobS5hKShhKSksYX1yZXR1cm4gT2JqZWN0KGguYSkodCxlKSxPYmplY3QoYy5hKSh0LFt7a2V5OiJoYW5kbGVBZGRSaXNrIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUucmlza3M7ZS5wdXNoKHtuYW1lOiIiLGRlc2NyaXB0aW9uOiIifSksdGhpcy5zZXRTdGF0ZSh7cmlza3M6ZX0pfX0se2tleToiaGFuZGxlU3RvcmFnZU9mUmlza3MiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD10aGlzLnN0YXRlLnJpc2tzLGE9dGhpcyxuPVtdLHM9ZnVuY3Rpb24oKXt2YXIgYT17dHlwZToxNixkYXRhOntmZWU6e3Rva2VuczouMDUsYXNzZXRJZDoiV0FWRVMifSxkQXBwOmUuc3RhdGUucHJvamVjdEFkZHJlc3MsY2FsbDp7ZnVuY3Rpb246ImFkZENvbnNvbGlkYXRlZFJpc2siLGFyZ3M6W3t0eXBlOiJzdHJpbmciLHZhbHVlOnRbcl0ubmFtZX0se3R5cGU6InN0cmluZyIsdmFsdWU6dFtyXS5kZXNjcmlwdGlvbn1dfSxwYXltZW50OltdfX07bi5wdXNoKGEpO3ZhciBzPWU7Nz09PW4ubGVuZ3RoJiYod2luZG93LldhdmVzS2VlcGVyLnNpZ25UcmFuc2FjdGlvblBhY2thZ2UobikudGhlbihmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylzLmJyb2FkY2FzdFRyYW5zYWN0aW9uKGVbdF0sZnVuY3Rpb24oZSl7Y29uc29sZS5sb2coZSl9KX0pLG49W10pfSxyPTA7cjx0Lmxlbmd0aDtyKyspcygpO24ubGVuZ3RoPjAmJndpbmRvdy5XYXZlc0tlZXBlci5zaWduVHJhbnNhY3Rpb25QYWNrYWdlKG4pLnRoZW4oZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspYS5icm9hZGNhc3RUcmFuc2FjdGlvbihlW3RdLGZ1bmN0aW9uKGUpe2NvbnNvbGUubG9nKGUpfSl9KX19LHtrZXk6ImJyb2FkY2FzdFRyYW5zYWN0aW9uIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBhPW5ldyBYTUxIdHRwUmVxdWVzdDthLm9wZW4oIlBPU1QiLHRoaXMubm9kZSsiL3RyYW5zYWN0aW9ucy9icm9hZGNhc3QiLCEwKSxhLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsImFwcGxpY2F0aW9uL2pzb24iKSxhLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsImFwcGxpY2F0aW9uL2pzb24iKSxhLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3QodGhpcy5yZXNwb25zZSl9LGEuc2VuZChlKX19LHtrZXk6ImhhbmRsZVByb2plY3RBZGRyZXNzQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC52YWx1ZSxhPXRoaXMsbj1bXTtmZXRjaCh0aGlzLm5vZGUrIi9hZGRyZXNzZXMvZGF0YS8iK3QpLnRoZW4oZnVuY3Rpb24oZSl7ZS5qc29uKCkudGhlbihmdW5jdGlvbihlKXtlLmZvckVhY2goZnVuY3Rpb24odCl7aWYodC5rZXkuZW5kc1dpdGgoIl9uYW1lIikpe3ZhciBhPXQua2V5LnN1YnN0cmluZygwLHQua2V5LmluZGV4T2YoIl8iKSkscz10LnZhbHVlO2UuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlLmtleT09PWErIl9kZXNjcmlwdGlvbiIpe3ZhciB0PWUudmFsdWUscj17bmFtZTpzLGRlc2NyaXB0aW9uOnR9O24ucHVzaChyKX19KX19KSxhLnNldFN0YXRlKHtyaXNrczpuLHByb2plY3RBZGRyZXNzOnR9KX0pfSkuY2F0Y2goZnVuY3Rpb24oZSl7Y29uc29sZS5sb2coZSl9KX19LHtrZXk6ImhhbmRsZURlc2NyaXB0aW9uQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC5pZCxhPWUudGFyZ2V0LnZhbHVlLG49dGhpcy5zdGF0ZS5yaXNrcztuW3RdLmRlc2NyaXB0aW9uPWEsdGhpcy5zZXRTdGF0ZSh7cmlza3M6bn0pfX0se2tleToiaGFuZGxlTmFtZUNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQuaWQsYT1lLnRhcmdldC52YWx1ZSxuPXRoaXMuc3RhdGUucmlza3M7blt0XS5uYW1lPWEsdGhpcy5zZXRTdGF0ZSh7cmlza3M6bn0pfX0se2tleToiZGVsZXRlUmlza0NsaWNrZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LmlkLGE9dGhpcy5zdGF0ZS5yaXNrczthLnNwbGljZSh0LDEpLHRoaXMuc2V0U3RhdGUoe3Jpc2tzOmF9KX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8dGhpcy5zdGF0ZS5yaXNrcy5sZW5ndGg7dCsrKXt2YXIgYT1zLmEuY3JlYXRlRWxlbWVudCgidHIiLHtrZXk6dH0scy5hLmNyZWF0ZUVsZW1lbnQoInRkIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGlkOnQsdmFsdWU6dGhpcy5zdGF0ZS5yaXNrc1t0XS5uYW1lLG9uQ2hhbmdlOnRoaXMuaGFuZGxlTmFtZUNoYW5nZX0pKSxzLmEuY3JlYXRlRWxlbWVudCgidGQiLG51bGwscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToidGV4dCIsaWQ6dCx2YWx1ZTp0aGlzLnN0YXRlLnJpc2tzW3RdLmRlc2NyaXB0aW9uLG9uQ2hhbmdlOnRoaXMuaGFuZGxlRGVzY3JpcHRpb25DaGFuZ2V9KSkscy5hLmNyZWF0ZUVsZW1lbnQoInRkIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToiYnRuIGJ0bi1kYW5nZXIiLGlkOnQsb25DbGljazp0aGlzLmRlbGV0ZVJpc2tDbGlja2VkfSwiRGVsZXRlIFJpc2siKSkpO2UucHVzaChhKX1yZXR1cm4gcy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxzLmEuY3JlYXRlRWxlbWVudCgibmF2Iix7Y2xhc3NOYW1lOiJuYXZiYXIgbmF2YmFyLWV4cGFuZCBuYXZiYXItbGlnaHQgYmctd2hpdGUgdG9wYmFyIG1iLTQgc3RhdGljLXRvcCBzaGFkb3cifSxzLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7aWQ6InNpZGViYXJUb2dnbGVUb3AiLGNsYXNzTmFtZToiYnRuIGJ0bi1saW5rIGQtbWQtbm9uZSByb3VuZGVkLWNpcmNsZSBtci0zIn0scy5hLmNyZWF0ZUVsZW1lbnQoImkiLHtjbGFzc05hbWU6ImZhIGZhLWJhcnMifSkpLHMuYS5jcmVhdGVFbGVtZW50KCJ1bCIse2NsYXNzTmFtZToibmF2YmFyLW5hdiBtbC1hdXRvIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToidG9wYmFyLWRpdmlkZXIgZC1ub25lIGQtc20tYmxvY2sifSkscy5hLmNyZWF0ZUVsZW1lbnQoImxpIix7Y2xhc3NOYW1lOiJuYXYtaXRlbSBuby1hcnJvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJtci0yIGQtbm9uZSBkLWxnLWlubGluZSB0ZXh0LWdyYXktNjAwIHNtYWxsIn0sIkNvbnNvbGlkYXRlIFJpc2tzIikpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyLWZsdWlkIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZC1zbS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImgxIix7Y2xhc3NOYW1lOiJoMyBtYi0wIHRleHQtZ3JheS04MDAifSwiQ29uc29saWRhdGUgcmlza3MiKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZCBib3JkZXItbGVmdC1pbmZvIHNoYWRvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImNhcmQtYm9keSJ9LHMuYS5jcmVhdGVFbGVtZW50KCJmb3JtIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImZvcm0tZ3JvdXAifSxzLmEuY3JlYXRlRWxlbWVudCgibGFiZWwiLHtodG1sRm9yOiJleGFtcGxlSW5wdXRFbWFpbDEifSwiUHJvamVjdCBBZGRyZXNzIikscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToidGV4dCIsY2xhc3NOYW1lOiJmb3JtLWNvbnRyb2wiLGlkOiJwcm9qZWN0QWRkcmVzcyIsb25DaGFuZ2U6dGhpcy5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZX0pKSkscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJidG4gYnRuLXByaW1hcnkgbWItMiBtci0yIixvbkNsaWNrOnRoaXMuaGFuZGxlQWRkUmlza30sIkFkZCBSaXNrIikscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJidG4gYnRuLXNlY29uZGFyeSBtYi0yIixvbkNsaWNrOnRoaXMuaGFuZGxlU3RvcmFnZU9mUmlza3N9LCJTdG9yZSBDb25zb2xpZGF0ZWQgUmlza3MiKSkpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoInRhYmxlIix7Y2xhc3NOYW1lOiJ0YWJsZSB0YWJsZS1zdHJpcGVkIGJvcmRlci1sZWZ0LWluZm8gc2hhZG93In0scy5hLmNyZWF0ZUVsZW1lbnQoInRoZWFkIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJ0ciIsbnVsbCxzLmEuY3JlYXRlRWxlbWVudCgidGgiLG51bGwsIk5hbWUiKSxzLmEuY3JlYXRlRWxlbWVudCgidGgiLG51bGwsIkRlc2NyaXB0aW9uIikscy5hLmNyZWF0ZUVsZW1lbnQoInRoIixudWxsLCJBY3Rpb24iKSkpLHMuYS5jcmVhdGVFbGVtZW50KCJ0Ym9keSIsbnVsbCxlKSkpKSkpfX1dKSx0fShzLmEuQ29tcG9uZW50KSxmPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIGE7cmV0dXJuIE9iamVjdChpLmEpKHRoaXMsdCksKGE9T2JqZWN0KG8uYSkodGhpcyxPYmplY3QoZC5hKSh0KS5jYWxsKHRoaXMsZSkpKS5zdGF0ZT17cmlza3M6W10scHJvamVjdEFkZHJlc3M6IiJ9LGEubm9kZT1hLnByb3BzLm5vZGUsYS5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZT1hLmhhbmRsZVByb2plY3RBZGRyZXNzQ2hhbmdlLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuYWRkUmlza0NsaWNrZWQ9YS5hZGRSaXNrQ2xpY2tlZC5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZU5hbWVDaGFuZ2U9YS5oYW5kbGVOYW1lQ2hhbmdlLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlRGVzY3JpcHRpb25DaGFuZ2U9YS5oYW5kbGVEZXNjcmlwdGlvbkNoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLnN0b3JlUmlza3NDbGlja2VkPWEuc3RvcmVSaXNrc0NsaWNrZWQuYmluZChPYmplY3QobS5hKShhKSksYX1yZXR1cm4gT2JqZWN0KGguYSkodCxlKSxPYmplY3QoYy5hKSh0LFt7a2V5OiJoYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5zZXRTdGF0ZSh7cHJvamVjdEFkZHJlc3M6ZS50YXJnZXQudmFsdWV9KX19LHtrZXk6ImFkZFJpc2tDbGlja2VkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUucmlza3M7ZS5sZW5ndGg8Nz8oZS5wdXNoKHtuYW1lOiIiLGRlc2NyaXB0aW9uOiIifSksdGhpcy5zZXRTdGF0ZSh7cmlza3M6ZX0pKTphbGVydCgiT25seSBzZXZlbiByaXNrcyBhbGxvd2VkIGF0IG9uY2UhIil9fSx7a2V5OiJoYW5kbGVOYW1lQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC5pZCxhPWUudGFyZ2V0LnZhbHVlLG49dGhpcy5zdGF0ZS5yaXNrcztuW3RdLm5hbWU9YSx0aGlzLnNldFN0YXRlKHtyaXNrczpufSl9fSx7a2V5OiJoYW5kbGVEZXNjcmlwdGlvbkNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQuaWQsYT1lLnRhcmdldC52YWx1ZSxuPXRoaXMuc3RhdGUucmlza3M7blt0XS5kZXNjcmlwdGlvbj1hLHRoaXMuc2V0U3RhdGUoe3Jpc2tzOm59KX19LHtrZXk6InN0b3JlUmlza3NDbGlja2VkIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnN0YXRlLnJpc2tzLHQ9W10sYT0wO2E8ZS5sZW5ndGg7YSsrKXt2YXIgbj17dHlwZToxNixkYXRhOntmZWU6e3Rva2VuczouMDUsYXNzZXRJZDoiV0FWRVMifSxkQXBwOnRoaXMuc3RhdGUucHJvamVjdEFkZHJlc3MsY2FsbDp7ZnVuY3Rpb246ImFkZFJpc2siLGFyZ3M6W3t0eXBlOiJzdHJpbmciLHZhbHVlOmVbYV0ubmFtZX0se3R5cGU6InN0cmluZyIsdmFsdWU6ZVthXS5kZXNjcmlwdGlvbn1dfSxwYXltZW50OltdfX07dC5wdXNoKG4pfXZhciBzPXRoaXM7d2luZG93LldhdmVzS2VlcGVyLnNpZ25UcmFuc2FjdGlvblBhY2thZ2UodCkudGhlbihmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylzLmJyb2FkY2FzdFRyYW5zYWN0aW9uKGVbdF0sZnVuY3Rpb24oZSl7Y29uc29sZS5sb2coZSl9KX0pfX0se2tleToiYnJvYWRjYXN0VHJhbnNhY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGE9bmV3IFhNTEh0dHBSZXF1ZXN0O2Eub3BlbigiUE9TVCIsdGhpcy5ub2RlKyIvdHJhbnNhY3Rpb25zL2Jyb2FkY2FzdCIsITApLGEuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwiYXBwbGljYXRpb24vanNvbiIpLGEuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IiwiYXBwbGljYXRpb24vanNvbiIpLGEub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7dCh0aGlzLnJlc3BvbnNlKX0sYS5zZW5kKGUpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDx0aGlzLnN0YXRlLnJpc2tzLmxlbmd0aDt0Kyspe3ZhciBhPXMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InJvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImNvbC14bC02IGNvbC1tZC02IG1iLTQifSxzLmEuY3JlYXRlRWxlbWVudCgibGFiZWwiLG51bGwsIk5hbWUiKSxzLmEuY3JlYXRlRWxlbWVudCgiYnIiLG51bGwpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGNsYXNzTmFtZToiZm9ybS1jb250cm9sIixpZDp0LG9uQ2hhbmdlOnRoaXMuaGFuZGxlTmFtZUNoYW5nZX0pKSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJjb2wteGwtNiBjb2wtbWQtNiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImxhYmVsIixudWxsLCJEZXNjcmlwdGlvbiIpLHMuYS5jcmVhdGVFbGVtZW50KCJiciIsbnVsbCkscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToidGV4dCIsY2xhc3NOYW1lOiJmb3JtLWNvbnRyb2wiLGlkOnQsb25DaGFuZ2U6dGhpcy5oYW5kbGVEZXNjcmlwdGlvbkNoYW5nZX0pKSk7ZS5wdXNoKGEpfXJldHVybiBzLmEuY3JlYXRlRWxlbWVudCgiZGl2IixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJuYXYiLHtjbGFzc05hbWU6Im5hdmJhciBuYXZiYXItZXhwYW5kIG5hdmJhci1saWdodCBiZy13aGl0ZSB0b3BiYXIgbWItNCBzdGF0aWMtdG9wIHNoYWRvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJidXR0b24iLHtpZDoic2lkZWJhclRvZ2dsZVRvcCIsY2xhc3NOYW1lOiJidG4gYnRuLWxpbmsgZC1tZC1ub25lIHJvdW5kZWQtY2lyY2xlIG1yLTMifSxzLmEuY3JlYXRlRWxlbWVudCgiaSIse2NsYXNzTmFtZToiZmEgZmEtYmFycyJ9KSkscy5hLmNyZWF0ZUVsZW1lbnQoInVsIix7Y2xhc3NOYW1lOiJuYXZiYXItbmF2IG1sLWF1dG8ifSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJ0b3BiYXItZGl2aWRlciBkLW5vbmUgZC1zbS1ibG9jayJ9KSxzLmEuY3JlYXRlRWxlbWVudCgibGkiLHtjbGFzc05hbWU6Im5hdi1pdGVtIG5vLWFycm93In0scy5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6Im1yLTIgZC1ub25lIGQtbGctaW5saW5lIHRleHQtZ3JheS02MDAgc21hbGwifSwiQWRkIFJpc2tzIikpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyLWZsdWlkIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZC1zbS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImgxIix7Y2xhc3NOYW1lOiJoMyBtYi0wIHRleHQtZ3JheS04MDAifSwiQWRkIGEgcmlzayIpKSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJjYXJkIGJvcmRlci1sZWZ0LWluZm8gc2hhZG93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZC1ib2R5In0scy5hLmNyZWF0ZUVsZW1lbnQoImZvcm0iLG51bGwscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6ImV4YW1wbGVJbnB1dEVtYWlsMSJ9LCJQcm9qZWN0IEFkZHJlc3MiKSxzLmEuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHt0eXBlOiJ0ZXh0IixjbGFzc05hbWU6ImZvcm0tY29udHJvbCIsaWQ6InByb2plY3RBZGRyZXNzIixvbkNoYW5nZTp0aGlzLmhhbmRsZVByb2plY3RBZGRyZXNzQ2hhbmdlfSkpLGUpLHMuYS5jcmVhdGVFbGVtZW50KCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToiYnRuIGJ0bi1wcmltYXJ5IG1yLTIiLG9uQ2xpY2s6dGhpcy5hZGRSaXNrQ2xpY2tlZH0sIkFkZCBSaXNrIikscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJidG4gYnRuLXNlY29uZGFyeSIsb25DbGljazp0aGlzLnN0b3JlUmlza3NDbGlja2VkfSwiU3RvcmUgUmlza3MiKSkpKSkpKX19XSksdH0ocy5hLkNvbXBvbmVudCksRT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3ZhciBhO3JldHVybiBPYmplY3QoaS5hKSh0aGlzLHQpLChhPU9iamVjdChvLmEpKHRoaXMsT2JqZWN0KGQuYSkodCkuY2FsbCh0aGlzLGUpKSkuc3RhdGU9e3Jpc2tzOltdLHByb2plY3RBZGRyZXNzOiIifSxhLm5vZGU9YS5wcm9wcy5ub2RlLGEuaGFuZGxlUHJvamVjdEFkZHJlc3NDaGFuZ2U9YS5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZVByb2JhYmlsaXR5Q2hhbmdlPWEuaGFuZGxlUHJvYmFiaWxpdHlDaGFuZ2UuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVJbXBhY3RDaGFuZ2U9YS5oYW5kbGVJbXBhY3RDaGFuZ2UuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVTdG9yYWdlT2ZFdmFsdWF0aW9ucz1hLmhhbmRsZVN0b3JhZ2VPZkV2YWx1YXRpb25zLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGF9cmV0dXJuIE9iamVjdChoLmEpKHQsZSksT2JqZWN0KGMuYSkodCxbe2tleToiaGFuZGxlUHJvYmFiaWxpdHlDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LmlkLGE9ZS50YXJnZXQudmFsdWUsbj10aGlzLnN0YXRlLnJpc2tzO25bdF0ucHJvYmFiaWxpdHk9YSx0aGlzLnNldFN0YXRlKHtyaXNrczpufSl9fSx7a2V5OiJoYW5kbGVJbXBhY3RDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LmlkLGE9ZS50YXJnZXQudmFsdWUsbj10aGlzLnN0YXRlLnJpc2tzO25bdF0uaW1wYWN0PWEsdGhpcy5zZXRTdGF0ZSh7cmlza3M6bn0pfX0se2tleToiaGFuZGxlU3RvcmFnZU9mRXZhbHVhdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuc3RhdGUucmlza3MsdD10aGlzLGE9W10sbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcz17dHlwZToxNixkYXRhOntmZWU6e3Rva2VuczouMDUsYXNzZXRJZDoiV0FWRVMifSxkQXBwOnRoaXMuc3RhdGUucHJvamVjdEFkZHJlc3MsY2FsbDp7ZnVuY3Rpb246ImV2YWx1YXRlUmlzayIsYXJnczpbe3R5cGU6InN0cmluZyIsdmFsdWU6ZVtuXS5pZH0se3R5cGU6ImludGVnZXIiLHZhbHVlOmVbbl0ucHJvYmFiaWxpdHl9LHt0eXBlOiJpbnRlZ2VyIix2YWx1ZTplW25dLmltcGFjdH1dfSxwYXltZW50OltdfX07YS5wdXNoKHMpLDc9PT1hLmxlbmd0aCYmKHdpbmRvdy5XYXZlc0tlZXBlci5zaWduVHJhbnNhY3Rpb25QYWNrYWdlKGEpLnRoZW4oZnVuY3Rpb24oZSl7Zm9yKHZhciBhPTA7YTxlLmxlbmd0aDthKyspdC5icm9hZGNhc3RUcmFuc2FjdGlvbihlW2FdLGZ1bmN0aW9uKGUpe2NvbnNvbGUubG9nKGUpfSl9KSxhPVtdKX1hLmxlbmd0aD4wJiZ3aW5kb3cuV2F2ZXNLZWVwZXIuc2lnblRyYW5zYWN0aW9uUGFja2FnZShhKS50aGVuKGZ1bmN0aW9uKGUpe2Zvcih2YXIgYT0wO2E8ZS5sZW5ndGg7YSsrKXQuYnJvYWRjYXN0VHJhbnNhY3Rpb24oZVthXSxmdW5jdGlvbihlKXtjb25zb2xlLmxvZyhlKX0pfSl9fSx7a2V5OiJicm9hZGNhc3RUcmFuc2FjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7YS5vcGVuKCJQT1NUIix0aGlzLm5vZGUrIi90cmFuc2FjdGlvbnMvYnJvYWRjYXN0IiwhMCksYS5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLCJhcHBsaWNhdGlvbi9qc29uIiksYS5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLCJhcHBsaWNhdGlvbi9qc29uIiksYS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXt0KHRoaXMucmVzcG9uc2UpfSxhLnNlbmQoZSl9fSx7a2V5OiJoYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZSIsdg=="
}

Changelog:

{
    "2020.01.02 17:09": "base64:KHdpbmRvdy53ZWJwYWNrSnNvbnA9d2luZG93LndlYnBhY2tKc29ucHx8W10pLnB1c2goW1swXSx7MTExODpmdW5jdGlvbihlLHQsYSl7fSwxMTIwOmZ1bmN0aW9uKGUsdCxhKXsidXNlIHN0cmljdCI7YS5yKHQpO3ZhciBuPWEoMSkscz1hLm4obikscj1hKDIwMCksbD1hLm4ociksaT0oYSg1NDEpLGEoMzkpKSxjPWEoNDApLG89YSg0MiksZD1hKDQxKSxtPWEoMTEpLGg9YSg0MyksdT1hKDMxKSxwPWEoNTAzKSxiPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIGE7cmV0dXJuIE9iamVjdChpLmEpKHRoaXMsdCksKGE9T2JqZWN0KG8uYSkodGhpcyxPYmplY3QoZC5hKSh0KS5jYWxsKHRoaXMsZSkpKS5jb250cmFjdD0ney0jIFNURExJQl9WRVJTSU9OIDMgIy19XG57LSMgQ09OVEVOVF9UWVBFIERBUFAgIy19XG57LSMgU0NSSVBUX1RZUEUgQUNDT1VOVCAjLX1cblxubGV0IEVNVFBZU1RSSU5HID0gIiJcblxuZnVuYyBnZXRTdHJpbmdGcm9tS2V5KGtleTogU3RyaW5nKSA9IHtcbiAgICBtYXRjaCBnZXRTdHJpbmcodGhpcywga2V5KSB7XG4gICAgICAgIGNhc2Ugc3RyOlN0cmluZyA9PiBzdHJcbiAgICAgICAgY2FzZSBfID0+IEVNVFBZU1RSSU5HXG4gICAgfVxufVxuXG5mdW5jIGlzVmFsaWRTZW5kZXIoc2VuZGVyOiBTdHJpbmcpID0ge1xuICAgIGxldCBlbnRyeUZvclNlbmRlckFkZHJlc3MgPSBnZXRTdHJpbmdGcm9tS2V5KHNlbmRlcilcblxuICAgIGlmIChlbnRyeUZvclNlbmRlckFkZHJlc3MgPT0gRU1UUFlTVFJJTkcpIHRoZW4gZmFsc2UgZWxzZSB0cnVlXG59XG5cbkBDYWxsYWJsZShpKVxuZnVuYyBhZGRSaXNrKG5hbWU6IFN0cmluZywgZGVzY3JpcHRpb246IFN0cmluZykgPSB7XG4gICBsZXQgc2VuZGVyID0gdG9CYXNlNThTdHJpbmcoaS5jYWxsZXIuYnl0ZXMpXG4gICBpZiAoaXNWYWxpZFNlbmRlcihzZW5kZXIpKSB0aGVuXG4gICAgICAgV3JpdGVTZXQoW1xuICAgICAgICAgICBEYXRhRW50cnkodG9CYXNlNThTdHJpbmcoaS50cmFuc2FjdGlvbklkKSArICJfbmFtZSIgLCBuYW1lKSxcbiAgICAgICAgICAgRGF0YUVudHJ5KHRvQmFzZTU4U3RyaW5nKGkudHJhbnNhY3Rpb25JZCkgKyAiX2Rlc2NyaXB0aW9uIiAsIGRlc2NyaXB0aW9uKVxuICAgICAgIF0pXG4gICBlbHNlIHRocm93KCJTZW5kZXIgbm90IGFsbG93ZWQgdG8gc3RvcmUgcmlza3MhIilcbn1cblxuQENhbGxhYmxlKGkpXG5mdW5jIGFkZENvbnNvbGlkYXRlZFJpc2sobmFtZTogU3RyaW5nLCBkZXNjcmlwdGlvbjogU3RyaW5nKSA9IHtcbiAgIGxldCBzZW5kZXIgPSB0b0Jhc2U1OFN0cmluZyhpLmNhbGxlci5ieXRlcylcbiAgIGlmIChpc1ZhbGlkU2VuZGVyKHNlbmRlcikpIHRoZW5cbiAgICAgICBXcml0ZVNldChbXG4gICAgICAgICAgIERhdGFFbnRyeSh0b0Jhc2U1OFN0cmluZyhpLnRyYW5zYWN0aW9uSWQpICsgIl9jb25zb2xpZGF0ZWRfbmFtZSIgLCBuYW1lKSxcbiAgICAgICAgICAgRGF0YUVudHJ5KHRvQmFzZTU4U3RyaW5nKGkudHJhbnNhY3Rpb25JZCkgKyAiX2NvbnNvbGlkYXRlZF9kZXNjcmlwdGlvbiIgLCBkZXNjcmlwdGlvbilcbiAgICAgICBdKVxuICAgZWxzZSB0aHJvdygiU2VuZGVyIG5vdCBhbGxvd2VkIHRvIGNvbnNvbGlkYXRlIHJpc2tzISIpXG59XG5cbkBDYWxsYWJsZShpKVxuZnVuYyBldmFsdWF0ZVJpc2soaWQ6IFN0cmluZywgcHJvYmFiaWxpdHk6IEludCwgaW1wYWN0OiBJbnQpID0ge1xuICAgbGV0IHNlbmRlciA9IHRvQmFzZTU4U3RyaW5nKGkuY2FsbGVyLmJ5dGVzKVxuXG4gICBpZiAoaXNWYWxpZFNlbmRlcihzZW5kZXIpKSB0aGVuXG4gICAgICAgV3JpdGVTZXQoW1xuICAgICAgICAgICBEYXRhRW50cnkoaWQgKyAiXyIgKyB0b0Jhc2U1OFN0cmluZyhpLnRyYW5zYWN0aW9uSWQpICsgIl9wcm9iIiAsIHByb2JhYmlsaXR5KSxcbiAgICAgICAgICAgRGF0YUVudHJ5KGlkICsgIl8iICsgdG9CYXNlNThTdHJpbmcoaS50cmFuc2FjdGlvbklkKSArICJfaW1wIiAsIGltcGFjdClcbiAgICAgICBdKVxuICAgZWxzZSB0aHJvdygiU2VuZGVyIG5vdCBhbGxvd2VkIHRvIGV2YWx1YXRlIG9yIGV2YWx1YXRlZCBhbHJlYWR5ISIpXG59XG5cbkBWZXJpZmllcih0eClcbmZ1bmMgdmVyaWZ5KCkgPSB7XG4gICBtYXRjaCB0eCB7XG4gICAgICAgY2FzZSBfID0+IGZhbHNlXG4gICB9XG59XG4nLGEuc3RhdGU9e2FkZHJlc3NlczpbXSxhZGRyZXNzOiIiLHByb2plY3ROYW1lOiIiLHByb2plY3REZXNjcmlwdGlvbjoiIixzZWVkOiIiLHNob3dQcm9ncmVzc2JhcjohMX0sYS5ub2RlPWEucHJvcHMubm9kZSxhLmhhbmRsZUFkZEFkZHJlc3M9YS5oYW5kbGVBZGRBZGRyZXNzLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlQ2hhbmdlPWEuaGFuZGxlQ2hhbmdlLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlUHJvamVjdE5hbWU9YS5oYW5kbGVQcm9qZWN0TmFtZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZVByb2plY3REZXNjcmlwdGlvbj1hLmhhbmRsZVByb2plY3REZXNjcmlwdGlvbi5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZUZ1bmRBZGRyZXNzPWEuaGFuZGxlRnVuZEFkZHJlc3MuYmluZChPYmplY3QobS5hKShhKSksYX1yZXR1cm4gT2JqZWN0KGguYSkodCxlKSxPYmplY3QoYy5hKSh0LFt7a2V5OiJjb21waWxlQ29udHJhY3QiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBYTUxIdHRwUmVxdWVzdDt0Lm9wZW4oIlBPU1QiLHRoaXMubm9kZSsiL3V0aWxzL3NjcmlwdC9jb21waWxlQ29kZSIsITApLHQuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwiYXBwbGljYXRpb24vanNvbiIpLHQuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IiwiYXBwbGljYXRpb24vanNvbiIpLHQub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aWYoND09PXQucmVhZHlTdGF0ZSYmMjAwPT09dC5zdGF0dXMpe3ZhciBhPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZSkuc2NyaXB0O2UoYSl9fSx0LnNlbmQodGhpcy5jb250cmFjdCl9fSx7a2V5OiJkZXBsb3lDb250cmFjdCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5ub2RlLGE9dGhpczt0aGlzLmNvbXBpbGVDb250cmFjdChmdW5jdGlvbihuKXt2YXIgcz1PYmplY3QodS5zZXRTY3JpcHQpKHtzY3JpcHQ6bn0sZSk7T2JqZWN0KHUuYnJvYWRjYXN0KShzLHQpLnRoZW4oZnVuY3Rpb24oZSl7T2JqZWN0KHUud2FpdEZvclR4KShzLmlkLHt0aW1lb3V0OjEyZTQsYXBpQmFzZTp0fSkudGhlbihmdW5jdGlvbigpe2Euc2V0U3RhdGUoe3Nob3dQcm9ncmVzc2JhcjohMX0pfSl9KX0pfX0se2tleToiY3JlYXRlRGF0YUVudHJpZXMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPVt7a2V5OiJwcm9qZWN0TmFtZSIsdmFsdWU6dGhpcy5zdGF0ZS5wcm9qZWN0TmFtZSx0eXBlOiJzdHJpbmcifSx7a2V5OiJwcm9qZWN0RGVzY3JpcHRpb24iLHZhbHVlOnRoaXMuc3RhdGUucHJvamVjdERlc2NyaXB0aW9uLHR5cGU6InN0cmluZyJ9LHtrZXk6dGhpcy5zdGF0ZS5hZGRyZXNzLHZhbHVlOiJvd25lciIsdHlwZToic3RyaW5nIn1dLHQ9dGhpcyxhPXRoaXMubm9kZSxuPTA7bjx0aGlzLnN0YXRlLmFkZHJlc3Nlcy5sZW5ndGg7bisrKXt2YXIgcz17a2V5OnRoaXMuc3RhdGUuYWRkcmVzc2VzW25dLHZhbHVlOiJ1c2VyIix0eXBlOiJzdHJpbmcifTtlLnB1c2gocyl9dmFyIHI9e3R5cGU6MTIsZGF0YTplfSxsPU9iamVjdCh1LmRhdGEpKHIsdGhpcy5zdGF0ZS5zZWVkKTtPYmplY3QodS5icm9hZGNhc3QpKGwsdGhpcy5ub2RlKS50aGVuKGZ1bmN0aW9uKCl7T2JqZWN0KHUud2FpdEZvclR4KShsLmlkLHt0aW1lb3V0OjEyZTQsYXBpQmFzZTphfSkudGhlbihmdW5jdGlvbihlKXtjb25zb2xlLmxvZyhlKSx0LmRlcGxveUNvbnRyYWN0KHQuc3RhdGUuc2VlZCksdC5zdG9yZVByb2plY3QodC5zdGF0ZSl9KX0pfX0se2tleToic3RvcmVQcm9qZWN0Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGE9dGhpcy5ub2RlO3dpbmRvdy5XYXZlc0tlZXBlci5wdWJsaWNTdGF0ZSgpLnRoZW4oZnVuY3Rpb24obil7dmFyIHM9e3R5cGU6MTYsZEFwcDoiM1BIZmVub0pkMjZjcGVRVmYyOW00Q0pvUm4yM013R1hHcjciLGNhbGw6e2Z1bmN0aW9uOiJzdG9yZVByb2plY3QiLGFyZ3M6W3t0eXBlOiJzdHJpbmciLHZhbHVlOmUuYWRkcmVzc30se3R5cGU6InN0cmluZyIsdmFsdWU6ZS5wcm9qZWN0TmFtZX0se3R5cGU6InN0cmluZyIsdmFsdWU6ZS5wcm9qZWN0RGVzY3JpcHRpb259LHt0eXBlOiJpbnRlZ2VyIix2YWx1ZToobmV3IERhdGUpLmdldFRpbWUoKX0se3R5cGU6InN0cmluZyIsdmFsdWU6bi5hY2NvdW50LmFkZHJlc3N9XX0scGF5bWVudDpbXX0scj1PYmplY3QodS5pbnZva2VTY3JpcHQpKHMsdC5zdGF0ZS5zZWVkKTtPYmplY3QodS5icm9hZGNhc3QpKHIsdC5ub2RlKS50aGVuKGZ1bmN0aW9uKCl7T2JqZWN0KHUud2FpdEZvclR4KShyLmlkLHt0aW1lb3V0OjEyZTQsYXBpQmFzZTphfSkudGhlbihmdW5jdGlvbihlKXtjb25zb2xlLmxvZyhlKX0pfSl9KS5jYXRjaChmdW5jdGlvbihlKXtjb25zb2xlLmVycm9yKGUpfSl9fSx7a2V5OiJoYW5kbGVGdW5kQWRkcmVzcyIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciB0PXUuc2VlZFV0aWxzLmdlbmVyYXRlTmV3U2VlZCgpLGE9bmV3IHAuU2VlZEFkYXB0ZXIodCkuc2VlZC5hZGRyZXNzLG49dGhpcy5ub2RlLHM9dGhpczt0aGlzLnNldFN0YXRlKHtzZWVkOnQsYWRkcmVzczphLHNob3dQcm9ncmVzc2JhcjohMH0pO3ZhciByPXt0eXBlOjQsZGF0YTp7cmVjaXBpZW50OmEsYW1vdW50Onthc3NldElkOiJXQVZFUyIsdG9rZW5zOiIwLjAxNiJ9LGZlZTp7YXNzZXRJZDoiV0FWRVMiLHRva2VuczoiMC4wMDEifX19O3dpbmRvdy5XYXZlc0tlZXBlci5zaWduQW5kUHVibGlzaFRyYW5zYWN0aW9uKHIpLnRoZW4oZnVuY3Rpb24oZSl7dmFyIHQ9SlNPTi5wYXJzZShlKTtPYmplY3QodS53YWl0Rm9yVHgpKHQuaWQse3RpbWVvdXQ6MTJlNCxhcGlCYXNlOm59KS50aGVuKGZ1bmN0aW9uKCl7cy5jcmVhdGVEYXRhRW50cmllcygpfSl9KS5jYXRjaChmdW5jdGlvbihlKXtjb25zb2xlLmVycm9yKCJTb21ldGhpbmcgd2VudCB3cm9uZyIsZSl9KX19LHtrZXk6ImhhbmRsZUNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQuaWQsYT10aGlzLnN0YXRlLmFkZHJlc3NlczthW3RdPWUudGFyZ2V0LnZhbHVlLHRoaXMuc2V0U3RhdGUoe2FkZHJlc3NlczphfSl9fSx7a2V5OiJoYW5kbGVBZGRBZGRyZXNzIix2YWx1ZTpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIHQ9dGhpcy5zdGF0ZS5hZGRyZXNzZXM7dC5wdXNoKCIiKSx0aGlzLnNldFN0YXRlKHthZGRyZXNzZXM6dH0pfX0se2tleToiaGFuZGxlUHJvamVjdE5hbWUiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2V0U3RhdGUoe3Byb2plY3ROYW1lOmUudGFyZ2V0LnZhbHVlfSl9fSx7a2V5OiJoYW5kbGVQcm9qZWN0RGVzY3JpcHRpb24iLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2V0U3RhdGUoe3Byb2plY3REZXNjcmlwdGlvbjplLnRhcmdldC52YWx1ZX0pfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDx0aGlzLnN0YXRlLmFkZHJlc3Nlcy5sZW5ndGg7dCsrKXt2YXIgYT1zLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJmb3JtLWdyb3VwIixrZXk6dH0scy5hLmNyZWF0ZUVsZW1lbnQoImxhYmVsIix7aHRtbEZvcjoicHJvamVjdE5hbWUifSwiQWRkcmVzcyIpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGNsYXNzTmFtZToiZm9ybS1jb250cm9sIixpZDp0LG9uQ2hhbmdlOnRoaXMuaGFuZGxlQ2hhbmdlfSkpO2UucHVzaChhKX12YXIgbj1zLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJtb2RhbCIsdGFiSW5kZXg6Ii0xIixyb2xlOiJkaWFsb2ciLHN0eWxlOntkaXNwbGF5OiJibG9jayJ9fSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJtb2RhbC1kaWFsb2ciLHJvbGU6ImRvY3VtZW50In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToibW9kYWwtY29udGVudCBib3JkZXItbGVmdC1pbmZvIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToibW9kYWwtaGVhZGVyIn0scy5hLmNyZWF0ZUVsZW1lbnQoImg1Iix7Y2xhc3NOYW1lOiJtb2RhbC10aXRsZSJ9LCJJbml0aWFsaXppbmcgcHJvamVjdC4uLiIpKSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJtb2RhbC1ib2R5In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicHJvZ3Jlc3MifSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLXN0cmlwZWQgcHJvZ3Jlc3MtYmFyLWFuaW1hdGVkIixyb2xlOiJwcm9ncmVzc2JhciIsImFyaWEtdmFsdWVub3ciOiIxMDAiLCJhcmlhLXZhbHVlbWluIjoiMCIsImFyaWEtdmFsdWVtYXgiOiIxMDAiLHN0eWxlOnt3aWR0aDoiMTAwJSJ9fSkpKSkpKTtyZXR1cm4gcy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxzLmEuY3JlYXRlRWxlbWVudCgibmF2Iix7Y2xhc3NOYW1lOiJuYXZiYXIgbmF2YmFyLWV4cGFuZCBuYXZiYXItbGlnaHQgYmctd2hpdGUgdG9wYmFyIG1iLTQgc3RhdGljLXRvcCBzaGFkb3cifSxzLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7aWQ6InNpZGViYXJUb2dnbGVUb3AiLGNsYXNzTmFtZToiYnRuIGJ0bi1saW5rIGQtbWQtbm9uZSByb3VuZGVkLWNpcmNsZSBtci0zIn0scy5hLmNyZWF0ZUVsZW1lbnQoImkiLHtjbGFzc05hbWU6ImZhIGZhLWJhcnMifSkpLHMuYS5jcmVhdGVFbGVtZW50KCJ1bCIse2NsYXNzTmFtZToibmF2YmFyLW5hdiBtbC1hdXRvIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToidG9wYmFyLWRpdmlkZXIgZC1ub25lIGQtc20tYmxvY2sifSkscy5hLmNyZWF0ZUVsZW1lbnQoImxpIix7Y2xhc3NOYW1lOiJuYXYtaXRlbSBuby1hcnJvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJtci0yIGQtbm9uZSBkLWxnLWlubGluZSB0ZXh0LWdyYXktNjAwIHNtYWxsIn0sIkNyZWF0ZSBQcm9qZWN0IikpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyLWZsdWlkIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZC1zbS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImgxIix7Y2xhc3NOYW1lOiJoMyBtYi0wIHRleHQtZ3JheS04MDAifSwiQ3JlYXRlIGEgbmV3IHByb2plY3QiKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZCBib3JkZXItbGVmdC1pbmZvIHNoYWRvdyBoLTEwMCBweS0yIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZC1ib2R5In0scy5hLmNyZWF0ZUVsZW1lbnQoImZvcm0iLG51bGwscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6InByb2plY3ROYW1lIn0sIlByb2plY3QgTmFtZSIpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGNsYXNzTmFtZToiZm9ybS1jb250cm9sIixpZDoicHJvamVjdE5hbWUiLG9uQ2hhbmdlOnRoaXMuaGFuZGxlUHJvamVjdE5hbWV9KSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6InByb2plY3REZXNjcmlwdGlvbiJ9LCJQcm9qZWN0IERlc2NyaXB0aW9uIikscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToicHJvamVjdERlc2NyaXB0aW9uIixjbGFzc05hbWU6ImZvcm0tY29udHJvbCIsaWQ6InByb2plY3REZXNjcmlwdGlvbiIsb25DaGFuZ2U6dGhpcy5oYW5kbGVQcm9qZWN0RGVzY3JpcHRpb259KSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6InByb2plY3RBZGRyZXNzIn0sIlByb2plY3QgQWRkcmVzcyIpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InByb2plY3RBZGRyZXNzIixjbGFzc05hbWU6ImZvcm0tY29udHJvbCIsdmFsdWU6dGhpcy5zdGF0ZS5hZGRyZXNzLHJlYWRPbmx5OiEwfSkpLGUscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse2NsYXNzTmFtZToiYnRuIGJ0bi1wcmltYXJ5IG1yLTIgbWItMiIsb25DbGljazp0aGlzLmhhbmRsZUZ1bmRBZGRyZXNzfSwiQ3JlYXRlIFByb2plY3QiKSxzLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7Y2xhc3NOYW1lOiJidG4gYnRuLXNlY29uZGFyeSBtci0yIG1iLTIiLG9uQ2xpY2s6dGhpcy5oYW5kbGVBZGRBZGRyZXNzfSwiQWRkIEFkZHJlc3MiKSx0aGlzLnN0YXRlLnNob3dQcm9ncmVzc2Jhcj9uOnMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwpKSkpKSkpKX19XSksdH0ocy5hLkNvbXBvbmVudCksdj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3ZhciBhO3JldHVybiBPYmplY3QoaS5hKSh0aGlzLHQpLChhPU9iamVjdChvLmEpKHRoaXMsT2JqZWN0KGQuYSkodCkuY2FsbCh0aGlzLGUpKSkuc3RhdGU9e3Jpc2tzOltdLHByb2plY3RBZGRyZXNzOiIifSxhLm5vZGU9YS5wcm9wcy5ub2RlLGEuaGFuZGxlUHJvamVjdEFkZHJlc3NDaGFuZ2U9YS5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZURlc2NyaXB0aW9uQ2hhbmdlPWEuaGFuZGxlRGVzY3JpcHRpb25DaGFuZ2UuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVOYW1lQ2hhbmdlPWEuaGFuZGxlTmFtZUNoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmRlbGV0ZVJpc2tDbGlja2VkPWEuZGVsZXRlUmlza0NsaWNrZWQuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVTdG9yYWdlT2ZSaXNrcz1hLmhhbmRsZVN0b3JhZ2VPZlJpc2tzLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlQWRkUmlzaz1hLmhhbmRsZUFkZFJpc2suYmluZChPYmplY3QobS5hKShhKSksYX1yZXR1cm4gT2JqZWN0KGguYSkodCxlKSxPYmplY3QoYy5hKSh0LFt7a2V5OiJoYW5kbGVBZGRSaXNrIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUucmlza3M7ZS5wdXNoKHtuYW1lOiIiLGRlc2NyaXB0aW9uOiIifSksdGhpcy5zZXRTdGF0ZSh7cmlza3M6ZX0pfX0se2tleToiaGFuZGxlU3RvcmFnZU9mUmlza3MiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD10aGlzLnN0YXRlLnJpc2tzLGE9dGhpcyxuPVtdLHM9ZnVuY3Rpb24oKXt2YXIgYT17dHlwZToxNixkYXRhOntmZWU6e3Rva2VuczouMDUsYXNzZXRJZDoiV0FWRVMifSxkQXBwOmUuc3RhdGUucHJvamVjdEFkZHJlc3MsY2FsbDp7ZnVuY3Rpb246ImFkZENvbnNvbGlkYXRlZFJpc2siLGFyZ3M6W3t0eXBlOiJzdHJpbmciLHZhbHVlOnRbcl0ubmFtZX0se3R5cGU6InN0cmluZyIsdmFsdWU6dFtyXS5kZXNjcmlwdGlvbn1dfSxwYXltZW50OltdfX07bi5wdXNoKGEpO3ZhciBzPWU7Nz09PW4ubGVuZ3RoJiYod2luZG93LldhdmVzS2VlcGVyLnNpZ25UcmFuc2FjdGlvblBhY2thZ2UobikudGhlbihmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylzLmJyb2FkY2FzdFRyYW5zYWN0aW9uKGVbdF0sZnVuY3Rpb24oZSl7Y29uc29sZS5sb2coZSl9KX0pLG49W10pfSxyPTA7cjx0Lmxlbmd0aDtyKyspcygpO24ubGVuZ3RoPjAmJndpbmRvdy5XYXZlc0tlZXBlci5zaWduVHJhbnNhY3Rpb25QYWNrYWdlKG4pLnRoZW4oZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspYS5icm9hZGNhc3RUcmFuc2FjdGlvbihlW3RdLGZ1bmN0aW9uKGUpe2NvbnNvbGUubG9nKGUpfSl9KX19LHtrZXk6ImJyb2FkY2FzdFRyYW5zYWN0aW9uIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBhPW5ldyBYTUxIdHRwUmVxdWVzdDthLm9wZW4oIlBPU1QiLHRoaXMubm9kZSsiL3RyYW5zYWN0aW9ucy9icm9hZGNhc3QiLCEwKSxhLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsImFwcGxpY2F0aW9uL2pzb24iKSxhLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsImFwcGxpY2F0aW9uL2pzb24iKSxhLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3QodGhpcy5yZXNwb25zZSl9LGEuc2VuZChlKX19LHtrZXk6ImhhbmRsZVByb2plY3RBZGRyZXNzQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC52YWx1ZSxhPXRoaXMsbj1bXTtmZXRjaCh0aGlzLm5vZGUrIi9hZGRyZXNzZXMvZGF0YS8iK3QpLnRoZW4oZnVuY3Rpb24oZSl7ZS5qc29uKCkudGhlbihmdW5jdGlvbihlKXtlLmZvckVhY2goZnVuY3Rpb24odCl7aWYodC5rZXkuZW5kc1dpdGgoIl9uYW1lIikpe3ZhciBhPXQua2V5LnN1YnN0cmluZygwLHQua2V5LmluZGV4T2YoIl8iKSkscz10LnZhbHVlO2UuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlLmtleT09PWErIl9kZXNjcmlwdGlvbiIpe3ZhciB0PWUudmFsdWUscj17bmFtZTpzLGRlc2NyaXB0aW9uOnR9O24ucHVzaChyKX19KX19KSxhLnNldFN0YXRlKHtyaXNrczpuLHByb2plY3RBZGRyZXNzOnR9KX0pfSkuY2F0Y2goZnVuY3Rpb24oZSl7Y29uc29sZS5sb2coZSl9KX19LHtrZXk6ImhhbmRsZURlc2NyaXB0aW9uQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC5pZCxhPWUudGFyZ2V0LnZhbHVlLG49dGhpcy5zdGF0ZS5yaXNrcztuW3RdLmRlc2NyaXB0aW9uPWEsdGhpcy5zZXRTdGF0ZSh7cmlza3M6bn0pfX0se2tleToiaGFuZGxlTmFtZUNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQuaWQsYT1lLnRhcmdldC52YWx1ZSxuPXRoaXMuc3RhdGUucmlza3M7blt0XS5uYW1lPWEsdGhpcy5zZXRTdGF0ZSh7cmlza3M6bn0pfX0se2tleToiZGVsZXRlUmlza0NsaWNrZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LmlkLGE9dGhpcy5zdGF0ZS5yaXNrczthLnNwbGljZSh0LDEpLHRoaXMuc2V0U3RhdGUoe3Jpc2tzOmF9KX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8dGhpcy5zdGF0ZS5yaXNrcy5sZW5ndGg7dCsrKXt2YXIgYT1zLmEuY3JlYXRlRWxlbWVudCgidHIiLHtrZXk6dH0scy5hLmNyZWF0ZUVsZW1lbnQoInRkIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGlkOnQsdmFsdWU6dGhpcy5zdGF0ZS5yaXNrc1t0XS5uYW1lLG9uQ2hhbmdlOnRoaXMuaGFuZGxlTmFtZUNoYW5nZX0pKSxzLmEuY3JlYXRlRWxlbWVudCgidGQiLG51bGwscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToidGV4dCIsaWQ6dCx2YWx1ZTp0aGlzLnN0YXRlLnJpc2tzW3RdLmRlc2NyaXB0aW9uLG9uQ2hhbmdlOnRoaXMuaGFuZGxlRGVzY3JpcHRpb25DaGFuZ2V9KSkscy5hLmNyZWF0ZUVsZW1lbnQoInRkIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToiYnRuIGJ0bi1kYW5nZXIiLGlkOnQsb25DbGljazp0aGlzLmRlbGV0ZVJpc2tDbGlja2VkfSwiRGVsZXRlIFJpc2siKSkpO2UucHVzaChhKX1yZXR1cm4gcy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxzLmEuY3JlYXRlRWxlbWVudCgibmF2Iix7Y2xhc3NOYW1lOiJuYXZiYXIgbmF2YmFyLWV4cGFuZCBuYXZiYXItbGlnaHQgYmctd2hpdGUgdG9wYmFyIG1iLTQgc3RhdGljLXRvcCBzaGFkb3cifSxzLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7aWQ6InNpZGViYXJUb2dnbGVUb3AiLGNsYXNzTmFtZToiYnRuIGJ0bi1saW5rIGQtbWQtbm9uZSByb3VuZGVkLWNpcmNsZSBtci0zIn0scy5hLmNyZWF0ZUVsZW1lbnQoImkiLHtjbGFzc05hbWU6ImZhIGZhLWJhcnMifSkpLHMuYS5jcmVhdGVFbGVtZW50KCJ1bCIse2NsYXNzTmFtZToibmF2YmFyLW5hdiBtbC1hdXRvIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToidG9wYmFyLWRpdmlkZXIgZC1ub25lIGQtc20tYmxvY2sifSkscy5hLmNyZWF0ZUVsZW1lbnQoImxpIix7Y2xhc3NOYW1lOiJuYXYtaXRlbSBuby1hcnJvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJtci0yIGQtbm9uZSBkLWxnLWlubGluZSB0ZXh0LWdyYXktNjAwIHNtYWxsIn0sIkNvbnNvbGlkYXRlIFJpc2tzIikpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyLWZsdWlkIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZC1zbS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImgxIix7Y2xhc3NOYW1lOiJoMyBtYi0wIHRleHQtZ3JheS04MDAifSwiQ29uc29saWRhdGUgcmlza3MiKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZCBib3JkZXItbGVmdC1pbmZvIHNoYWRvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImNhcmQtYm9keSJ9LHMuYS5jcmVhdGVFbGVtZW50KCJmb3JtIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImZvcm0tZ3JvdXAifSxzLmEuY3JlYXRlRWxlbWVudCgibGFiZWwiLHtodG1sRm9yOiJleGFtcGxlSW5wdXRFbWFpbDEifSwiUHJvamVjdCBBZGRyZXNzIikscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToidGV4dCIsY2xhc3NOYW1lOiJmb3JtLWNvbnRyb2wiLGlkOiJwcm9qZWN0QWRkcmVzcyIsb25DaGFuZ2U6dGhpcy5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZX0pKSkscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJidG4gYnRuLXByaW1hcnkgbWItMiBtci0yIixvbkNsaWNrOnRoaXMuaGFuZGxlQWRkUmlza30sIkFkZCBSaXNrIikscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJidG4gYnRuLXNlY29uZGFyeSBtYi0yIixvbkNsaWNrOnRoaXMuaGFuZGxlU3RvcmFnZU9mUmlza3N9LCJTdG9yZSBDb25zb2xpZGF0ZWQgUmlza3MiKSkpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoInRhYmxlIix7Y2xhc3NOYW1lOiJ0YWJsZSB0YWJsZS1zdHJpcGVkIGJvcmRlci1sZWZ0LWluZm8gc2hhZG93In0scy5hLmNyZWF0ZUVsZW1lbnQoInRoZWFkIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJ0ciIsbnVsbCxzLmEuY3JlYXRlRWxlbWVudCgidGgiLG51bGwsIk5hbWUiKSxzLmEuY3JlYXRlRWxlbWVudCgidGgiLG51bGwsIkRlc2NyaXB0aW9uIikscy5hLmNyZWF0ZUVsZW1lbnQoInRoIixudWxsLCJBY3Rpb24iKSkpLHMuYS5jcmVhdGVFbGVtZW50KCJ0Ym9keSIsbnVsbCxlKSkpKSkpfX1dKSx0fShzLmEuQ29tcG9uZW50KSxmPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIGE7cmV0dXJuIE9iamVjdChpLmEpKHRoaXMsdCksKGE9T2JqZWN0KG8uYSkodGhpcyxPYmplY3QoZC5hKSh0KS5jYWxsKHRoaXMsZSkpKS5zdGF0ZT17cmlza3M6W10scHJvamVjdEFkZHJlc3M6IiJ9LGEubm9kZT1hLnByb3BzLm5vZGUsYS5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZT1hLmhhbmRsZVByb2plY3RBZGRyZXNzQ2hhbmdlLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuYWRkUmlza0NsaWNrZWQ9YS5hZGRSaXNrQ2xpY2tlZC5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZU5hbWVDaGFuZ2U9YS5oYW5kbGVOYW1lQ2hhbmdlLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlRGVzY3JpcHRpb25DaGFuZ2U9YS5oYW5kbGVEZXNjcmlwdGlvbkNoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLnN0b3JlUmlza3NDbGlja2VkPWEuc3RvcmVSaXNrc0NsaWNrZWQuYmluZChPYmplY3QobS5hKShhKSksYX1yZXR1cm4gT2JqZWN0KGguYSkodCxlKSxPYmplY3QoYy5hKSh0LFt7a2V5OiJoYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5zZXRTdGF0ZSh7cHJvamVjdEFkZHJlc3M6ZS50YXJnZXQudmFsdWV9KX19LHtrZXk6ImFkZFJpc2tDbGlja2VkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUucmlza3M7ZS5sZW5ndGg8Nz8oZS5wdXNoKHtuYW1lOiIiLGRlc2NyaXB0aW9uOiIifSksdGhpcy5zZXRTdGF0ZSh7cmlza3M6ZX0pKTphbGVydCgiT25seSBzZXZlbiByaXNrcyBhbGxvd2VkIGF0IG9uY2UhIil9fSx7a2V5OiJoYW5kbGVOYW1lQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC5pZCxhPWUudGFyZ2V0LnZhbHVlLG49dGhpcy5zdGF0ZS5yaXNrcztuW3RdLm5hbWU9YSx0aGlzLnNldFN0YXRlKHtyaXNrczpufSl9fSx7a2V5OiJoYW5kbGVEZXNjcmlwdGlvbkNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQuaWQsYT1lLnRhcmdldC52YWx1ZSxuPXRoaXMuc3RhdGUucmlza3M7blt0XS5kZXNjcmlwdGlvbj1hLHRoaXMuc2V0U3RhdGUoe3Jpc2tzOm59KX19LHtrZXk6InN0b3JlUmlza3NDbGlja2VkIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnN0YXRlLnJpc2tzLHQ9W10sYT0wO2E8ZS5sZW5ndGg7YSsrKXt2YXIgbj17dHlwZToxNixkYXRhOntmZWU6e3Rva2VuczouMDUsYXNzZXRJZDoiV0FWRVMifSxkQXBwOnRoaXMuc3RhdGUucHJvamVjdEFkZHJlc3MsY2FsbDp7ZnVuY3Rpb246ImFkZFJpc2siLGFyZ3M6W3t0eXBlOiJzdHJpbmciLHZhbHVlOmVbYV0ubmFtZX0se3R5cGU6InN0cmluZyIsdmFsdWU6ZVthXS5kZXNjcmlwdGlvbn1dfSxwYXltZW50OltdfX07dC5wdXNoKG4pfXZhciBzPXRoaXM7d2luZG93LldhdmVzS2VlcGVyLnNpZ25UcmFuc2FjdGlvblBhY2thZ2UodCkudGhlbihmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylzLmJyb2FkY2FzdFRyYW5zYWN0aW9uKGVbdF0sZnVuY3Rpb24oZSl7Y29uc29sZS5sb2coZSl9KX0pfX0se2tleToiYnJvYWRjYXN0VHJhbnNhY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGE9bmV3IFhNTEh0dHBSZXF1ZXN0O2Eub3BlbigiUE9TVCIsdGhpcy5ub2RlKyIvdHJhbnNhY3Rpb25zL2Jyb2FkY2FzdCIsITApLGEuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwiYXBwbGljYXRpb24vanNvbiIpLGEuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IiwiYXBwbGljYXRpb24vanNvbiIpLGEub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7dCh0aGlzLnJlc3BvbnNlKX0sYS5zZW5kKGUpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDx0aGlzLnN0YXRlLnJpc2tzLmxlbmd0aDt0Kyspe3ZhciBhPXMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InJvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImNvbC14bC02IGNvbC1tZC02IG1iLTQifSxzLmEuY3JlYXRlRWxlbWVudCgibGFiZWwiLG51bGwsIk5hbWUiKSxzLmEuY3JlYXRlRWxlbWVudCgiYnIiLG51bGwpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGNsYXNzTmFtZToiZm9ybS1jb250cm9sIixpZDp0LG9uQ2hhbmdlOnRoaXMuaGFuZGxlTmFtZUNoYW5nZX0pKSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJjb2wteGwtNiBjb2wtbWQtNiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImxhYmVsIixudWxsLCJEZXNjcmlwdGlvbiIpLHMuYS5jcmVhdGVFbGVtZW50KCJiciIsbnVsbCkscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToidGV4dCIsY2xhc3NOYW1lOiJmb3JtLWNvbnRyb2wiLGlkOnQsb25DaGFuZ2U6dGhpcy5oYW5kbGVEZXNjcmlwdGlvbkNoYW5nZX0pKSk7ZS5wdXNoKGEpfXJldHVybiBzLmEuY3JlYXRlRWxlbWVudCgiZGl2IixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJuYXYiLHtjbGFzc05hbWU6Im5hdmJhciBuYXZiYXItZXhwYW5kIG5hdmJhci1saWdodCBiZy13aGl0ZSB0b3BiYXIgbWItNCBzdGF0aWMtdG9wIHNoYWRvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJidXR0b24iLHtpZDoic2lkZWJhclRvZ2dsZVRvcCIsY2xhc3NOYW1lOiJidG4gYnRuLWxpbmsgZC1tZC1ub25lIHJvdW5kZWQtY2lyY2xlIG1yLTMifSxzLmEuY3JlYXRlRWxlbWVudCgiaSIse2NsYXNzTmFtZToiZmEgZmEtYmFycyJ9KSkscy5hLmNyZWF0ZUVsZW1lbnQoInVsIix7Y2xhc3NOYW1lOiJuYXZiYXItbmF2IG1sLWF1dG8ifSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJ0b3BiYXItZGl2aWRlciBkLW5vbmUgZC1zbS1ibG9jayJ9KSxzLmEuY3JlYXRlRWxlbWVudCgibGkiLHtjbGFzc05hbWU6Im5hdi1pdGVtIG5vLWFycm93In0scy5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6Im1yLTIgZC1ub25lIGQtbGctaW5saW5lIHRleHQtZ3JheS02MDAgc21hbGwifSwiQWRkIFJpc2tzIikpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyLWZsdWlkIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZC1zbS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImgxIix7Y2xhc3NOYW1lOiJoMyBtYi0wIHRleHQtZ3JheS04MDAifSwiQWRkIGEgcmlzayIpKSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJjYXJkIGJvcmRlci1sZWZ0LWluZm8gc2hhZG93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZC1ib2R5In0scy5hLmNyZWF0ZUVsZW1lbnQoImZvcm0iLG51bGwscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6ImV4YW1wbGVJbnB1dEVtYWlsMSJ9LCJQcm9qZWN0IEFkZHJlc3MiKSxzLmEuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHt0eXBlOiJ0ZXh0IixjbGFzc05hbWU6ImZvcm0tY29udHJvbCIsaWQ6InByb2plY3RBZGRyZXNzIixvbkNoYW5nZTp0aGlzLmhhbmRsZVByb2plY3RBZGRyZXNzQ2hhbmdlfSkpLGUpLHMuYS5jcmVhdGVFbGVtZW50KCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToiYnRuIGJ0bi1wcmltYXJ5IG1yLTIiLG9uQ2xpY2s6dGhpcy5hZGRSaXNrQ2xpY2tlZH0sIkFkZCBSaXNrIikscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJidG4gYnRuLXNlY29uZGFyeSIsb25DbGljazp0aGlzLnN0b3JlUmlza3NDbGlja2VkfSwiU3RvcmUgUmlza3MiKSkpKSkpKX19XSksdH0ocy5hLkNvbXBvbmVudCksRT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3ZhciBhO3JldHVybiBPYmplY3QoaS5hKSh0aGlzLHQpLChhPU9iamVjdChvLmEpKHRoaXMsT2JqZWN0KGQuYSkodCkuY2FsbCh0aGlzLGUpKSkuc3RhdGU9e3Jpc2tzOltdLHByb2plY3RBZGRyZXNzOiIifSxhLm5vZGU9YS5wcm9wcy5ub2RlLGEuaGFuZGxlUHJvamVjdEFkZHJlc3NDaGFuZ2U9YS5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZVByb2JhYmlsaXR5Q2hhbmdlPWEuaGFuZGxlUHJvYmFiaWxpdHlDaGFuZ2UuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVJbXBhY3RDaGFuZ2U9YS5oYW5kbGVJbXBhY3RDaGFuZ2UuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVTdG9yYWdlT2ZFdmFsdWF0aW9ucz1hLmhhbmRsZVN0b3JhZ2VPZkV2YWx1YXRpb25zLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGF9cmV0dXJuIE9iamVjdChoLmEpKHQsZSksT2JqZWN0KGMuYSkodCxbe2tleToiaGFuZGxlUHJvYmFiaWxpdHlDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LmlkLGE9ZS50YXJnZXQudmFsdWUsbj10aGlzLnN0YXRlLnJpc2tzO25bdF0ucHJvYmFiaWxpdHk9YSx0aGlzLnNldFN0YXRlKHtyaXNrczpufSl9fSx7a2V5OiJoYW5kbGVJbXBhY3RDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LmlkLGE9ZS50YXJnZXQudmFsdWUsbj10aGlzLnN0YXRlLnJpc2tzO25bdF0uaW1wYWN0PWEsdGhpcy5zZXRTdGF0ZSh7cmlza3M6bn0pfX0se2tleToiaGFuZGxlU3RvcmFnZU9mRXZhbHVhdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuc3RhdGUucmlza3MsdD10aGlzLGE9W10sbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcz17dHlwZToxNixkYXRhOntmZWU6e3Rva2VuczouMDUsYXNzZXRJZDoiV0FWRVMifSxkQXBwOnRoaXMuc3RhdGUucHJvamVjdEFkZHJlc3MsY2FsbDp7ZnVuY3Rpb246ImV2YWx1YXRlUmlzayIsYXJnczpbe3R5cGU6InN0cmluZyIsdmFsdWU6ZVtuXS5pZH0se3R5cGU6ImludGVnZXIiLHZhbHVlOmVbbl0ucHJvYmFiaWxpdHl9LHt0eXBlOiJpbnRlZ2VyIix2YWx1ZTplW25dLmltcGFjdH1dfSxwYXltZW50OltdfX07YS5wdXNoKHMpLDc9PT1hLmxlbmd0aCYmKHdpbmRvdy5XYXZlc0tlZXBlci5zaWduVHJhbnNhY3Rpb25QYWNrYWdlKGEpLnRoZW4oZnVuY3Rpb24oZSl7Zm9yKHZhciBhPTA7YTxlLmxlbmd0aDthKyspdC5icm9hZGNhc3RUcmFuc2FjdGlvbihlW2FdLGZ1bmN0aW9uKGUpe2NvbnNvbGUubG9nKGUpfSl9KSxhPVtdKX1hLmxlbmd0aD4wJiZ3aW5kb3cuV2F2ZXNLZWVwZXIuc2lnblRyYW5zYWN0aW9uUGFja2FnZShhKS50aGVuKGZ1bmN0aW9uKGUpe2Zvcih2YXIgYT0wO2E8ZS5sZW5ndGg7YSsrKXQuYnJvYWRjYXN0VHJhbnNhY3Rpb24oZVthXSxmdW5jdGlvbihlKXtjb25zb2xlLmxvZyhlKX0pfSl9fSx7a2V5OiJicm9hZGNhc3RUcmFuc2FjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7YS5vcGVuKCJQT1NUIix0aGlzLm5vZGUrIi90cmFuc2FjdGlvbnMvYnJvYWRjYXN0IiwhMCksYS5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLCJhcHBsaWNhdGlvbi9qc29uIiksYS5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLCJhcHBsaWNhdGlvbi9qc29uIiksYS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXt0KHRoaXMucmVzcG9uc2UpfSxhLnNlbmQoZSl9fSx7a2V5OiJoYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZSIsdg==",
    "2019.12.27 16:44": "base64:KHdpbmRvdy53ZWJwYWNrSnNvbnA9d2luZG93LndlYnBhY2tKc29ucHx8W10pLnB1c2goW1swXSx7MTExODpmdW5jdGlvbihlLHQsYSl7fSwxMTIwOmZ1bmN0aW9uKGUsdCxhKXsidXNlIHN0cmljdCI7YS5yKHQpO3ZhciBuPWEoMSkscz1hLm4obikscj1hKDIwMCksbD1hLm4ociksaT0oYSg1NDEpLGEoMzkpKSxjPWEoNDApLG89YSg0MiksZD1hKDQxKSxtPWEoMTEpLGg9YSg0MyksdT1hKDMxKSxwPWEoNTAzKSxiPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIGE7cmV0dXJuIE9iamVjdChpLmEpKHRoaXMsdCksKGE9T2JqZWN0KG8uYSkodGhpcyxPYmplY3QoZC5hKSh0KS5jYWxsKHRoaXMsZSkpKS5jb250cmFjdD0ney0jIFNURExJQl9WRVJTSU9OIDMgIy19XG57LSMgQ09OVEVOVF9UWVBFIERBUFAgIy19XG57LSMgU0NSSVBUX1RZUEUgQUNDT1VOVCAjLX1cblxubGV0IEVNVFBZU1RSSU5HID0gIiJcblxuZnVuYyBnZXRTdHJpbmdGcm9tS2V5KGtleTogU3RyaW5nKSA9IHtcbiAgICBtYXRjaCBnZXRTdHJpbmcodGhpcywga2V5KSB7XG4gICAgICAgIGNhc2Ugc3RyOlN0cmluZyA9PiBzdHJcbiAgICAgICAgY2FzZSBfID0+IEVNVFBZU1RSSU5HXG4gICAgfVxufVxuXG5mdW5jIGlzVmFsaWRTZW5kZXIoc2VuZGVyOiBTdHJpbmcpID0ge1xuICAgIGxldCBlbnRyeUZvclNlbmRlckFkZHJlc3MgPSBnZXRTdHJpbmdGcm9tS2V5KHNlbmRlcilcblxuICAgIGlmIChlbnRyeUZvclNlbmRlckFkZHJlc3MgPT0gRU1UUFlTVFJJTkcpIHRoZW4gZmFsc2UgZWxzZSB0cnVlXG59XG5cbkBDYWxsYWJsZShpKVxuZnVuYyBhZGRSaXNrKG5hbWU6IFN0cmluZywgZGVzY3JpcHRpb246IFN0cmluZykgPSB7XG4gICBsZXQgc2VuZGVyID0gdG9CYXNlNThTdHJpbmcoaS5jYWxsZXIuYnl0ZXMpXG4gICBpZiAoaXNWYWxpZFNlbmRlcihzZW5kZXIpKSB0aGVuXG4gICAgICAgV3JpdGVTZXQoW1xuICAgICAgICAgICBEYXRhRW50cnkodG9CYXNlNThTdHJpbmcoaS50cmFuc2FjdGlvbklkKSArICJfbmFtZSIgLCBuYW1lKSxcbiAgICAgICAgICAgRGF0YUVudHJ5KHRvQmFzZTU4U3RyaW5nKGkudHJhbnNhY3Rpb25JZCkgKyAiX2Rlc2NyaXB0aW9uIiAsIGRlc2NyaXB0aW9uKVxuICAgICAgIF0pXG4gICBlbHNlIHRocm93KCJTZW5kZXIgbm90IGFsbG93ZWQgdG8gc3RvcmUgcmlza3MhIilcbn1cblxuQENhbGxhYmxlKGkpXG5mdW5jIGFkZENvbnNvbGlkYXRlZFJpc2sobmFtZTogU3RyaW5nLCBkZXNjcmlwdGlvbjogU3RyaW5nKSA9IHtcbiAgIGxldCBzZW5kZXIgPSB0b0Jhc2U1OFN0cmluZyhpLmNhbGxlci5ieXRlcylcbiAgIGlmIChpc1ZhbGlkU2VuZGVyKHNlbmRlcikpIHRoZW5cbiAgICAgICBXcml0ZVNldChbXG4gICAgICAgICAgIERhdGFFbnRyeSh0b0Jhc2U1OFN0cmluZyhpLnRyYW5zYWN0aW9uSWQpICsgIl9jb25zb2xpZGF0ZWRfbmFtZSIgLCBuYW1lKSxcbiAgICAgICAgICAgRGF0YUVudHJ5KHRvQmFzZTU4U3RyaW5nKGkudHJhbnNhY3Rpb25JZCkgKyAiX2NvbnNvbGlkYXRlZF9kZXNjcmlwdGlvbiIgLCBkZXNjcmlwdGlvbilcbiAgICAgICBdKVxuICAgZWxzZSB0aHJvdygiU2VuZGVyIG5vdCBhbGxvd2VkIHRvIGNvbnNvbGlkYXRlIHJpc2tzISIpXG59XG5cbkBDYWxsYWJsZShpKVxuZnVuYyBldmFsdWF0ZVJpc2soaWQ6IFN0cmluZywgcHJvYmFiaWxpdHk6IEludCwgaW1wYWN0OiBJbnQpID0ge1xuICAgbGV0IHNlbmRlciA9IHRvQmFzZTU4U3RyaW5nKGkuY2FsbGVyLmJ5dGVzKVxuXG4gICBpZiAoaXNWYWxpZFNlbmRlcihzZW5kZXIpKSB0aGVuXG4gICAgICAgV3JpdGVTZXQoW1xuICAgICAgICAgICBEYXRhRW50cnkoaWQgKyAiXyIgKyB0b0Jhc2U1OFN0cmluZyhpLnRyYW5zYWN0aW9uSWQpICsgIl9wcm9iIiAsIHByb2JhYmlsaXR5KSxcbiAgICAgICAgICAgRGF0YUVudHJ5KGlkICsgIl8iICsgdG9CYXNlNThTdHJpbmcoaS50cmFuc2FjdGlvbklkKSArICJfaW1wIiAsIGltcGFjdClcbiAgICAgICBdKVxuICAgZWxzZSB0aHJvdygiU2VuZGVyIG5vdCBhbGxvd2VkIHRvIGV2YWx1YXRlIG9yIGV2YWx1YXRlZCBhbHJlYWR5ISIpXG59XG5cbkBWZXJpZmllcih0eClcbmZ1bmMgdmVyaWZ5KCkgPSB7XG4gICBtYXRjaCB0eCB7XG4gICAgICAgY2FzZSBfID0+IGZhbHNlXG4gICB9XG59XG4nLGEuc3RhdGU9e2FkZHJlc3NlczpbXSxhZGRyZXNzOiIiLHByb2plY3ROYW1lOiIiLHByb2plY3REZXNjcmlwdGlvbjoiIixzZWVkOiIiLHNob3dQcm9ncmVzc2JhcjohMX0sYS5ub2RlPWEucHJvcHMubm9kZSxhLmhhbmRsZUFkZEFkZHJlc3M9YS5oYW5kbGVBZGRBZGRyZXNzLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlQ2hhbmdlPWEuaGFuZGxlQ2hhbmdlLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlUHJvamVjdE5hbWU9YS5oYW5kbGVQcm9qZWN0TmFtZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZVByb2plY3REZXNjcmlwdGlvbj1hLmhhbmRsZVByb2plY3REZXNjcmlwdGlvbi5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZUZ1bmRBZGRyZXNzPWEuaGFuZGxlRnVuZEFkZHJlc3MuYmluZChPYmplY3QobS5hKShhKSksYX1yZXR1cm4gT2JqZWN0KGguYSkodCxlKSxPYmplY3QoYy5hKSh0LFt7a2V5OiJjb21waWxlQ29udHJhY3QiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBYTUxIdHRwUmVxdWVzdDt0Lm9wZW4oIlBPU1QiLHRoaXMubm9kZSsiL3V0aWxzL3NjcmlwdC9jb21waWxlQ29kZSIsITApLHQuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwiYXBwbGljYXRpb24vanNvbiIpLHQuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IiwiYXBwbGljYXRpb24vanNvbiIpLHQub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aWYoND09PXQucmVhZHlTdGF0ZSYmMjAwPT09dC5zdGF0dXMpe3ZhciBhPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZSkuc2NyaXB0O2UoYSl9fSx0LnNlbmQodGhpcy5jb250cmFjdCl9fSx7a2V5OiJkZXBsb3lDb250cmFjdCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5ub2RlLGE9dGhpczt0aGlzLmNvbXBpbGVDb250cmFjdChmdW5jdGlvbihuKXt2YXIgcz1PYmplY3QodS5zZXRTY3JpcHQpKHtzY3JpcHQ6bn0sZSk7T2JqZWN0KHUuYnJvYWRjYXN0KShzLHQpLnRoZW4oZnVuY3Rpb24oZSl7T2JqZWN0KHUud2FpdEZvclR4KShzLmlkLHt0aW1lb3V0OjEyZTQsYXBpQmFzZTp0fSkudGhlbihmdW5jdGlvbigpe2Euc2V0U3RhdGUoe3Nob3dQcm9ncmVzc2JhcjohMX0pfSl9KX0pfX0se2tleToiY3JlYXRlRGF0YUVudHJpZXMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPVt7a2V5OiJwcm9qZWN0TmFtZSIsdmFsdWU6dGhpcy5zdGF0ZS5wcm9qZWN0TmFtZSx0eXBlOiJzdHJpbmcifSx7a2V5OiJwcm9qZWN0RGVzY3JpcHRpb24iLHZhbHVlOnRoaXMuc3RhdGUucHJvamVjdERlc2NyaXB0aW9uLHR5cGU6InN0cmluZyJ9LHtrZXk6dGhpcy5zdGF0ZS5hZGRyZXNzLHZhbHVlOiJvd25lciIsdHlwZToic3RyaW5nIn1dLHQ9dGhpcyxhPXRoaXMubm9kZSxuPTA7bjx0aGlzLnN0YXRlLmFkZHJlc3Nlcy5sZW5ndGg7bisrKXt2YXIgcz17a2V5OnRoaXMuc3RhdGUuYWRkcmVzc2VzW25dLHZhbHVlOiJ1c2VyIix0eXBlOiJzdHJpbmcifTtlLnB1c2gocyl9dmFyIHI9e3R5cGU6MTIsZGF0YTplfSxsPU9iamVjdCh1LmRhdGEpKHIsdGhpcy5zdGF0ZS5zZWVkKTtPYmplY3QodS5icm9hZGNhc3QpKGwsdGhpcy5ub2RlKS50aGVuKGZ1bmN0aW9uKCl7T2JqZWN0KHUud2FpdEZvclR4KShsLmlkLHt0aW1lb3V0OjEyZTQsYXBpQmFzZTphfSkudGhlbihmdW5jdGlvbihlKXtjb25zb2xlLmxvZyhlKSx0LmRlcGxveUNvbnRyYWN0KHQuc3RhdGUuc2VlZCksdC5zdG9yZVByb2plY3QodC5zdGF0ZSl9KX0pfX0se2tleToic3RvcmVQcm9qZWN0Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGE9dGhpcy5ub2RlO3dpbmRvdy5XYXZlc0tlZXBlci5wdWJsaWNTdGF0ZSgpLnRoZW4oZnVuY3Rpb24obil7dmFyIHM9e3R5cGU6MTYsZEFwcDoiM1BIZmVub0pkMjZjcGVRVmYyOW00Q0pvUm4yM013R1hHcjciLGNhbGw6e2Z1bmN0aW9uOiJzdG9yZVByb2plY3QiLGFyZ3M6W3t0eXBlOiJzdHJpbmciLHZhbHVlOmUuYWRkcmVzc30se3R5cGU6InN0cmluZyIsdmFsdWU6ZS5wcm9qZWN0TmFtZX0se3R5cGU6InN0cmluZyIsdmFsdWU6ZS5wcm9qZWN0RGVzY3JpcHRpb259LHt0eXBlOiJpbnRlZ2VyIix2YWx1ZToobmV3IERhdGUpLmdldFRpbWUoKX0se3R5cGU6InN0cmluZyIsdmFsdWU6bi5hY2NvdW50LmFkZHJlc3N9XX0scGF5bWVudDpbXX0scj1PYmplY3QodS5pbnZva2VTY3JpcHQpKHMsdC5zdGF0ZS5zZWVkKTtPYmplY3QodS5icm9hZGNhc3QpKHIsdC5ub2RlKS50aGVuKGZ1bmN0aW9uKCl7T2JqZWN0KHUud2FpdEZvclR4KShyLmlkLHt0aW1lb3V0OjEyZTQsYXBpQmFzZTphfSkudGhlbihmdW5jdGlvbihlKXtjb25zb2xlLmxvZyhlKX0pfSl9KS5jYXRjaChmdW5jdGlvbihlKXtjb25zb2xlLmVycm9yKGUpfSl9fSx7a2V5OiJoYW5kbGVGdW5kQWRkcmVzcyIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciB0PXUuc2VlZFV0aWxzLmdlbmVyYXRlTmV3U2VlZCgpLGE9bmV3IHAuU2VlZEFkYXB0ZXIodCkuc2VlZC5hZGRyZXNzLG49dGhpcy5ub2RlLHM9dGhpczt0aGlzLnNldFN0YXRlKHtzZWVkOnQsYWRkcmVzczphLHNob3dQcm9ncmVzc2JhcjohMH0pO3ZhciByPXt0eXBlOjQsZGF0YTp7cmVjaXBpZW50OmEsYW1vdW50Onthc3NldElkOiJXQVZFUyIsdG9rZW5zOiIwLjAxNiJ9LGZlZTp7YXNzZXRJZDoiV0FWRVMiLHRva2VuczoiMC4wMDEifX19O3dpbmRvdy5XYXZlc0tlZXBlci5zaWduQW5kUHVibGlzaFRyYW5zYWN0aW9uKHIpLnRoZW4oZnVuY3Rpb24oZSl7dmFyIHQ9SlNPTi5wYXJzZShlKTtPYmplY3QodS53YWl0Rm9yVHgpKHQuaWQse3RpbWVvdXQ6MTJlNCxhcGlCYXNlOm59KS50aGVuKGZ1bmN0aW9uKCl7cy5jcmVhdGVEYXRhRW50cmllcygpfSl9KS5jYXRjaChmdW5jdGlvbihlKXtjb25zb2xlLmVycm9yKCJTb21ldGhpbmcgd2VudCB3cm9uZyIsZSl9KX19LHtrZXk6ImhhbmRsZUNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQuaWQsYT10aGlzLnN0YXRlLmFkZHJlc3NlczthW3RdPWUudGFyZ2V0LnZhbHVlLHRoaXMuc2V0U3RhdGUoe2FkZHJlc3NlczphfSl9fSx7a2V5OiJoYW5kbGVBZGRBZGRyZXNzIix2YWx1ZTpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIHQ9dGhpcy5zdGF0ZS5hZGRyZXNzZXM7dC5wdXNoKCIiKSx0aGlzLnNldFN0YXRlKHthZGRyZXNzZXM6dH0pfX0se2tleToiaGFuZGxlUHJvamVjdE5hbWUiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2V0U3RhdGUoe3Byb2plY3ROYW1lOmUudGFyZ2V0LnZhbHVlfSl9fSx7a2V5OiJoYW5kbGVQcm9qZWN0RGVzY3JpcHRpb24iLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2V0U3RhdGUoe3Byb2plY3REZXNjcmlwdGlvbjplLnRhcmdldC52YWx1ZX0pfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDx0aGlzLnN0YXRlLmFkZHJlc3Nlcy5sZW5ndGg7dCsrKXt2YXIgYT1zLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJmb3JtLWdyb3VwIixrZXk6dH0scy5hLmNyZWF0ZUVsZW1lbnQoImxhYmVsIix7aHRtbEZvcjoicHJvamVjdE5hbWUifSwiQWRkcmVzcyIpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGNsYXNzTmFtZToiZm9ybS1jb250cm9sIixpZDp0LG9uQ2hhbmdlOnRoaXMuaGFuZGxlQ2hhbmdlfSkpO2UucHVzaChhKX12YXIgbj1zLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJtb2RhbCIsdGFiSW5kZXg6Ii0xIixyb2xlOiJkaWFsb2ciLHN0eWxlOntkaXNwbGF5OiJibG9jayJ9fSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJtb2RhbC1kaWFsb2ciLHJvbGU6ImRvY3VtZW50In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToibW9kYWwtY29udGVudCBib3JkZXItbGVmdC1pbmZvIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToibW9kYWwtaGVhZGVyIn0scy5hLmNyZWF0ZUVsZW1lbnQoImg1Iix7Y2xhc3NOYW1lOiJtb2RhbC10aXRsZSJ9LCJJbml0aWFsaXppbmcgcHJvamVjdC4uLiIpKSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJtb2RhbC1ib2R5In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicHJvZ3Jlc3MifSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLXN0cmlwZWQgcHJvZ3Jlc3MtYmFyLWFuaW1hdGVkIixyb2xlOiJwcm9ncmVzc2JhciIsImFyaWEtdmFsdWVub3ciOiIxMDAiLCJhcmlhLXZhbHVlbWluIjoiMCIsImFyaWEtdmFsdWVtYXgiOiIxMDAiLHN0eWxlOnt3aWR0aDoiMTAwJSJ9fSkpKSkpKTtyZXR1cm4gcy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxzLmEuY3JlYXRlRWxlbWVudCgibmF2Iix7Y2xhc3NOYW1lOiJuYXZiYXIgbmF2YmFyLWV4cGFuZCBuYXZiYXItbGlnaHQgYmctd2hpdGUgdG9wYmFyIG1iLTQgc3RhdGljLXRvcCBzaGFkb3cifSxzLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7aWQ6InNpZGViYXJUb2dnbGVUb3AiLGNsYXNzTmFtZToiYnRuIGJ0bi1saW5rIGQtbWQtbm9uZSByb3VuZGVkLWNpcmNsZSBtci0zIn0scy5hLmNyZWF0ZUVsZW1lbnQoImkiLHtjbGFzc05hbWU6ImZhIGZhLWJhcnMifSkpLHMuYS5jcmVhdGVFbGVtZW50KCJ1bCIse2NsYXNzTmFtZToibmF2YmFyLW5hdiBtbC1hdXRvIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToidG9wYmFyLWRpdmlkZXIgZC1ub25lIGQtc20tYmxvY2sifSkscy5hLmNyZWF0ZUVsZW1lbnQoImxpIix7Y2xhc3NOYW1lOiJuYXYtaXRlbSBuby1hcnJvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJtci0yIGQtbm9uZSBkLWxnLWlubGluZSB0ZXh0LWdyYXktNjAwIHNtYWxsIn0sIkNyZWF0ZSBQcm9qZWN0IikpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyLWZsdWlkIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZC1zbS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImgxIix7Y2xhc3NOYW1lOiJoMyBtYi0wIHRleHQtZ3JheS04MDAifSwiQ3JlYXRlIGEgbmV3IHByb2plY3QiKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZCBib3JkZXItbGVmdC1pbmZvIHNoYWRvdyBoLTEwMCBweS0yIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZC1ib2R5In0scy5hLmNyZWF0ZUVsZW1lbnQoImZvcm0iLG51bGwscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6InByb2plY3ROYW1lIn0sIlByb2plY3QgTmFtZSIpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGNsYXNzTmFtZToiZm9ybS1jb250cm9sIixpZDoicHJvamVjdE5hbWUiLG9uQ2hhbmdlOnRoaXMuaGFuZGxlUHJvamVjdE5hbWV9KSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6InByb2plY3REZXNjcmlwdGlvbiJ9LCJQcm9qZWN0IERlc2NyaXB0aW9uIikscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToicHJvamVjdERlc2NyaXB0aW9uIixjbGFzc05hbWU6ImZvcm0tY29udHJvbCIsaWQ6InByb2plY3REZXNjcmlwdGlvbiIsb25DaGFuZ2U6dGhpcy5oYW5kbGVQcm9qZWN0RGVzY3JpcHRpb259KSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6InByb2plY3RBZGRyZXNzIn0sIlByb2plY3QgQWRkcmVzcyIpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InByb2plY3RBZGRyZXNzIixjbGFzc05hbWU6ImZvcm0tY29udHJvbCIsdmFsdWU6dGhpcy5zdGF0ZS5hZGRyZXNzLHJlYWRPbmx5OiEwfSkpLGUscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse2NsYXNzTmFtZToiYnRuIGJ0bi1wcmltYXJ5IG1yLTIgbWItMiIsb25DbGljazp0aGlzLmhhbmRsZUZ1bmRBZGRyZXNzfSwiQ3JlYXRlIFByb2plY3QiKSxzLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7Y2xhc3NOYW1lOiJidG4gYnRuLXNlY29uZGFyeSBtci0yIG1iLTIiLG9uQ2xpY2s6dGhpcy5oYW5kbGVBZGRBZGRyZXNzfSwiQWRkIEFkZHJlc3MiKSx0aGlzLnN0YXRlLnNob3dQcm9ncmVzc2Jhcj9uOnMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwpKSkpKSkpKX19XSksdH0ocy5hLkNvbXBvbmVudCksdj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3ZhciBhO3JldHVybiBPYmplY3QoaS5hKSh0aGlzLHQpLChhPU9iamVjdChvLmEpKHRoaXMsT2JqZWN0KGQuYSkodCkuY2FsbCh0aGlzLGUpKSkuc3RhdGU9e3Jpc2tzOltdLHByb2plY3RBZGRyZXNzOiIifSxhLm5vZGU9YS5wcm9wcy5ub2RlLGEuaGFuZGxlUHJvamVjdEFkZHJlc3NDaGFuZ2U9YS5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZURlc2NyaXB0aW9uQ2hhbmdlPWEuaGFuZGxlRGVzY3JpcHRpb25DaGFuZ2UuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVOYW1lQ2hhbmdlPWEuaGFuZGxlTmFtZUNoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmRlbGV0ZVJpc2tDbGlja2VkPWEuZGVsZXRlUmlza0NsaWNrZWQuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVTdG9yYWdlT2ZSaXNrcz1hLmhhbmRsZVN0b3JhZ2VPZlJpc2tzLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlQWRkUmlzaz1hLmhhbmRsZUFkZFJpc2suYmluZChPYmplY3QobS5hKShhKSksYX1yZXR1cm4gT2JqZWN0KGguYSkodCxlKSxPYmplY3QoYy5hKSh0LFt7a2V5OiJoYW5kbGVBZGRSaXNrIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUucmlza3M7ZS5wdXNoKHtuYW1lOiIiLGRlc2NyaXB0aW9uOiIifSksdGhpcy5zZXRTdGF0ZSh7cmlza3M6ZX0pfX0se2tleToiaGFuZGxlU3RvcmFnZU9mUmlza3MiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD10aGlzLnN0YXRlLnJpc2tzLGE9dGhpcyxuPVtdLHM9ZnVuY3Rpb24oKXt2YXIgYT17dHlwZToxNixkYXRhOntmZWU6e3Rva2VuczouMDUsYXNzZXRJZDoiV0FWRVMifSxkQXBwOmUuc3RhdGUucHJvamVjdEFkZHJlc3MsY2FsbDp7ZnVuY3Rpb246ImFkZENvbnNvbGlkYXRlZFJpc2siLGFyZ3M6W3t0eXBlOiJzdHJpbmciLHZhbHVlOnRbcl0ubmFtZX0se3R5cGU6InN0cmluZyIsdmFsdWU6dFtyXS5kZXNjcmlwdGlvbn1dfSxwYXltZW50OltdfX07bi5wdXNoKGEpO3ZhciBzPWU7Nz09PW4ubGVuZ3RoJiYod2luZG93LldhdmVzS2VlcGVyLnNpZ25UcmFuc2FjdGlvblBhY2thZ2UobikudGhlbihmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylzLmJyb2FkY2FzdFRyYW5zYWN0aW9uKGVbdF0sZnVuY3Rpb24oZSl7Y29uc29sZS5sb2coZSl9KX0pLG49W10pfSxyPTA7cjx0Lmxlbmd0aDtyKyspcygpO24ubGVuZ3RoPjAmJndpbmRvdy5XYXZlc0tlZXBlci5zaWduVHJhbnNhY3Rpb25QYWNrYWdlKG4pLnRoZW4oZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspYS5icm9hZGNhc3RUcmFuc2FjdGlvbihlW3RdLGZ1bmN0aW9uKGUpe2NvbnNvbGUubG9nKGUpfSl9KX19LHtrZXk6ImJyb2FkY2FzdFRyYW5zYWN0aW9uIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBhPW5ldyBYTUxIdHRwUmVxdWVzdDthLm9wZW4oIlBPU1QiLHRoaXMubm9kZSsiL3RyYW5zYWN0aW9ucy9icm9hZGNhc3QiLCEwKSxhLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsImFwcGxpY2F0aW9uL2pzb24iKSxhLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsImFwcGxpY2F0aW9uL2pzb24iKSxhLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3QodGhpcy5yZXNwb25zZSl9LGEuc2VuZChlKX19LHtrZXk6ImhhbmRsZVByb2plY3RBZGRyZXNzQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC52YWx1ZSxhPXRoaXMsbj1bXTtmZXRjaCh0aGlzLm5vZGUrIi9hZGRyZXNzZXMvZGF0YS8iK3QpLnRoZW4oZnVuY3Rpb24oZSl7ZS5qc29uKCkudGhlbihmdW5jdGlvbihlKXtlLmZvckVhY2goZnVuY3Rpb24odCl7aWYodC5rZXkuZW5kc1dpdGgoIl9uYW1lIikpe3ZhciBhPXQua2V5LnN1YnN0cmluZygwLHQua2V5LmluZGV4T2YoIl8iKSkscz10LnZhbHVlO2UuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlLmtleT09PWErIl9kZXNjcmlwdGlvbiIpe3ZhciB0PWUudmFsdWUscj17bmFtZTpzLGRlc2NyaXB0aW9uOnR9O24ucHVzaChyKX19KX19KSxhLnNldFN0YXRlKHtyaXNrczpuLHByb2plY3RBZGRyZXNzOnR9KX0pfSkuY2F0Y2goZnVuY3Rpb24oZSl7Y29uc29sZS5sb2coZSl9KX19LHtrZXk6ImhhbmRsZURlc2NyaXB0aW9uQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC5pZCxhPWUudGFyZ2V0LnZhbHVlLG49dGhpcy5zdGF0ZS5yaXNrcztuW3RdLmRlc2NyaXB0aW9uPWEsdGhpcy5zZXRTdGF0ZSh7cmlza3M6bn0pfX0se2tleToiaGFuZGxlTmFtZUNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQuaWQsYT1lLnRhcmdldC52YWx1ZSxuPXRoaXMuc3RhdGUucmlza3M7blt0XS5uYW1lPWEsdGhpcy5zZXRTdGF0ZSh7cmlza3M6bn0pfX0se2tleToiZGVsZXRlUmlza0NsaWNrZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LmlkLGE9dGhpcy5zdGF0ZS5yaXNrczthLnNwbGljZSh0LDEpLHRoaXMuc2V0U3RhdGUoe3Jpc2tzOmF9KX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8dGhpcy5zdGF0ZS5yaXNrcy5sZW5ndGg7dCsrKXt2YXIgYT1zLmEuY3JlYXRlRWxlbWVudCgidHIiLHtrZXk6dH0scy5hLmNyZWF0ZUVsZW1lbnQoInRkIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGlkOnQsdmFsdWU6dGhpcy5zdGF0ZS5yaXNrc1t0XS5uYW1lLG9uQ2hhbmdlOnRoaXMuaGFuZGxlTmFtZUNoYW5nZX0pKSxzLmEuY3JlYXRlRWxlbWVudCgidGQiLG51bGwscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToidGV4dCIsaWQ6dCx2YWx1ZTp0aGlzLnN0YXRlLnJpc2tzW3RdLmRlc2NyaXB0aW9uLG9uQ2hhbmdlOnRoaXMuaGFuZGxlRGVzY3JpcHRpb25DaGFuZ2V9KSkscy5hLmNyZWF0ZUVsZW1lbnQoInRkIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToiYnRuIGJ0bi1kYW5nZXIiLGlkOnQsb25DbGljazp0aGlzLmRlbGV0ZVJpc2tDbGlja2VkfSwiRGVsZXRlIFJpc2siKSkpO2UucHVzaChhKX1yZXR1cm4gcy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxzLmEuY3JlYXRlRWxlbWVudCgibmF2Iix7Y2xhc3NOYW1lOiJuYXZiYXIgbmF2YmFyLWV4cGFuZCBuYXZiYXItbGlnaHQgYmctd2hpdGUgdG9wYmFyIG1iLTQgc3RhdGljLXRvcCBzaGFkb3cifSxzLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7aWQ6InNpZGViYXJUb2dnbGVUb3AiLGNsYXNzTmFtZToiYnRuIGJ0bi1saW5rIGQtbWQtbm9uZSByb3VuZGVkLWNpcmNsZSBtci0zIn0scy5hLmNyZWF0ZUVsZW1lbnQoImkiLHtjbGFzc05hbWU6ImZhIGZhLWJhcnMifSkpLHMuYS5jcmVhdGVFbGVtZW50KCJ1bCIse2NsYXNzTmFtZToibmF2YmFyLW5hdiBtbC1hdXRvIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToidG9wYmFyLWRpdmlkZXIgZC1ub25lIGQtc20tYmxvY2sifSkscy5hLmNyZWF0ZUVsZW1lbnQoImxpIix7Y2xhc3NOYW1lOiJuYXYtaXRlbSBuby1hcnJvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJtci0yIGQtbm9uZSBkLWxnLWlubGluZSB0ZXh0LWdyYXktNjAwIHNtYWxsIn0sIkNvbnNvbGlkYXRlIFJpc2tzIikpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyLWZsdWlkIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZC1zbS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImgxIix7Y2xhc3NOYW1lOiJoMyBtYi0wIHRleHQtZ3JheS04MDAifSwiQ29uc29saWRhdGUgcmlza3MiKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZCBib3JkZXItbGVmdC1pbmZvIHNoYWRvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImNhcmQtYm9keSJ9LHMuYS5jcmVhdGVFbGVtZW50KCJmb3JtIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImZvcm0tZ3JvdXAifSxzLmEuY3JlYXRlRWxlbWVudCgibGFiZWwiLHtodG1sRm9yOiJleGFtcGxlSW5wdXRFbWFpbDEifSwiUHJvamVjdCBBZGRyZXNzIikscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToidGV4dCIsY2xhc3NOYW1lOiJmb3JtLWNvbnRyb2wiLGlkOiJwcm9qZWN0QWRkcmVzcyIsb25DaGFuZ2U6dGhpcy5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZX0pKSkscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJidG4gYnRuLXByaW1hcnkgbWItMiBtci0yIixvbkNsaWNrOnRoaXMuaGFuZGxlQWRkUmlza30sIkFkZCBSaXNrIikscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJidG4gYnRuLXNlY29uZGFyeSBtYi0yIixvbkNsaWNrOnRoaXMuaGFuZGxlU3RvcmFnZU9mUmlza3N9LCJTdG9yZSBDb25zb2xpZGF0ZWQgUmlza3MiKSkpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoInRhYmxlIix7Y2xhc3NOYW1lOiJ0YWJsZSB0YWJsZS1zdHJpcGVkIGJvcmRlci1sZWZ0LWluZm8gc2hhZG93In0scy5hLmNyZWF0ZUVsZW1lbnQoInRoZWFkIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJ0ciIsbnVsbCxzLmEuY3JlYXRlRWxlbWVudCgidGgiLG51bGwsIk5hbWUiKSxzLmEuY3JlYXRlRWxlbWVudCgidGgiLG51bGwsIkRlc2NyaXB0aW9uIikscy5hLmNyZWF0ZUVsZW1lbnQoInRoIixudWxsLCJBY3Rpb24iKSkpLHMuYS5jcmVhdGVFbGVtZW50KCJ0Ym9keSIsbnVsbCxlKSkpKSkpfX1dKSx0fShzLmEuQ29tcG9uZW50KSxmPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIGE7cmV0dXJuIE9iamVjdChpLmEpKHRoaXMsdCksKGE9T2JqZWN0KG8uYSkodGhpcyxPYmplY3QoZC5hKSh0KS5jYWxsKHRoaXMsZSkpKS5zdGF0ZT17cmlza3M6W10scHJvamVjdEFkZHJlc3M6IiJ9LGEubm9kZT1hLnByb3BzLm5vZGUsYS5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZT1hLmhhbmRsZVByb2plY3RBZGRyZXNzQ2hhbmdlLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuYWRkUmlza0NsaWNrZWQ9YS5hZGRSaXNrQ2xpY2tlZC5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZU5hbWVDaGFuZ2U9YS5oYW5kbGVOYW1lQ2hhbmdlLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlRGVzY3JpcHRpb25DaGFuZ2U9YS5oYW5kbGVEZXNjcmlwdGlvbkNoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLnN0b3JlUmlza3NDbGlja2VkPWEuc3RvcmVSaXNrc0NsaWNrZWQuYmluZChPYmplY3QobS5hKShhKSksYX1yZXR1cm4gT2JqZWN0KGguYSkodCxlKSxPYmplY3QoYy5hKSh0LFt7a2V5OiJoYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5zZXRTdGF0ZSh7cHJvamVjdEFkZHJlc3M6ZS50YXJnZXQudmFsdWV9KX19LHtrZXk6ImFkZFJpc2tDbGlja2VkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUucmlza3M7ZS5sZW5ndGg8Nz8oZS5wdXNoKHtuYW1lOiIiLGRlc2NyaXB0aW9uOiIifSksdGhpcy5zZXRTdGF0ZSh7cmlza3M6ZX0pKTphbGVydCgiT25seSBzZXZlbiByaXNrcyBhbGxvd2VkIGF0IG9uY2UhIil9fSx7a2V5OiJoYW5kbGVOYW1lQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC5pZCxhPWUudGFyZ2V0LnZhbHVlLG49dGhpcy5zdGF0ZS5yaXNrcztuW3RdLm5hbWU9YSx0aGlzLnNldFN0YXRlKHtyaXNrczpufSl9fSx7a2V5OiJoYW5kbGVEZXNjcmlwdGlvbkNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQuaWQsYT1lLnRhcmdldC52YWx1ZSxuPXRoaXMuc3RhdGUucmlza3M7blt0XS5kZXNjcmlwdGlvbj1hLHRoaXMuc2V0U3RhdGUoe3Jpc2tzOm59KX19LHtrZXk6InN0b3JlUmlza3NDbGlja2VkIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnN0YXRlLnJpc2tzLHQ9W10sYT0wO2E8ZS5sZW5ndGg7YSsrKXt2YXIgbj17dHlwZToxNixkYXRhOntmZWU6e3Rva2VuczouMDUsYXNzZXRJZDoiV0FWRVMifSxkQXBwOnRoaXMuc3RhdGUucHJvamVjdEFkZHJlc3MsY2FsbDp7ZnVuY3Rpb246ImFkZFJpc2siLGFyZ3M6W3t0eXBlOiJzdHJpbmciLHZhbHVlOmVbYV0ubmFtZX0se3R5cGU6InN0cmluZyIsdmFsdWU6ZVthXS5kZXNjcmlwdGlvbn1dfSxwYXltZW50OltdfX07dC5wdXNoKG4pfXZhciBzPXRoaXM7d2luZG93LldhdmVzS2VlcGVyLnNpZ25UcmFuc2FjdGlvblBhY2thZ2UodCkudGhlbihmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylzLmJyb2FkY2FzdFRyYW5zYWN0aW9uKGVbdF0sZnVuY3Rpb24oZSl7Y29uc29sZS5sb2coZSl9KX0pfX0se2tleToiYnJvYWRjYXN0VHJhbnNhY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGE9bmV3IFhNTEh0dHBSZXF1ZXN0O2Eub3BlbigiUE9TVCIsdGhpcy5ub2RlKyIvdHJhbnNhY3Rpb25zL2Jyb2FkY2FzdCIsITApLGEuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwiYXBwbGljYXRpb24vanNvbiIpLGEuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IiwiYXBwbGljYXRpb24vanNvbiIpLGEub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7dCh0aGlzLnJlc3BvbnNlKX0sYS5zZW5kKGUpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDx0aGlzLnN0YXRlLnJpc2tzLmxlbmd0aDt0Kyspe3ZhciBhPXMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InJvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImNvbC14bC02IGNvbC1tZC02IG1iLTQifSxzLmEuY3JlYXRlRWxlbWVudCgibGFiZWwiLG51bGwsIk5hbWUiKSxzLmEuY3JlYXRlRWxlbWVudCgiYnIiLG51bGwpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGNsYXNzTmFtZToiZm9ybS1jb250cm9sIixpZDp0LG9uQ2hhbmdlOnRoaXMuaGFuZGxlTmFtZUNoYW5nZX0pKSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJjb2wteGwtNiBjb2wtbWQtNiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImxhYmVsIixudWxsLCJEZXNjcmlwdGlvbiIpLHMuYS5jcmVhdGVFbGVtZW50KCJiciIsbnVsbCkscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToidGV4dCIsY2xhc3NOYW1lOiJmb3JtLWNvbnRyb2wiLGlkOnQsb25DaGFuZ2U6dGhpcy5oYW5kbGVEZXNjcmlwdGlvbkNoYW5nZX0pKSk7ZS5wdXNoKGEpfXJldHVybiBzLmEuY3JlYXRlRWxlbWVudCgiZGl2IixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJuYXYiLHtjbGFzc05hbWU6Im5hdmJhciBuYXZiYXItZXhwYW5kIG5hdmJhci1saWdodCBiZy13aGl0ZSB0b3BiYXIgbWItNCBzdGF0aWMtdG9wIHNoYWRvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJidXR0b24iLHtpZDoic2lkZWJhclRvZ2dsZVRvcCIsY2xhc3NOYW1lOiJidG4gYnRuLWxpbmsgZC1tZC1ub25lIHJvdW5kZWQtY2lyY2xlIG1yLTMifSxzLmEuY3JlYXRlRWxlbWVudCgiaSIse2NsYXNzTmFtZToiZmEgZmEtYmFycyJ9KSkscy5hLmNyZWF0ZUVsZW1lbnQoInVsIix7Y2xhc3NOYW1lOiJuYXZiYXItbmF2IG1sLWF1dG8ifSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJ0b3BiYXItZGl2aWRlciBkLW5vbmUgZC1zbS1ibG9jayJ9KSxzLmEuY3JlYXRlRWxlbWVudCgibGkiLHtjbGFzc05hbWU6Im5hdi1pdGVtIG5vLWFycm93In0scy5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6Im1yLTIgZC1ub25lIGQtbGctaW5saW5lIHRleHQtZ3JheS02MDAgc21hbGwifSwiQWRkIFJpc2tzIikpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyLWZsdWlkIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZC1zbS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImgxIix7Y2xhc3NOYW1lOiJoMyBtYi0wIHRleHQtZ3JheS04MDAifSwiQWRkIGEgcmlzayIpKSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJjYXJkIGJvcmRlci1sZWZ0LWluZm8gc2hhZG93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZC1ib2R5In0scy5hLmNyZWF0ZUVsZW1lbnQoImZvcm0iLG51bGwscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6ImV4YW1wbGVJbnB1dEVtYWlsMSJ9LCJQcm9qZWN0IEFkZHJlc3MiKSxzLmEuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHt0eXBlOiJ0ZXh0IixjbGFzc05hbWU6ImZvcm0tY29udHJvbCIsaWQ6InByb2plY3RBZGRyZXNzIixvbkNoYW5nZTp0aGlzLmhhbmRsZVByb2plY3RBZGRyZXNzQ2hhbmdlfSkpLGUpLHMuYS5jcmVhdGVFbGVtZW50KCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToiYnRuIGJ0bi1wcmltYXJ5IG1yLTIiLG9uQ2xpY2s6dGhpcy5hZGRSaXNrQ2xpY2tlZH0sIkFkZCBSaXNrIikscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJidG4gYnRuLXNlY29uZGFyeSIsb25DbGljazp0aGlzLnN0b3JlUmlza3NDbGlja2VkfSwiU3RvcmUgUmlza3MiKSkpKSkpKX19XSksdH0ocy5hLkNvbXBvbmVudCksRT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3ZhciBhO3JldHVybiBPYmplY3QoaS5hKSh0aGlzLHQpLChhPU9iamVjdChvLmEpKHRoaXMsT2JqZWN0KGQuYSkodCkuY2FsbCh0aGlzLGUpKSkuc3RhdGU9e3Jpc2tzOltdLHByb2plY3RBZGRyZXNzOiIifSxhLm5vZGU9YS5wcm9wcy5ub2RlLGEuaGFuZGxlUHJvamVjdEFkZHJlc3NDaGFuZ2U9YS5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZVByb2JhYmlsaXR5Q2hhbmdlPWEuaGFuZGxlUHJvYmFiaWxpdHlDaGFuZ2UuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVJbXBhY3RDaGFuZ2U9YS5oYW5kbGVJbXBhY3RDaGFuZ2UuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVTdG9yYWdlT2ZFdmFsdWF0aW9ucz1hLmhhbmRsZVN0b3JhZ2VPZkV2YWx1YXRpb25zLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGF9cmV0dXJuIE9iamVjdChoLmEpKHQsZSksT2JqZWN0KGMuYSkodCxbe2tleToiaGFuZGxlUHJvYmFiaWxpdHlDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LmlkLGE9ZS50YXJnZXQudmFsdWUsbj10aGlzLnN0YXRlLnJpc2tzO25bdF0ucHJvYmFiaWxpdHk9YSx0aGlzLnNldFN0YXRlKHtyaXNrczpufSl9fSx7a2V5OiJoYW5kbGVJbXBhY3RDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LmlkLGE9ZS50YXJnZXQudmFsdWUsbj10aGlzLnN0YXRlLnJpc2tzO25bdF0uaW1wYWN0PWEsdGhpcy5zZXRTdGF0ZSh7cmlza3M6bn0pfX0se2tleToiaGFuZGxlU3RvcmFnZU9mRXZhbHVhdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuc3RhdGUucmlza3MsdD10aGlzLGE9W10sbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcz17dHlwZToxNixkYXRhOntmZWU6e3Rva2VuczouMDUsYXNzZXRJZDoiV0FWRVMifSxkQXBwOnRoaXMuc3RhdGUucHJvamVjdEFkZHJlc3MsY2FsbDp7ZnVuY3Rpb246ImV2YWx1YXRlUmlzayIsYXJnczpbe3R5cGU6InN0cmluZyIsdmFsdWU6ZVtuXS5pZH0se3R5cGU6ImludGVnZXIiLHZhbHVlOmVbbl0ucHJvYmFiaWxpdHl9LHt0eXBlOiJpbnRlZ2VyIix2YWx1ZTplW25dLmltcGFjdH1dfSxwYXltZW50OltdfX07YS5wdXNoKHMpLDc9PT1hLmxlbmd0aCYmKHdpbmRvdy5XYXZlc0tlZXBlci5zaWduVHJhbnNhY3Rpb25QYWNrYWdlKGEpLnRoZW4oZnVuY3Rpb24oZSl7Zm9yKHZhciBhPTA7YTxlLmxlbmd0aDthKyspdC5icm9hZGNhc3RUcmFuc2FjdGlvbihlW2FdLGZ1bmN0aW9uKGUpe2NvbnNvbGUubG9nKGUpfSl9KSxhPVtdKX1hLmxlbmd0aD4wJiZ3aW5kb3cuV2F2ZXNLZWVwZXIuc2lnblRyYW5zYWN0aW9uUGFja2FnZShhKS50aGVuKGZ1bmN0aW9uKGUpe2Zvcih2YXIgYT0wO2E8ZS5sZW5ndGg7YSsrKXQuYnJvYWRjYXN0VHJhbnNhY3Rpb24oZVthXSxmdW5jdGlvbihlKXtjb25zb2xlLmxvZyhlKX0pfSl9fSx7a2V5OiJicm9hZGNhc3RUcmFuc2FjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7YS5vcGVuKCJQT1NUIix0aGlzLm5vZGUrIi90cmFuc2FjdGlvbnMvYnJvYWRjYXN0IiwhMCksYS5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLCJhcHBsaWNhdGlvbi9qc29uIiksYS5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLCJhcHBsaWNhdGlvbi9qc29uIiksYS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXt0KHRoaXMucmVzcG9uc2UpfSxhLnNlbmQoZSl9fSx7a2V5OiJoYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZSIsdg==",
    "2019.12.27 16:43": "base64:KHdpbmRvdy53ZWJwYWNrSnNvbnA9d2luZG93LndlYnBhY2tKc29ucHx8W10pLnB1c2goW1swXSx7MTExODpmdW5jdGlvbihlLHQsYSl7fSwxMTIwOmZ1bmN0aW9uKGUsdCxhKXsidXNlIHN0cmljdCI7YS5yKHQpO3ZhciBuPWEoMSkscz1hLm4obikscj1hKDIwMCksbD1hLm4ociksaT0oYSg1NDEpLGEoMzkpKSxjPWEoNDApLG89YSg0MiksZD1hKDQxKSxtPWEoMTEpLGg9YSg0MyksdT1hKDMxKSxwPWEoNTAzKSxiPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIGE7cmV0dXJuIE9iamVjdChpLmEpKHRoaXMsdCksKGE9T2JqZWN0KG8uYSkodGhpcyxPYmplY3QoZC5hKSh0KS5jYWxsKHRoaXMsZSkpKS5jb250cmFjdD0ney0jIFNURExJQl9WRVJTSU9OIDMgIy19XG57LSMgQ09OVEVOVF9UWVBFIERBUFAgIy19XG57LSMgU0NSSVBUX1RZUEUgQUNDT1VOVCAjLX1cblxubGV0IEVNVFBZU1RSSU5HID0gIiJcblxuZnVuYyBnZXRTdHJpbmdGcm9tS2V5KGtleTogU3RyaW5nKSA9IHtcbiAgICBtYXRjaCBnZXRTdHJpbmcodGhpcywga2V5KSB7XG4gICAgICAgIGNhc2Ugc3RyOlN0cmluZyA9PiBzdHJcbiAgICAgICAgY2FzZSBfID0+IEVNVFBZU1RSSU5HXG4gICAgfVxufVxuXG5mdW5jIGlzVmFsaWRTZW5kZXIoc2VuZGVyOiBTdHJpbmcpID0ge1xuICAgIGxldCBlbnRyeUZvclNlbmRlckFkZHJlc3MgPSBnZXRTdHJpbmdGcm9tS2V5KHNlbmRlcilcblxuICAgIGlmIChlbnRyeUZvclNlbmRlckFkZHJlc3MgPT0gRU1UUFlTVFJJTkcpIHRoZW4gZmFsc2UgZWxzZSB0cnVlXG59XG5cbkBDYWxsYWJsZShpKVxuZnVuYyBhZGRSaXNrKG5hbWU6IFN0cmluZywgZGVzY3JpcHRpb246IFN0cmluZykgPSB7XG4gICBsZXQgc2VuZGVyID0gdG9CYXNlNThTdHJpbmcoaS5jYWxsZXIuYnl0ZXMpXG4gICBpZiAoaXNWYWxpZFNlbmRlcihzZW5kZXIpKSB0aGVuXG4gICAgICAgV3JpdGVTZXQoW1xuICAgICAgICAgICBEYXRhRW50cnkodG9CYXNlNThTdHJpbmcoaS50cmFuc2FjdGlvbklkKSArICJfbmFtZSIgLCBuYW1lKSxcbiAgICAgICAgICAgRGF0YUVudHJ5KHRvQmFzZTU4U3RyaW5nKGkudHJhbnNhY3Rpb25JZCkgKyAiX2Rlc2NyaXB0aW9uIiAsIGRlc2NyaXB0aW9uKVxuICAgICAgIF0pXG4gICBlbHNlIHRocm93KCJTZW5kZXIgbm90IGFsbG93ZWQgdG8gc3RvcmUgcmlza3MhIilcbn1cblxuQENhbGxhYmxlKGkpXG5mdW5jIGFkZENvbnNvbGlkYXRlZFJpc2sobmFtZTogU3RyaW5nLCBkZXNjcmlwdGlvbjogU3RyaW5nKSA9IHtcbiAgIGxldCBzZW5kZXIgPSB0b0Jhc2U1OFN0cmluZyhpLmNhbGxlci5ieXRlcylcbiAgIGlmIChpc1ZhbGlkU2VuZGVyKHNlbmRlcikpIHRoZW5cbiAgICAgICBXcml0ZVNldChbXG4gICAgICAgICAgIERhdGFFbnRyeSh0b0Jhc2U1OFN0cmluZyhpLnRyYW5zYWN0aW9uSWQpICsgIl9jb25zb2xpZGF0ZWRfbmFtZSIgLCBuYW1lKSxcbiAgICAgICAgICAgRGF0YUVudHJ5KHRvQmFzZTU4U3RyaW5nKGkudHJhbnNhY3Rpb25JZCkgKyAiX2NvbnNvbGlkYXRlZF9kZXNjcmlwdGlvbiIgLCBkZXNjcmlwdGlvbilcbiAgICAgICBdKVxuICAgZWxzZSB0aHJvdygiU2VuZGVyIG5vdCBhbGxvd2VkIHRvIGNvbnNvbGlkYXRlIHJpc2tzISIpXG59XG5cbkBDYWxsYWJsZShpKVxuZnVuYyBldmFsdWF0ZVJpc2soaWQ6IFN0cmluZywgcHJvYmFiaWxpdHk6IEludCwgaW1wYWN0OiBJbnQpID0ge1xuICAgbGV0IHNlbmRlciA9IHRvQmFzZTU4U3RyaW5nKGkuY2FsbGVyLmJ5dGVzKVxuXG4gICBpZiAoaXNWYWxpZFNlbmRlcihzZW5kZXIpKSB0aGVuXG4gICAgICAgV3JpdGVTZXQoW1xuICAgICAgICAgICBEYXRhRW50cnkoaWQgKyAiXyIgKyB0b0Jhc2U1OFN0cmluZyhpLnRyYW5zYWN0aW9uSWQpICsgIl9wcm9iIiAsIHByb2JhYmlsaXR5KSxcbiAgICAgICAgICAgRGF0YUVudHJ5KGlkICsgIl8iICsgdG9CYXNlNThTdHJpbmcoaS50cmFuc2FjdGlvbklkKSArICJfaW1wIiAsIGltcGFjdClcbiAgICAgICBdKVxuICAgZWxzZSB0aHJvdygiU2VuZGVyIG5vdCBhbGxvd2VkIHRvIGV2YWx1YXRlIG9yIGV2YWx1YXRlZCBhbHJlYWR5ISIpXG59XG5cbkBWZXJpZmllcih0eClcbmZ1bmMgdmVyaWZ5KCkgPSB7XG4gICBtYXRjaCB0eCB7XG4gICAgICAgY2FzZSBfID0+IGZhbHNlXG4gICB9XG59XG4nLGEuc3RhdGU9e2FkZHJlc3NlczpbXSxhZGRyZXNzOiIiLHByb2plY3ROYW1lOiIiLHByb2plY3REZXNjcmlwdGlvbjoiIixzZWVkOiIiLHNob3dQcm9ncmVzc2JhcjohMX0sYS5ub2RlPWEucHJvcHMubm9kZSxhLmhhbmRsZUFkZEFkZHJlc3M9YS5oYW5kbGVBZGRBZGRyZXNzLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlQ2hhbmdlPWEuaGFuZGxlQ2hhbmdlLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlUHJvamVjdE5hbWU9YS5oYW5kbGVQcm9qZWN0TmFtZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZVByb2plY3REZXNjcmlwdGlvbj1hLmhhbmRsZVByb2plY3REZXNjcmlwdGlvbi5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZUZ1bmRBZGRyZXNzPWEuaGFuZGxlRnVuZEFkZHJlc3MuYmluZChPYmplY3QobS5hKShhKSksYX1yZXR1cm4gT2JqZWN0KGguYSkodCxlKSxPYmplY3QoYy5hKSh0LFt7a2V5OiJjb21waWxlQ29udHJhY3QiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBYTUxIdHRwUmVxdWVzdDt0Lm9wZW4oIlBPU1QiLHRoaXMubm9kZSsiL3V0aWxzL3NjcmlwdC9jb21waWxlQ29kZSIsITApLHQuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwiYXBwbGljYXRpb24vanNvbiIpLHQuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IiwiYXBwbGljYXRpb24vanNvbiIpLHQub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aWYoND09PXQucmVhZHlTdGF0ZSYmMjAwPT09dC5zdGF0dXMpe3ZhciBhPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZSkuc2NyaXB0O2UoYSl9fSx0LnNlbmQodGhpcy5jb250cmFjdCl9fSx7a2V5OiJkZXBsb3lDb250cmFjdCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5ub2RlLGE9dGhpczt0aGlzLmNvbXBpbGVDb250cmFjdChmdW5jdGlvbihuKXt2YXIgcz1PYmplY3QodS5zZXRTY3JpcHQpKHtzY3JpcHQ6bn0sZSk7T2JqZWN0KHUuYnJvYWRjYXN0KShzLHQpLnRoZW4oZnVuY3Rpb24oZSl7T2JqZWN0KHUud2FpdEZvclR4KShzLmlkLHt0aW1lb3V0OjEyZTQsYXBpQmFzZTp0fSkudGhlbihmdW5jdGlvbigpe2Euc2V0U3RhdGUoe3Nob3dQcm9ncmVzc2JhcjohMX0pfSl9KX0pfX0se2tleToiY3JlYXRlRGF0YUVudHJpZXMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPVt7a2V5OiJwcm9qZWN0TmFtZSIsdmFsdWU6dGhpcy5zdGF0ZS5wcm9qZWN0TmFtZSx0eXBlOiJzdHJpbmcifSx7a2V5OiJwcm9qZWN0RGVzY3JpcHRpb24iLHZhbHVlOnRoaXMuc3RhdGUucHJvamVjdERlc2NyaXB0aW9uLHR5cGU6InN0cmluZyJ9LHtrZXk6dGhpcy5zdGF0ZS5hZGRyZXNzLHZhbHVlOiJvd25lciIsdHlwZToic3RyaW5nIn1dLHQ9dGhpcyxhPXRoaXMubm9kZSxuPTA7bjx0aGlzLnN0YXRlLmFkZHJlc3Nlcy5sZW5ndGg7bisrKXt2YXIgcz17a2V5OnRoaXMuc3RhdGUuYWRkcmVzc2VzW25dLHZhbHVlOiJ1c2VyIix0eXBlOiJzdHJpbmcifTtlLnB1c2gocyl9dmFyIHI9e3R5cGU6MTIsZGF0YTplfSxsPU9iamVjdCh1LmRhdGEpKHIsdGhpcy5zdGF0ZS5zZWVkKTtPYmplY3QodS5icm9hZGNhc3QpKGwsdGhpcy5ub2RlKS50aGVuKGZ1bmN0aW9uKCl7T2JqZWN0KHUud2FpdEZvclR4KShsLmlkLHt0aW1lb3V0OjEyZTQsYXBpQmFzZTphfSkudGhlbihmdW5jdGlvbihlKXtjb25zb2xlLmxvZyhlKSx0LmRlcGxveUNvbnRyYWN0KHQuc3RhdGUuc2VlZCksdC5zdG9yZVByb2plY3QodC5zdGF0ZSl9KX0pfX0se2tleToic3RvcmVQcm9qZWN0Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGE9dGhpcy5ub2RlO3dpbmRvdy5XYXZlc0tlZXBlci5wdWJsaWNTdGF0ZSgpLnRoZW4oZnVuY3Rpb24obil7dmFyIHM9e3R5cGU6MTYsZEFwcDoiM1BIZmVub0pkMjZjcGVRVmYyOW00Q0pvUm4yM013R1hHcjciLGNhbGw6e2Z1bmN0aW9uOiJzdG9yZVByb2plY3QiLGFyZ3M6W3t0eXBlOiJzdHJpbmciLHZhbHVlOmUuYWRkcmVzc30se3R5cGU6InN0cmluZyIsdmFsdWU6ZS5wcm9qZWN0TmFtZX0se3R5cGU6InN0cmluZyIsdmFsdWU6ZS5wcm9qZWN0RGVzY3JpcHRpb259LHt0eXBlOiJpbnRlZ2VyIix2YWx1ZToobmV3IERhdGUpLmdldFRpbWUoKX0se3R5cGU6InN0cmluZyIsdmFsdWU6bi5hY2NvdW50LmFkZHJlc3N9XX0scGF5bWVudDpbXX0scj1PYmplY3QodS5pbnZva2VTY3JpcHQpKHMsdC5zdGF0ZS5zZWVkKTtPYmplY3QodS5icm9hZGNhc3QpKHIsdC5ub2RlKS50aGVuKGZ1bmN0aW9uKCl7T2JqZWN0KHUud2FpdEZvclR4KShyLmlkLHt0aW1lb3V0OjEyZTQsYXBpQmFzZTphfSkudGhlbihmdW5jdGlvbihlKXtjb25zb2xlLmxvZyhlKX0pfSl9KS5jYXRjaChmdW5jdGlvbihlKXtjb25zb2xlLmVycm9yKGUpfSl9fSx7a2V5OiJoYW5kbGVGdW5kQWRkcmVzcyIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciB0PXUuc2VlZFV0aWxzLmdlbmVyYXRlTmV3U2VlZCgpLGE9bmV3IHAuU2VlZEFkYXB0ZXIodCkuc2VlZC5hZGRyZXNzLG49dGhpcy5ub2RlLHM9dGhpczt0aGlzLnNldFN0YXRlKHtzZWVkOnQsYWRkcmVzczphLHNob3dQcm9ncmVzc2JhcjohMH0pO3ZhciByPXt0eXBlOjQsZGF0YTp7cmVjaXBpZW50OmEsYW1vdW50Onthc3NldElkOiJXQVZFUyIsdG9rZW5zOiIwLjAxNiJ9LGZlZTp7YXNzZXRJZDoiV0FWRVMiLHRva2VuczoiMC4wMDEifX19O3dpbmRvdy5XYXZlc0tlZXBlci5zaWduQW5kUHVibGlzaFRyYW5zYWN0aW9uKHIpLnRoZW4oZnVuY3Rpb24oZSl7dmFyIHQ9SlNPTi5wYXJzZShlKTtPYmplY3QodS53YWl0Rm9yVHgpKHQuaWQse3RpbWVvdXQ6MTJlNCxhcGlCYXNlOm59KS50aGVuKGZ1bmN0aW9uKCl7cy5jcmVhdGVEYXRhRW50cmllcygpfSl9KS5jYXRjaChmdW5jdGlvbihlKXtjb25zb2xlLmVycm9yKCJTb21ldGhpbmcgd2VudCB3cm9uZyIsZSl9KX19LHtrZXk6ImhhbmRsZUNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQuaWQsYT10aGlzLnN0YXRlLmFkZHJlc3NlczthW3RdPWUudGFyZ2V0LnZhbHVlLHRoaXMuc2V0U3RhdGUoe2FkZHJlc3NlczphfSl9fSx7a2V5OiJoYW5kbGVBZGRBZGRyZXNzIix2YWx1ZTpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIHQ9dGhpcy5zdGF0ZS5hZGRyZXNzZXM7dC5wdXNoKCIiKSx0aGlzLnNldFN0YXRlKHthZGRyZXNzZXM6dH0pfX0se2tleToiaGFuZGxlUHJvamVjdE5hbWUiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2V0U3RhdGUoe3Byb2plY3ROYW1lOmUudGFyZ2V0LnZhbHVlfSl9fSx7a2V5OiJoYW5kbGVQcm9qZWN0RGVzY3JpcHRpb24iLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2V0U3RhdGUoe3Byb2plY3REZXNjcmlwdGlvbjplLnRhcmdldC52YWx1ZX0pfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDx0aGlzLnN0YXRlLmFkZHJlc3Nlcy5sZW5ndGg7dCsrKXt2YXIgYT1zLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJmb3JtLWdyb3VwIixrZXk6dH0scy5hLmNyZWF0ZUVsZW1lbnQoImxhYmVsIix7aHRtbEZvcjoicHJvamVjdE5hbWUifSwiQWRkcmVzcyIpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGNsYXNzTmFtZToiZm9ybS1jb250cm9sIixpZDp0LG9uQ2hhbmdlOnRoaXMuaGFuZGxlQ2hhbmdlfSkpO2UucHVzaChhKX12YXIgbj1zLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJtb2RhbCIsdGFiSW5kZXg6Ii0xIixyb2xlOiJkaWFsb2ciLHN0eWxlOntkaXNwbGF5OiJibG9jayJ9fSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJtb2RhbC1kaWFsb2ciLHJvbGU6ImRvY3VtZW50In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToibW9kYWwtY29udGVudCBib3JkZXItbGVmdC1pbmZvIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToibW9kYWwtaGVhZGVyIn0scy5hLmNyZWF0ZUVsZW1lbnQoImg1Iix7Y2xhc3NOYW1lOiJtb2RhbC10aXRsZSJ9LCJJbml0aWFsaXppbmcgcHJvamVjdC4uLiIpKSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJtb2RhbC1ib2R5In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicHJvZ3Jlc3MifSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLXN0cmlwZWQgcHJvZ3Jlc3MtYmFyLWFuaW1hdGVkIixyb2xlOiJwcm9ncmVzc2JhciIsImFyaWEtdmFsdWVub3ciOiIxMDAiLCJhcmlhLXZhbHVlbWluIjoiMCIsImFyaWEtdmFsdWVtYXgiOiIxMDAiLHN0eWxlOnt3aWR0aDoiMTAwJSJ9fSkpKSkpKTtyZXR1cm4gcy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxzLmEuY3JlYXRlRWxlbWVudCgibmF2Iix7Y2xhc3NOYW1lOiJuYXZiYXIgbmF2YmFyLWV4cGFuZCBuYXZiYXItbGlnaHQgYmctd2hpdGUgdG9wYmFyIG1iLTQgc3RhdGljLXRvcCBzaGFkb3cifSxzLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7aWQ6InNpZGViYXJUb2dnbGVUb3AiLGNsYXNzTmFtZToiYnRuIGJ0bi1saW5rIGQtbWQtbm9uZSByb3VuZGVkLWNpcmNsZSBtci0zIn0scy5hLmNyZWF0ZUVsZW1lbnQoImkiLHtjbGFzc05hbWU6ImZhIGZhLWJhcnMifSkpLHMuYS5jcmVhdGVFbGVtZW50KCJ1bCIse2NsYXNzTmFtZToibmF2YmFyLW5hdiBtbC1hdXRvIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToidG9wYmFyLWRpdmlkZXIgZC1ub25lIGQtc20tYmxvY2sifSkscy5hLmNyZWF0ZUVsZW1lbnQoImxpIix7Y2xhc3NOYW1lOiJuYXYtaXRlbSBuby1hcnJvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJtci0yIGQtbm9uZSBkLWxnLWlubGluZSB0ZXh0LWdyYXktNjAwIHNtYWxsIn0sIkNyZWF0ZSBQcm9qZWN0IikpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyLWZsdWlkIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZC1zbS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImgxIix7Y2xhc3NOYW1lOiJoMyBtYi0wIHRleHQtZ3JheS04MDAifSwiQ3JlYXRlIGEgbmV3IHByb2plY3QiKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZCBib3JkZXItbGVmdC1pbmZvIHNoYWRvdyBoLTEwMCBweS0yIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZC1ib2R5In0scy5hLmNyZWF0ZUVsZW1lbnQoImZvcm0iLG51bGwscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6InByb2plY3ROYW1lIn0sIlByb2plY3QgTmFtZSIpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGNsYXNzTmFtZToiZm9ybS1jb250cm9sIixpZDoicHJvamVjdE5hbWUiLG9uQ2hhbmdlOnRoaXMuaGFuZGxlUHJvamVjdE5hbWV9KSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6InByb2plY3REZXNjcmlwdGlvbiJ9LCJQcm9qZWN0IERlc2NyaXB0aW9uIikscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToicHJvamVjdERlc2NyaXB0aW9uIixjbGFzc05hbWU6ImZvcm0tY29udHJvbCIsaWQ6InByb2plY3REZXNjcmlwdGlvbiIsb25DaGFuZ2U6dGhpcy5oYW5kbGVQcm9qZWN0RGVzY3JpcHRpb259KSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6InByb2plY3RBZGRyZXNzIn0sIlByb2plY3QgQWRkcmVzcyIpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InByb2plY3RBZGRyZXNzIixjbGFzc05hbWU6ImZvcm0tY29udHJvbCIsdmFsdWU6dGhpcy5zdGF0ZS5hZGRyZXNzLHJlYWRPbmx5OiEwfSkpLGUscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse2NsYXNzTmFtZToiYnRuIGJ0bi1wcmltYXJ5IG1yLTIgbWItMiIsb25DbGljazp0aGlzLmhhbmRsZUZ1bmRBZGRyZXNzfSwiQ3JlYXRlIFByb2plY3QiKSxzLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7Y2xhc3NOYW1lOiJidG4gYnRuLXNlY29uZGFyeSBtci0yIG1iLTIiLG9uQ2xpY2s6dGhpcy5oYW5kbGVBZGRBZGRyZXNzfSwiQWRkIEFkZHJlc3MiKSx0aGlzLnN0YXRlLnNob3dQcm9ncmVzc2Jhcj9uOnMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwpKSkpKSkpKX19XSksdH0ocy5hLkNvbXBvbmVudCksdj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3ZhciBhO3JldHVybiBPYmplY3QoaS5hKSh0aGlzLHQpLChhPU9iamVjdChvLmEpKHRoaXMsT2JqZWN0KGQuYSkodCkuY2FsbCh0aGlzLGUpKSkuc3RhdGU9e3Jpc2tzOltdLHByb2plY3RBZGRyZXNzOiIifSxhLm5vZGU9YS5wcm9wcy5ub2RlLGEuaGFuZGxlUHJvamVjdEFkZHJlc3NDaGFuZ2U9YS5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZURlc2NyaXB0aW9uQ2hhbmdlPWEuaGFuZGxlRGVzY3JpcHRpb25DaGFuZ2UuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVOYW1lQ2hhbmdlPWEuaGFuZGxlTmFtZUNoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmRlbGV0ZVJpc2tDbGlja2VkPWEuZGVsZXRlUmlza0NsaWNrZWQuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVTdG9yYWdlT2ZSaXNrcz1hLmhhbmRsZVN0b3JhZ2VPZlJpc2tzLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlQWRkUmlzaz1hLmhhbmRsZUFkZFJpc2suYmluZChPYmplY3QobS5hKShhKSksYX1yZXR1cm4gT2JqZWN0KGguYSkodCxlKSxPYmplY3QoYy5hKSh0LFt7a2V5OiJoYW5kbGVBZGRSaXNrIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUucmlza3M7ZS5wdXNoKHtuYW1lOiIiLGRlc2NyaXB0aW9uOiIifSksdGhpcy5zZXRTdGF0ZSh7cmlza3M6ZX0pfX0se2tleToiaGFuZGxlU3RvcmFnZU9mUmlza3MiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD10aGlzLnN0YXRlLnJpc2tzLGE9dGhpcyxuPVtdLHM9ZnVuY3Rpb24oKXt2YXIgYT17dHlwZToxNixkYXRhOntmZWU6e3Rva2VuczouMDUsYXNzZXRJZDoiV0FWRVMifSxkQXBwOmUuc3RhdGUucHJvamVjdEFkZHJlc3MsY2FsbDp7ZnVuY3Rpb246ImFkZENvbnNvbGlkYXRlZFJpc2siLGFyZ3M6W3t0eXBlOiJzdHJpbmciLHZhbHVlOnRbcl0ubmFtZX0se3R5cGU6InN0cmluZyIsdmFsdWU6dFtyXS5kZXNjcmlwdGlvbn1dfSxwYXltZW50OltdfX07bi5wdXNoKGEpO3ZhciBzPWU7Nz09PW4ubGVuZ3RoJiYod2luZG93LldhdmVzS2VlcGVyLnNpZ25UcmFuc2FjdGlvblBhY2thZ2UobikudGhlbihmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylzLmJyb2FkY2FzdFRyYW5zYWN0aW9uKGVbdF0sZnVuY3Rpb24oZSl7Y29uc29sZS5sb2coZSl9KX0pLG49W10pfSxyPTA7cjx0Lmxlbmd0aDtyKyspcygpO24ubGVuZ3RoPjAmJndpbmRvdy5XYXZlc0tlZXBlci5zaWduVHJhbnNhY3Rpb25QYWNrYWdlKG4pLnRoZW4oZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspYS5icm9hZGNhc3RUcmFuc2FjdGlvbihlW3RdLGZ1bmN0aW9uKGUpe2NvbnNvbGUubG9nKGUpfSl9KX19LHtrZXk6ImJyb2FkY2FzdFRyYW5zYWN0aW9uIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBhPW5ldyBYTUxIdHRwUmVxdWVzdDthLm9wZW4oIlBPU1QiLHRoaXMubm9kZSsiL3RyYW5zYWN0aW9ucy9icm9hZGNhc3QiLCEwKSxhLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsImFwcGxpY2F0aW9uL2pzb24iKSxhLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsImFwcGxpY2F0aW9uL2pzb24iKSxhLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3QodGhpcy5yZXNwb25zZSl9LGEuc2VuZChlKX19LHtrZXk6ImhhbmRsZVByb2plY3RBZGRyZXNzQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC52YWx1ZSxhPXRoaXMsbj1bXTtmZXRjaCh0aGlzLm5vZGUrIi9hZGRyZXNzZXMvZGF0YS8iK3QpLnRoZW4oZnVuY3Rpb24oZSl7ZS5qc29uKCkudGhlbihmdW5jdGlvbihlKXtlLmZvckVhY2goZnVuY3Rpb24odCl7aWYodC5rZXkuZW5kc1dpdGgoIl9uYW1lIikpe3ZhciBhPXQua2V5LnN1YnN0cmluZygwLHQua2V5LmluZGV4T2YoIl8iKSkscz10LnZhbHVlO2UuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlLmtleT09PWErIl9kZXNjcmlwdGlvbiIpe3ZhciB0PWUudmFsdWUscj17bmFtZTpzLGRlc2NyaXB0aW9uOnR9O24ucHVzaChyKX19KX19KSxhLnNldFN0YXRlKHtyaXNrczpuLHByb2plY3RBZGRyZXNzOnR9KX0pfSkuY2F0Y2goZnVuY3Rpb24oZSl7Y29uc29sZS5sb2coZSl9KX19LHtrZXk6ImhhbmRsZURlc2NyaXB0aW9uQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC5pZCxhPWUudGFyZ2V0LnZhbHVlLG49dGhpcy5zdGF0ZS5yaXNrcztuW3RdLmRlc2NyaXB0aW9uPWEsdGhpcy5zZXRTdGF0ZSh7cmlza3M6bn0pfX0se2tleToiaGFuZGxlTmFtZUNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQuaWQsYT1lLnRhcmdldC52YWx1ZSxuPXRoaXMuc3RhdGUucmlza3M7blt0XS5uYW1lPWEsdGhpcy5zZXRTdGF0ZSh7cmlza3M6bn0pfX0se2tleToiZGVsZXRlUmlza0NsaWNrZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LmlkLGE9dGhpcy5zdGF0ZS5yaXNrczthLnNwbGljZSh0LDEpLHRoaXMuc2V0U3RhdGUoe3Jpc2tzOmF9KX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8dGhpcy5zdGF0ZS5yaXNrcy5sZW5ndGg7dCsrKXt2YXIgYT1zLmEuY3JlYXRlRWxlbWVudCgidHIiLHtrZXk6dH0scy5hLmNyZWF0ZUVsZW1lbnQoInRkIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGlkOnQsdmFsdWU6dGhpcy5zdGF0ZS5yaXNrc1t0XS5uYW1lLG9uQ2hhbmdlOnRoaXMuaGFuZGxlTmFtZUNoYW5nZX0pKSxzLmEuY3JlYXRlRWxlbWVudCgidGQiLG51bGwscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToidGV4dCIsaWQ6dCx2YWx1ZTp0aGlzLnN0YXRlLnJpc2tzW3RdLmRlc2NyaXB0aW9uLG9uQ2hhbmdlOnRoaXMuaGFuZGxlRGVzY3JpcHRpb25DaGFuZ2V9KSkscy5hLmNyZWF0ZUVsZW1lbnQoInRkIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToiYnRuIGJ0bi1kYW5nZXIiLGlkOnQsb25DbGljazp0aGlzLmRlbGV0ZVJpc2tDbGlja2VkfSwiRGVsZXRlIFJpc2siKSkpO2UucHVzaChhKX1yZXR1cm4gcy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxzLmEuY3JlYXRlRWxlbWVudCgibmF2Iix7Y2xhc3NOYW1lOiJuYXZiYXIgbmF2YmFyLWV4cGFuZCBuYXZiYXItbGlnaHQgYmctd2hpdGUgdG9wYmFyIG1iLTQgc3RhdGljLXRvcCBzaGFkb3cifSxzLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7aWQ6InNpZGViYXJUb2dnbGVUb3AiLGNsYXNzTmFtZToiYnRuIGJ0bi1saW5rIGQtbWQtbm9uZSByb3VuZGVkLWNpcmNsZSBtci0zIn0scy5hLmNyZWF0ZUVsZW1lbnQoImkiLHtjbGFzc05hbWU6ImZhIGZhLWJhcnMifSkpLHMuYS5jcmVhdGVFbGVtZW50KCJ1bCIse2NsYXNzTmFtZToibmF2YmFyLW5hdiBtbC1hdXRvIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToidG9wYmFyLWRpdmlkZXIgZC1ub25lIGQtc20tYmxvY2sifSkscy5hLmNyZWF0ZUVsZW1lbnQoImxpIix7Y2xhc3NOYW1lOiJuYXYtaXRlbSBuby1hcnJvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJtci0yIGQtbm9uZSBkLWxnLWlubGluZSB0ZXh0LWdyYXktNjAwIHNtYWxsIn0sIkNvbnNvbGlkYXRlIFJpc2tzIikpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyLWZsdWlkIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZC1zbS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImgxIix7Y2xhc3NOYW1lOiJoMyBtYi0wIHRleHQtZ3JheS04MDAifSwiQ29uc29saWRhdGUgcmlza3MiKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZCBib3JkZXItbGVmdC1pbmZvIHNoYWRvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImNhcmQtYm9keSJ9LHMuYS5jcmVhdGVFbGVtZW50KCJmb3JtIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImZvcm0tZ3JvdXAifSxzLmEuY3JlYXRlRWxlbWVudCgibGFiZWwiLHtodG1sRm9yOiJleGFtcGxlSW5wdXRFbWFpbDEifSwiUHJvamVjdCBBZGRyZXNzIikscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToidGV4dCIsY2xhc3NOYW1lOiJmb3JtLWNvbnRyb2wiLGlkOiJwcm9qZWN0QWRkcmVzcyIsb25DaGFuZ2U6dGhpcy5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZX0pKSkscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJidG4gYnRuLXByaW1hcnkgbWItMiBtci0yIixvbkNsaWNrOnRoaXMuaGFuZGxlQWRkUmlza30sIkFkZCBSaXNrIikscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJidG4gYnRuLXNlY29uZGFyeSBtYi0yIixvbkNsaWNrOnRoaXMuaGFuZGxlU3RvcmFnZU9mUmlza3N9LCJTdG9yZSBDb25zb2xpZGF0ZWQgUmlza3MiKSkpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoInRhYmxlIix7Y2xhc3NOYW1lOiJ0YWJsZSB0YWJsZS1zdHJpcGVkIGJvcmRlci1sZWZ0LWluZm8gc2hhZG93In0scy5hLmNyZWF0ZUVsZW1lbnQoInRoZWFkIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJ0ciIsbnVsbCxzLmEuY3JlYXRlRWxlbWVudCgidGgiLG51bGwsIk5hbWUiKSxzLmEuY3JlYXRlRWxlbWVudCgidGgiLG51bGwsIkRlc2NyaXB0aW9uIikscy5hLmNyZWF0ZUVsZW1lbnQoInRoIixudWxsLCJBY3Rpb24iKSkpLHMuYS5jcmVhdGVFbGVtZW50KCJ0Ym9keSIsbnVsbCxlKSkpKSkpfX1dKSx0fShzLmEuQ29tcG9uZW50KSxmPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIGE7cmV0dXJuIE9iamVjdChpLmEpKHRoaXMsdCksKGE9T2JqZWN0KG8uYSkodGhpcyxPYmplY3QoZC5hKSh0KS5jYWxsKHRoaXMsZSkpKS5zdGF0ZT17cmlza3M6W10scHJvamVjdEFkZHJlc3M6IiJ9LGEubm9kZT1hLnByb3BzLm5vZGUsYS5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZT1hLmhhbmRsZVByb2plY3RBZGRyZXNzQ2hhbmdlLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuYWRkUmlza0NsaWNrZWQ9YS5hZGRSaXNrQ2xpY2tlZC5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZU5hbWVDaGFuZ2U9YS5oYW5kbGVOYW1lQ2hhbmdlLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlRGVzY3JpcHRpb25DaGFuZ2U9YS5oYW5kbGVEZXNjcmlwdGlvbkNoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLnN0b3JlUmlza3NDbGlja2VkPWEuc3RvcmVSaXNrc0NsaWNrZWQuYmluZChPYmplY3QobS5hKShhKSksYX1yZXR1cm4gT2JqZWN0KGguYSkodCxlKSxPYmplY3QoYy5hKSh0LFt7a2V5OiJoYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5zZXRTdGF0ZSh7cHJvamVjdEFkZHJlc3M6ZS50YXJnZXQudmFsdWV9KX19LHtrZXk6ImFkZFJpc2tDbGlja2VkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUucmlza3M7ZS5sZW5ndGg8Nz8oZS5wdXNoKHtuYW1lOiIiLGRlc2NyaXB0aW9uOiIifSksdGhpcy5zZXRTdGF0ZSh7cmlza3M6ZX0pKTphbGVydCgiT25seSBzZXZlbiByaXNrcyBhbGxvd2VkIGF0IG9uY2UhIil9fSx7a2V5OiJoYW5kbGVOYW1lQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC5pZCxhPWUudGFyZ2V0LnZhbHVlLG49dGhpcy5zdGF0ZS5yaXNrcztuW3RdLm5hbWU9YSx0aGlzLnNldFN0YXRlKHtyaXNrczpufSl9fSx7a2V5OiJoYW5kbGVEZXNjcmlwdGlvbkNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQuaWQsYT1lLnRhcmdldC52YWx1ZSxuPXRoaXMuc3RhdGUucmlza3M7blt0XS5kZXNjcmlwdGlvbj1hLHRoaXMuc2V0U3RhdGUoe3Jpc2tzOm59KX19LHtrZXk6InN0b3JlUmlza3NDbGlja2VkIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnN0YXRlLnJpc2tzLHQ9W10sYT0wO2E8ZS5sZW5ndGg7YSsrKXt2YXIgbj17dHlwZToxNixkYXRhOntmZWU6e3Rva2VuczouMDUsYXNzZXRJZDoiV0FWRVMifSxkQXBwOnRoaXMuc3RhdGUucHJvamVjdEFkZHJlc3MsY2FsbDp7ZnVuY3Rpb246ImFkZFJpc2siLGFyZ3M6W3t0eXBlOiJzdHJpbmciLHZhbHVlOmVbYV0ubmFtZX0se3R5cGU6InN0cmluZyIsdmFsdWU6ZVthXS5kZXNjcmlwdGlvbn1dfSxwYXltZW50OltdfX07dC5wdXNoKG4pfXZhciBzPXRoaXM7d2luZG93LldhdmVzS2VlcGVyLnNpZ25UcmFuc2FjdGlvblBhY2thZ2UodCkudGhlbihmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylzLmJyb2FkY2FzdFRyYW5zYWN0aW9uKGVbdF0sZnVuY3Rpb24oZSl7Y29uc29sZS5sb2coZSl9KX0pfX0se2tleToiYnJvYWRjYXN0VHJhbnNhY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGE9bmV3IFhNTEh0dHBSZXF1ZXN0O2Eub3BlbigiUE9TVCIsdGhpcy5ub2RlKyIvdHJhbnNhY3Rpb25zL2Jyb2FkY2FzdCIsITApLGEuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwiYXBwbGljYXRpb24vanNvbiIpLGEuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IiwiYXBwbGljYXRpb24vanNvbiIpLGEub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7dCh0aGlzLnJlc3BvbnNlKX0sYS5zZW5kKGUpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDx0aGlzLnN0YXRlLnJpc2tzLmxlbmd0aDt0Kyspe3ZhciBhPXMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InJvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImNvbC14bC02IGNvbC1tZC02IG1iLTQifSxzLmEuY3JlYXRlRWxlbWVudCgibGFiZWwiLG51bGwsIk5hbWUiKSxzLmEuY3JlYXRlRWxlbWVudCgiYnIiLG51bGwpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGNsYXNzTmFtZToiZm9ybS1jb250cm9sIixpZDp0LG9uQ2hhbmdlOnRoaXMuaGFuZGxlTmFtZUNoYW5nZX0pKSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJjb2wteGwtNiBjb2wtbWQtNiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImxhYmVsIixudWxsLCJEZXNjcmlwdGlvbiIpLHMuYS5jcmVhdGVFbGVtZW50KCJiciIsbnVsbCkscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToidGV4dCIsY2xhc3NOYW1lOiJmb3JtLWNvbnRyb2wiLGlkOnQsb25DaGFuZ2U6dGhpcy5oYW5kbGVEZXNjcmlwdGlvbkNoYW5nZX0pKSk7ZS5wdXNoKGEpfXJldHVybiBzLmEuY3JlYXRlRWxlbWVudCgiZGl2IixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJuYXYiLHtjbGFzc05hbWU6Im5hdmJhciBuYXZiYXItZXhwYW5kIG5hdmJhci1saWdodCBiZy13aGl0ZSB0b3BiYXIgbWItNCBzdGF0aWMtdG9wIHNoYWRvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJidXR0b24iLHtpZDoic2lkZWJhclRvZ2dsZVRvcCIsY2xhc3NOYW1lOiJidG4gYnRuLWxpbmsgZC1tZC1ub25lIHJvdW5kZWQtY2lyY2xlIG1yLTMifSxzLmEuY3JlYXRlRWxlbWVudCgiaSIse2NsYXNzTmFtZToiZmEgZmEtYmFycyJ9KSkscy5hLmNyZWF0ZUVsZW1lbnQoInVsIix7Y2xhc3NOYW1lOiJuYXZiYXItbmF2IG1sLWF1dG8ifSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJ0b3BiYXItZGl2aWRlciBkLW5vbmUgZC1zbS1ibG9jayJ9KSxzLmEuY3JlYXRlRWxlbWVudCgibGkiLHtjbGFzc05hbWU6Im5hdi1pdGVtIG5vLWFycm93In0scy5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6Im1yLTIgZC1ub25lIGQtbGctaW5saW5lIHRleHQtZ3JheS02MDAgc21hbGwifSwiQWRkIFJpc2tzIikpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyLWZsdWlkIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZC1zbS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImgxIix7Y2xhc3NOYW1lOiJoMyBtYi0wIHRleHQtZ3JheS04MDAifSwiQWRkIGEgcmlzayIpKSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJjYXJkIGJvcmRlci1sZWZ0LWluZm8gc2hhZG93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZC1ib2R5In0scy5hLmNyZWF0ZUVsZW1lbnQoImZvcm0iLG51bGwscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6ImV4YW1wbGVJbnB1dEVtYWlsMSJ9LCJQcm9qZWN0IEFkZHJlc3MiKSxzLmEuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHt0eXBlOiJ0ZXh0IixjbGFzc05hbWU6ImZvcm0tY29udHJvbCIsaWQ6InByb2plY3RBZGRyZXNzIixvbkNoYW5nZTp0aGlzLmhhbmRsZVByb2plY3RBZGRyZXNzQ2hhbmdlfSkpLGUpLHMuYS5jcmVhdGVFbGVtZW50KCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToiYnRuIGJ0bi1wcmltYXJ5IG1yLTIiLG9uQ2xpY2s6dGhpcy5hZGRSaXNrQ2xpY2tlZH0sIkFkZCBSaXNrIikscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJidG4gYnRuLXNlY29uZGFyeSIsb25DbGljazp0aGlzLnN0b3JlUmlza3NDbGlja2VkfSwiU3RvcmUgUmlza3MiKSkpKSkpKX19XSksdH0ocy5hLkNvbXBvbmVudCksRT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3ZhciBhO3JldHVybiBPYmplY3QoaS5hKSh0aGlzLHQpLChhPU9iamVjdChvLmEpKHRoaXMsT2JqZWN0KGQuYSkodCkuY2FsbCh0aGlzLGUpKSkuc3RhdGU9e3Jpc2tzOltdLHByb2plY3RBZGRyZXNzOiIifSxhLm5vZGU9YS5wcm9wcy5ub2RlLGEuaGFuZGxlUHJvamVjdEFkZHJlc3NDaGFuZ2U9YS5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZVByb2JhYmlsaXR5Q2hhbmdlPWEuaGFuZGxlUHJvYmFiaWxpdHlDaGFuZ2UuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVJbXBhY3RDaGFuZ2U9YS5oYW5kbGVJbXBhY3RDaGFuZ2UuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVTdG9yYWdlT2ZFdmFsdWF0aW9ucz1hLmhhbmRsZVN0b3JhZ2VPZkV2YWx1YXRpb25zLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGF9cmV0dXJuIE9iamVjdChoLmEpKHQsZSksT2JqZWN0KGMuYSkodCxbe2tleToiaGFuZGxlUHJvYmFiaWxpdHlDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LmlkLGE9ZS50YXJnZXQudmFsdWUsbj10aGlzLnN0YXRlLnJpc2tzO25bdF0ucHJvYmFiaWxpdHk9YSx0aGlzLnNldFN0YXRlKHtyaXNrczpufSl9fSx7a2V5OiJoYW5kbGVJbXBhY3RDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LmlkLGE9ZS50YXJnZXQudmFsdWUsbj10aGlzLnN0YXRlLnJpc2tzO25bdF0uaW1wYWN0PWEsdGhpcy5zZXRTdGF0ZSh7cmlza3M6bn0pfX0se2tleToiaGFuZGxlU3RvcmFnZU9mRXZhbHVhdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuc3RhdGUucmlza3MsdD10aGlzLGE9W10sbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcz17dHlwZToxNixkYXRhOntmZWU6e3Rva2VuczouMDUsYXNzZXRJZDoiV0FWRVMifSxkQXBwOnRoaXMuc3RhdGUucHJvamVjdEFkZHJlc3MsY2FsbDp7ZnVuY3Rpb246ImV2YWx1YXRlUmlzayIsYXJnczpbe3R5cGU6InN0cmluZyIsdmFsdWU6ZVtuXS5pZH0se3R5cGU6ImludGVnZXIiLHZhbHVlOmVbbl0ucHJvYmFiaWxpdHl9LHt0eXBlOiJpbnRlZ2VyIix2YWx1ZTplW25dLmltcGFjdH1dfSxwYXltZW50OltdfX07YS5wdXNoKHMpLDc9PT1hLmxlbmd0aCYmKHdpbmRvdy5XYXZlc0tlZXBlci5zaWduVHJhbnNhY3Rpb25QYWNrYWdlKGEpLnRoZW4oZnVuY3Rpb24oZSl7Zm9yKHZhciBhPTA7YTxlLmxlbmd0aDthKyspdC5icm9hZGNhc3RUcmFuc2FjdGlvbihlW2FdLGZ1bmN0aW9uKGUpe2NvbnNvbGUubG9nKGUpfSl9KSxhPVtdKX1hLmxlbmd0aD4wJiZ3aW5kb3cuV2F2ZXNLZWVwZXIuc2lnblRyYW5zYWN0aW9uUGFja2FnZShhKS50aGVuKGZ1bmN0aW9uKGUpe2Zvcih2YXIgYT0wO2E8ZS5sZW5ndGg7YSsrKXQuYnJvYWRjYXN0VHJhbnNhY3Rpb24oZVthXSxmdW5jdGlvbihlKXtjb25zb2xlLmxvZyhlKX0pfSl9fSx7a2V5OiJicm9hZGNhc3RUcmFuc2FjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7YS5vcGVuKCJQT1NUIix0aGlzLm5vZGUrIi90cmFuc2FjdGlvbnMvYnJvYWRjYXN0IiwhMCksYS5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLCJhcHBsaWNhdGlvbi9qc29uIiksYS5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLCJhcHBsaWNhdGlvbi9qc29uIiksYS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXt0KHRoaXMucmVzcG9uc2UpfSxhLnNlbmQoZSl9fSx7a2V5OiJoYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZSIsdg==",
    "2019.12.27 16:40": "base64:KHdpbmRvdy53ZWJwYWNrSnNvbnA9d2luZG93LndlYnBhY2tKc29ucHx8W10pLnB1c2goW1swXSx7MTExODpmdW5jdGlvbihlLHQsYSl7fSwxMTIwOmZ1bmN0aW9uKGUsdCxhKXsidXNlIHN0cmljdCI7YS5yKHQpO3ZhciBuPWEoMSkscz1hLm4obikscj1hKDIwMCksbD1hLm4ociksaT0oYSg1NDEpLGEoMzkpKSxjPWEoNDApLG89YSg0MiksZD1hKDQxKSxtPWEoMTEpLGg9YSg0MyksdT1hKDMxKSxwPWEoNTAzKSxiPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIGE7cmV0dXJuIE9iamVjdChpLmEpKHRoaXMsdCksKGE9T2JqZWN0KG8uYSkodGhpcyxPYmplY3QoZC5hKSh0KS5jYWxsKHRoaXMsZSkpKS5jb250cmFjdD0ney0jIFNURExJQl9WRVJTSU9OIDMgIy19XG57LSMgQ09OVEVOVF9UWVBFIERBUFAgIy19XG57LSMgU0NSSVBUX1RZUEUgQUNDT1VOVCAjLX1cblxubGV0IEVNVFBZU1RSSU5HID0gIiJcblxuZnVuYyBnZXRTdHJpbmdGcm9tS2V5KGtleTogU3RyaW5nKSA9IHtcbiAgICBtYXRjaCBnZXRTdHJpbmcodGhpcywga2V5KSB7XG4gICAgICAgIGNhc2Ugc3RyOlN0cmluZyA9PiBzdHJcbiAgICAgICAgY2FzZSBfID0+IEVNVFBZU1RSSU5HXG4gICAgfVxufVxuXG5mdW5jIGlzVmFsaWRTZW5kZXIoc2VuZGVyOiBTdHJpbmcpID0ge1xuICAgIGxldCBlbnRyeUZvclNlbmRlckFkZHJlc3MgPSBnZXRTdHJpbmdGcm9tS2V5KHNlbmRlcilcblxuICAgIGlmIChlbnRyeUZvclNlbmRlckFkZHJlc3MgPT0gRU1UUFlTVFJJTkcpIHRoZW4gZmFsc2UgZWxzZSB0cnVlXG59XG5cbkBDYWxsYWJsZShpKVxuZnVuYyBhZGRSaXNrKG5hbWU6IFN0cmluZywgZGVzY3JpcHRpb246IFN0cmluZykgPSB7XG4gICBsZXQgc2VuZGVyID0gdG9CYXNlNThTdHJpbmcoaS5jYWxsZXIuYnl0ZXMpXG4gICBpZiAoaXNWYWxpZFNlbmRlcihzZW5kZXIpKSB0aGVuXG4gICAgICAgV3JpdGVTZXQoW1xuICAgICAgICAgICBEYXRhRW50cnkodG9CYXNlNThTdHJpbmcoaS50cmFuc2FjdGlvbklkKSArICJfbmFtZSIgLCBuYW1lKSxcbiAgICAgICAgICAgRGF0YUVudHJ5KHRvQmFzZTU4U3RyaW5nKGkudHJhbnNhY3Rpb25JZCkgKyAiX2Rlc2NyaXB0aW9uIiAsIGRlc2NyaXB0aW9uKVxuICAgICAgIF0pXG4gICBlbHNlIHRocm93KCJTZW5kZXIgbm90IGFsbG93ZWQgdG8gc3RvcmUgcmlza3MhIilcbn1cblxuQENhbGxhYmxlKGkpXG5mdW5jIGFkZENvbnNvbGlkYXRlZFJpc2sobmFtZTogU3RyaW5nLCBkZXNjcmlwdGlvbjogU3RyaW5nKSA9IHtcbiAgIGxldCBzZW5kZXIgPSB0b0Jhc2U1OFN0cmluZyhpLmNhbGxlci5ieXRlcylcbiAgIGlmIChpc1ZhbGlkU2VuZGVyKHNlbmRlcikpIHRoZW5cbiAgICAgICBXcml0ZVNldChbXG4gICAgICAgICAgIERhdGFFbnRyeSh0b0Jhc2U1OFN0cmluZyhpLnRyYW5zYWN0aW9uSWQpICsgIl9jb25zb2xpZGF0ZWRfbmFtZSIgLCBuYW1lKSxcbiAgICAgICAgICAgRGF0YUVudHJ5KHRvQmFzZTU4U3RyaW5nKGkudHJhbnNhY3Rpb25JZCkgKyAiX2NvbnNvbGlkYXRlZF9kZXNjcmlwdGlvbiIgLCBkZXNjcmlwdGlvbilcbiAgICAgICBdKVxuICAgZWxzZSB0aHJvdygiU2VuZGVyIG5vdCBhbGxvd2VkIHRvIGNvbnNvbGlkYXRlIHJpc2tzISIpXG59XG5cbkBDYWxsYWJsZShpKVxuZnVuYyBldmFsdWF0ZVJpc2soaWQ6IFN0cmluZywgcHJvYmFiaWxpdHk6IEludCwgaW1wYWN0OiBJbnQpID0ge1xuICAgbGV0IHNlbmRlciA9IHRvQmFzZTU4U3RyaW5nKGkuY2FsbGVyLmJ5dGVzKVxuXG4gICBpZiAoaXNWYWxpZFNlbmRlcihzZW5kZXIpKSB0aGVuXG4gICAgICAgV3JpdGVTZXQoW1xuICAgICAgICAgICBEYXRhRW50cnkoaWQgKyAiXyIgKyB0b0Jhc2U1OFN0cmluZyhpLnRyYW5zYWN0aW9uSWQpICsgIl9wcm9iIiAsIHByb2JhYmlsaXR5KSxcbiAgICAgICAgICAgRGF0YUVudHJ5KGlkICsgIl8iICsgdG9CYXNlNThTdHJpbmcoaS50cmFuc2FjdGlvbklkKSArICJfaW1wIiAsIGltcGFjdClcbiAgICAgICBdKVxuICAgZWxzZSB0aHJvdygiU2VuZGVyIG5vdCBhbGxvd2VkIHRvIGV2YWx1YXRlIG9yIGV2YWx1YXRlZCBhbHJlYWR5ISIpXG59XG5cbkBWZXJpZmllcih0eClcbmZ1bmMgdmVyaWZ5KCkgPSB7XG4gICBtYXRjaCB0eCB7XG4gICAgICAgY2FzZSBfID0+IGZhbHNlXG4gICB9XG59XG4nLGEuc3RhdGU9e2FkZHJlc3NlczpbXSxhZGRyZXNzOiIiLHByb2plY3ROYW1lOiIiLHByb2plY3REZXNjcmlwdGlvbjoiIixzZWVkOiIiLHNob3dQcm9ncmVzc2JhcjohMX0sYS5ub2RlPWEucHJvcHMubm9kZSxhLmhhbmRsZUFkZEFkZHJlc3M9YS5oYW5kbGVBZGRBZGRyZXNzLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlQ2hhbmdlPWEuaGFuZGxlQ2hhbmdlLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlUHJvamVjdE5hbWU9YS5oYW5kbGVQcm9qZWN0TmFtZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZVByb2plY3REZXNjcmlwdGlvbj1hLmhhbmRsZVByb2plY3REZXNjcmlwdGlvbi5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZUZ1bmRBZGRyZXNzPWEuaGFuZGxlRnVuZEFkZHJlc3MuYmluZChPYmplY3QobS5hKShhKSksYX1yZXR1cm4gT2JqZWN0KGguYSkodCxlKSxPYmplY3QoYy5hKSh0LFt7a2V5OiJjb21waWxlQ29udHJhY3QiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBYTUxIdHRwUmVxdWVzdDt0Lm9wZW4oIlBPU1QiLHRoaXMubm9kZSsiL3V0aWxzL3NjcmlwdC9jb21waWxlQ29kZSIsITApLHQuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwiYXBwbGljYXRpb24vanNvbiIpLHQuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IiwiYXBwbGljYXRpb24vanNvbiIpLHQub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aWYoND09PXQucmVhZHlTdGF0ZSYmMjAwPT09dC5zdGF0dXMpe3ZhciBhPUpTT04ucGFyc2UodGhpcy5yZXNwb25zZSkuc2NyaXB0O2UoYSl9fSx0LnNlbmQodGhpcy5jb250cmFjdCl9fSx7a2V5OiJkZXBsb3lDb250cmFjdCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5ub2RlLGE9dGhpczt0aGlzLmNvbXBpbGVDb250cmFjdChmdW5jdGlvbihuKXt2YXIgcz1PYmplY3QodS5zZXRTY3JpcHQpKHtzY3JpcHQ6bn0sZSk7T2JqZWN0KHUuYnJvYWRjYXN0KShzLHQpLnRoZW4oZnVuY3Rpb24oZSl7T2JqZWN0KHUud2FpdEZvclR4KShzLmlkLHt0aW1lb3V0OjEyZTQsYXBpQmFzZTp0fSkudGhlbihmdW5jdGlvbigpe2Euc2V0U3RhdGUoe3Nob3dQcm9ncmVzc2JhcjohMX0pfSl9KX0pfX0se2tleToiY3JlYXRlRGF0YUVudHJpZXMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPVt7a2V5OiJwcm9qZWN0TmFtZSIsdmFsdWU6dGhpcy5zdGF0ZS5wcm9qZWN0TmFtZSx0eXBlOiJzdHJpbmcifSx7a2V5OiJwcm9qZWN0RGVzY3JpcHRpb24iLHZhbHVlOnRoaXMuc3RhdGUucHJvamVjdERlc2NyaXB0aW9uLHR5cGU6InN0cmluZyJ9LHtrZXk6dGhpcy5zdGF0ZS5hZGRyZXNzLHZhbHVlOiJvd25lciIsdHlwZToic3RyaW5nIn1dLHQ9dGhpcyxhPXRoaXMubm9kZSxuPTA7bjx0aGlzLnN0YXRlLmFkZHJlc3Nlcy5sZW5ndGg7bisrKXt2YXIgcz17a2V5OnRoaXMuc3RhdGUuYWRkcmVzc2VzW25dLHZhbHVlOiJ1c2VyIix0eXBlOiJzdHJpbmcifTtlLnB1c2gocyl9dmFyIHI9e3R5cGU6MTIsZGF0YTplfSxsPU9iamVjdCh1LmRhdGEpKHIsdGhpcy5zdGF0ZS5zZWVkKTtPYmplY3QodS5icm9hZGNhc3QpKGwsdGhpcy5ub2RlKS50aGVuKGZ1bmN0aW9uKCl7T2JqZWN0KHUud2FpdEZvclR4KShsLmlkLHt0aW1lb3V0OjEyZTQsYXBpQmFzZTphfSkudGhlbihmdW5jdGlvbihlKXtjb25zb2xlLmxvZyhlKSx0LmRlcGxveUNvbnRyYWN0KHQuc3RhdGUuc2VlZCksdC5zdG9yZVByb2plY3QodC5zdGF0ZSl9KX0pfX0se2tleToic3RvcmVQcm9qZWN0Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLGE9dGhpcy5ub2RlO3dpbmRvdy5XYXZlc0tlZXBlci5wdWJsaWNTdGF0ZSgpLnRoZW4oZnVuY3Rpb24obil7dmFyIHM9e3R5cGU6MTYsZEFwcDoiM1BIZmVub0pkMjZjcGVRVmYyOW00Q0pvUm4yM013R1hHcjciLGNhbGw6e2Z1bmN0aW9uOiJzdG9yZVByb2plY3QiLGFyZ3M6W3t0eXBlOiJzdHJpbmciLHZhbHVlOmUuYWRkcmVzc30se3R5cGU6InN0cmluZyIsdmFsdWU6ZS5wcm9qZWN0TmFtZX0se3R5cGU6InN0cmluZyIsdmFsdWU6ZS5wcm9qZWN0RGVzY3JpcHRpb259LHt0eXBlOiJpbnRlZ2VyIix2YWx1ZToobmV3IERhdGUpLmdldFRpbWUoKX0se3R5cGU6InN0cmluZyIsdmFsdWU6bi5hY2NvdW50LmFkZHJlc3N9XX0scGF5bWVudDpbXX0scj1PYmplY3QodS5pbnZva2VTY3JpcHQpKHMsdC5zdGF0ZS5zZWVkKTtPYmplY3QodS5icm9hZGNhc3QpKHIsdC5ub2RlKS50aGVuKGZ1bmN0aW9uKCl7T2JqZWN0KHUud2FpdEZvclR4KShyLmlkLHt0aW1lb3V0OjEyZTQsYXBpQmFzZTphfSkudGhlbihmdW5jdGlvbihlKXtjb25zb2xlLmxvZyhlKX0pfSl9KS5jYXRjaChmdW5jdGlvbihlKXtjb25zb2xlLmVycm9yKGUpfSl9fSx7a2V5OiJoYW5kbGVGdW5kQWRkcmVzcyIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciB0PXUuc2VlZFV0aWxzLmdlbmVyYXRlTmV3U2VlZCgpLGE9bmV3IHAuU2VlZEFkYXB0ZXIodCkuc2VlZC5hZGRyZXNzLG49dGhpcy5ub2RlLHM9dGhpczt0aGlzLnNldFN0YXRlKHtzZWVkOnQsYWRkcmVzczphLHNob3dQcm9ncmVzc2JhcjohMH0pO3ZhciByPXt0eXBlOjQsZGF0YTp7cmVjaXBpZW50OmEsYW1vdW50Onthc3NldElkOiJXQVZFUyIsdG9rZW5zOiIwLjAxNiJ9LGZlZTp7YXNzZXRJZDoiV0FWRVMiLHRva2VuczoiMC4wMDEifX19O3dpbmRvdy5XYXZlc0tlZXBlci5zaWduQW5kUHVibGlzaFRyYW5zYWN0aW9uKHIpLnRoZW4oZnVuY3Rpb24oZSl7dmFyIHQ9SlNPTi5wYXJzZShlKTtPYmplY3QodS53YWl0Rm9yVHgpKHQuaWQse3RpbWVvdXQ6MTJlNCxhcGlCYXNlOm59KS50aGVuKGZ1bmN0aW9uKCl7cy5jcmVhdGVEYXRhRW50cmllcygpfSl9KS5jYXRjaChmdW5jdGlvbihlKXtjb25zb2xlLmVycm9yKCJTb21ldGhpbmcgd2VudCB3cm9uZyIsZSl9KX19LHtrZXk6ImhhbmRsZUNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQuaWQsYT10aGlzLnN0YXRlLmFkZHJlc3NlczthW3RdPWUudGFyZ2V0LnZhbHVlLHRoaXMuc2V0U3RhdGUoe2FkZHJlc3NlczphfSl9fSx7a2V5OiJoYW5kbGVBZGRBZGRyZXNzIix2YWx1ZTpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIHQ9dGhpcy5zdGF0ZS5hZGRyZXNzZXM7dC5wdXNoKCIiKSx0aGlzLnNldFN0YXRlKHthZGRyZXNzZXM6dH0pfX0se2tleToiaGFuZGxlUHJvamVjdE5hbWUiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2V0U3RhdGUoe3Byb2plY3ROYW1lOmUudGFyZ2V0LnZhbHVlfSl9fSx7a2V5OiJoYW5kbGVQcm9qZWN0RGVzY3JpcHRpb24iLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2V0U3RhdGUoe3Byb2plY3REZXNjcmlwdGlvbjplLnRhcmdldC52YWx1ZX0pfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDx0aGlzLnN0YXRlLmFkZHJlc3Nlcy5sZW5ndGg7dCsrKXt2YXIgYT1zLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJmb3JtLWdyb3VwIixrZXk6dH0scy5hLmNyZWF0ZUVsZW1lbnQoImxhYmVsIix7aHRtbEZvcjoicHJvamVjdE5hbWUifSwiQWRkcmVzcyIpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGNsYXNzTmFtZToiZm9ybS1jb250cm9sIixpZDp0LG9uQ2hhbmdlOnRoaXMuaGFuZGxlQ2hhbmdlfSkpO2UucHVzaChhKX12YXIgbj1zLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJtb2RhbCIsdGFiSW5kZXg6Ii0xIixyb2xlOiJkaWFsb2ciLHN0eWxlOntkaXNwbGF5OiJibG9jayJ9fSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJtb2RhbC1kaWFsb2ciLHJvbGU6ImRvY3VtZW50In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToibW9kYWwtY29udGVudCBib3JkZXItbGVmdC1pbmZvIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToibW9kYWwtaGVhZGVyIn0scy5hLmNyZWF0ZUVsZW1lbnQoImg1Iix7Y2xhc3NOYW1lOiJtb2RhbC10aXRsZSJ9LCJJbml0aWFsaXppbmcgcHJvamVjdC4uLiIpKSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJtb2RhbC1ib2R5In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicHJvZ3Jlc3MifSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLXN0cmlwZWQgcHJvZ3Jlc3MtYmFyLWFuaW1hdGVkIixyb2xlOiJwcm9ncmVzc2JhciIsImFyaWEtdmFsdWVub3ciOiIxMDAiLCJhcmlhLXZhbHVlbWluIjoiMCIsImFyaWEtdmFsdWVtYXgiOiIxMDAiLHN0eWxlOnt3aWR0aDoiMTAwJSJ9fSkpKSkpKTtyZXR1cm4gcy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxzLmEuY3JlYXRlRWxlbWVudCgibmF2Iix7Y2xhc3NOYW1lOiJuYXZiYXIgbmF2YmFyLWV4cGFuZCBuYXZiYXItbGlnaHQgYmctd2hpdGUgdG9wYmFyIG1iLTQgc3RhdGljLXRvcCBzaGFkb3cifSxzLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7aWQ6InNpZGViYXJUb2dnbGVUb3AiLGNsYXNzTmFtZToiYnRuIGJ0bi1saW5rIGQtbWQtbm9uZSByb3VuZGVkLWNpcmNsZSBtci0zIn0scy5hLmNyZWF0ZUVsZW1lbnQoImkiLHtjbGFzc05hbWU6ImZhIGZhLWJhcnMifSkpLHMuYS5jcmVhdGVFbGVtZW50KCJ1bCIse2NsYXNzTmFtZToibmF2YmFyLW5hdiBtbC1hdXRvIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToidG9wYmFyLWRpdmlkZXIgZC1ub25lIGQtc20tYmxvY2sifSkscy5hLmNyZWF0ZUVsZW1lbnQoImxpIix7Y2xhc3NOYW1lOiJuYXYtaXRlbSBuby1hcnJvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJtci0yIGQtbm9uZSBkLWxnLWlubGluZSB0ZXh0LWdyYXktNjAwIHNtYWxsIn0sIkNyZWF0ZSBQcm9qZWN0IikpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyLWZsdWlkIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZC1zbS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImgxIix7Y2xhc3NOYW1lOiJoMyBtYi0wIHRleHQtZ3JheS04MDAifSwiQ3JlYXRlIGEgbmV3IHByb2plY3QiKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZCBib3JkZXItbGVmdC1pbmZvIHNoYWRvdyBoLTEwMCBweS0yIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZC1ib2R5In0scy5hLmNyZWF0ZUVsZW1lbnQoImZvcm0iLG51bGwscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6InByb2plY3ROYW1lIn0sIlByb2plY3QgTmFtZSIpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGNsYXNzTmFtZToiZm9ybS1jb250cm9sIixpZDoicHJvamVjdE5hbWUiLG9uQ2hhbmdlOnRoaXMuaGFuZGxlUHJvamVjdE5hbWV9KSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6InByb2plY3REZXNjcmlwdGlvbiJ9LCJQcm9qZWN0IERlc2NyaXB0aW9uIikscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToicHJvamVjdERlc2NyaXB0aW9uIixjbGFzc05hbWU6ImZvcm0tY29udHJvbCIsaWQ6InByb2plY3REZXNjcmlwdGlvbiIsb25DaGFuZ2U6dGhpcy5oYW5kbGVQcm9qZWN0RGVzY3JpcHRpb259KSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6InByb2plY3RBZGRyZXNzIn0sIlByb2plY3QgQWRkcmVzcyIpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InByb2plY3RBZGRyZXNzIixjbGFzc05hbWU6ImZvcm0tY29udHJvbCIsdmFsdWU6dGhpcy5zdGF0ZS5hZGRyZXNzLHJlYWRPbmx5OiEwfSkpLGUscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse2NsYXNzTmFtZToiYnRuIGJ0bi1wcmltYXJ5IG1yLTIgbWItMiIsb25DbGljazp0aGlzLmhhbmRsZUZ1bmRBZGRyZXNzfSwiQ3JlYXRlIFByb2plY3QiKSxzLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7Y2xhc3NOYW1lOiJidG4gYnRuLXNlY29uZGFyeSBtci0yIG1iLTIiLG9uQ2xpY2s6dGhpcy5oYW5kbGVBZGRBZGRyZXNzfSwiQWRkIEFkZHJlc3MiKSx0aGlzLnN0YXRlLnNob3dQcm9ncmVzc2Jhcj9uOnMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwpKSkpKSkpKX19XSksdH0ocy5hLkNvbXBvbmVudCksdj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3ZhciBhO3JldHVybiBPYmplY3QoaS5hKSh0aGlzLHQpLChhPU9iamVjdChvLmEpKHRoaXMsT2JqZWN0KGQuYSkodCkuY2FsbCh0aGlzLGUpKSkuc3RhdGU9e3Jpc2tzOltdLHByb2plY3RBZGRyZXNzOiIifSxhLm5vZGU9YS5wcm9wcy5ub2RlLGEuaGFuZGxlUHJvamVjdEFkZHJlc3NDaGFuZ2U9YS5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZURlc2NyaXB0aW9uQ2hhbmdlPWEuaGFuZGxlRGVzY3JpcHRpb25DaGFuZ2UuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVOYW1lQ2hhbmdlPWEuaGFuZGxlTmFtZUNoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmRlbGV0ZVJpc2tDbGlja2VkPWEuZGVsZXRlUmlza0NsaWNrZWQuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVTdG9yYWdlT2ZSaXNrcz1hLmhhbmRsZVN0b3JhZ2VPZlJpc2tzLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlQWRkUmlzaz1hLmhhbmRsZUFkZFJpc2suYmluZChPYmplY3QobS5hKShhKSksYX1yZXR1cm4gT2JqZWN0KGguYSkodCxlKSxPYmplY3QoYy5hKSh0LFt7a2V5OiJoYW5kbGVBZGRSaXNrIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUucmlza3M7ZS5wdXNoKHtuYW1lOiIiLGRlc2NyaXB0aW9uOiIifSksdGhpcy5zZXRTdGF0ZSh7cmlza3M6ZX0pfX0se2tleToiaGFuZGxlU3RvcmFnZU9mUmlza3MiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD10aGlzLnN0YXRlLnJpc2tzLGE9dGhpcyxuPVtdLHM9ZnVuY3Rpb24oKXt2YXIgYT17dHlwZToxNixkYXRhOntmZWU6e3Rva2VuczouMDUsYXNzZXRJZDoiV0FWRVMifSxkQXBwOmUuc3RhdGUucHJvamVjdEFkZHJlc3MsY2FsbDp7ZnVuY3Rpb246ImFkZENvbnNvbGlkYXRlZFJpc2siLGFyZ3M6W3t0eXBlOiJzdHJpbmciLHZhbHVlOnRbcl0ubmFtZX0se3R5cGU6InN0cmluZyIsdmFsdWU6dFtyXS5kZXNjcmlwdGlvbn1dfSxwYXltZW50OltdfX07bi5wdXNoKGEpO3ZhciBzPWU7Nz09PW4ubGVuZ3RoJiYod2luZG93LldhdmVzS2VlcGVyLnNpZ25UcmFuc2FjdGlvblBhY2thZ2UobikudGhlbihmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylzLmJyb2FkY2FzdFRyYW5zYWN0aW9uKGVbdF0sZnVuY3Rpb24oZSl7Y29uc29sZS5sb2coZSl9KX0pLG49W10pfSxyPTA7cjx0Lmxlbmd0aDtyKyspcygpO24ubGVuZ3RoPjAmJndpbmRvdy5XYXZlc0tlZXBlci5zaWduVHJhbnNhY3Rpb25QYWNrYWdlKG4pLnRoZW4oZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspYS5icm9hZGNhc3RUcmFuc2FjdGlvbihlW3RdLGZ1bmN0aW9uKGUpe2NvbnNvbGUubG9nKGUpfSl9KX19LHtrZXk6ImJyb2FkY2FzdFRyYW5zYWN0aW9uIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBhPW5ldyBYTUxIdHRwUmVxdWVzdDthLm9wZW4oIlBPU1QiLHRoaXMubm9kZSsiL3RyYW5zYWN0aW9ucy9icm9hZGNhc3QiLCEwKSxhLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsImFwcGxpY2F0aW9uL2pzb24iKSxhLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsImFwcGxpY2F0aW9uL2pzb24iKSxhLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3QodGhpcy5yZXNwb25zZSl9LGEuc2VuZChlKX19LHtrZXk6ImhhbmRsZVByb2plY3RBZGRyZXNzQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC52YWx1ZSxhPXRoaXMsbj1bXTtmZXRjaCh0aGlzLm5vZGUrIi9hZGRyZXNzZXMvZGF0YS8iK3QpLnRoZW4oZnVuY3Rpb24oZSl7ZS5qc29uKCkudGhlbihmdW5jdGlvbihlKXtlLmZvckVhY2goZnVuY3Rpb24odCl7aWYodC5rZXkuZW5kc1dpdGgoIl9uYW1lIikpe3ZhciBhPXQua2V5LnN1YnN0cmluZygwLHQua2V5LmluZGV4T2YoIl8iKSkscz10LnZhbHVlO2UuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlLmtleT09PWErIl9kZXNjcmlwdGlvbiIpe3ZhciB0PWUudmFsdWUscj17bmFtZTpzLGRlc2NyaXB0aW9uOnR9O24ucHVzaChyKX19KX19KSxhLnNldFN0YXRlKHtyaXNrczpuLHByb2plY3RBZGRyZXNzOnR9KX0pfSkuY2F0Y2goZnVuY3Rpb24oZSl7Y29uc29sZS5sb2coZSl9KX19LHtrZXk6ImhhbmRsZURlc2NyaXB0aW9uQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC5pZCxhPWUudGFyZ2V0LnZhbHVlLG49dGhpcy5zdGF0ZS5yaXNrcztuW3RdLmRlc2NyaXB0aW9uPWEsdGhpcy5zZXRTdGF0ZSh7cmlza3M6bn0pfX0se2tleToiaGFuZGxlTmFtZUNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQuaWQsYT1lLnRhcmdldC52YWx1ZSxuPXRoaXMuc3RhdGUucmlza3M7blt0XS5uYW1lPWEsdGhpcy5zZXRTdGF0ZSh7cmlza3M6bn0pfX0se2tleToiZGVsZXRlUmlza0NsaWNrZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LmlkLGE9dGhpcy5zdGF0ZS5yaXNrczthLnNwbGljZSh0LDEpLHRoaXMuc2V0U3RhdGUoe3Jpc2tzOmF9KX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8dGhpcy5zdGF0ZS5yaXNrcy5sZW5ndGg7dCsrKXt2YXIgYT1zLmEuY3JlYXRlRWxlbWVudCgidHIiLHtrZXk6dH0scy5hLmNyZWF0ZUVsZW1lbnQoInRkIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGlkOnQsdmFsdWU6dGhpcy5zdGF0ZS5yaXNrc1t0XS5uYW1lLG9uQ2hhbmdlOnRoaXMuaGFuZGxlTmFtZUNoYW5nZX0pKSxzLmEuY3JlYXRlRWxlbWVudCgidGQiLG51bGwscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToidGV4dCIsaWQ6dCx2YWx1ZTp0aGlzLnN0YXRlLnJpc2tzW3RdLmRlc2NyaXB0aW9uLG9uQ2hhbmdlOnRoaXMuaGFuZGxlRGVzY3JpcHRpb25DaGFuZ2V9KSkscy5hLmNyZWF0ZUVsZW1lbnQoInRkIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToiYnRuIGJ0bi1kYW5nZXIiLGlkOnQsb25DbGljazp0aGlzLmRlbGV0ZVJpc2tDbGlja2VkfSwiRGVsZXRlIFJpc2siKSkpO2UucHVzaChhKX1yZXR1cm4gcy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxzLmEuY3JlYXRlRWxlbWVudCgibmF2Iix7Y2xhc3NOYW1lOiJuYXZiYXIgbmF2YmFyLWV4cGFuZCBuYXZiYXItbGlnaHQgYmctd2hpdGUgdG9wYmFyIG1iLTQgc3RhdGljLXRvcCBzaGFkb3cifSxzLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7aWQ6InNpZGViYXJUb2dnbGVUb3AiLGNsYXNzTmFtZToiYnRuIGJ0bi1saW5rIGQtbWQtbm9uZSByb3VuZGVkLWNpcmNsZSBtci0zIn0scy5hLmNyZWF0ZUVsZW1lbnQoImkiLHtjbGFzc05hbWU6ImZhIGZhLWJhcnMifSkpLHMuYS5jcmVhdGVFbGVtZW50KCJ1bCIse2NsYXNzTmFtZToibmF2YmFyLW5hdiBtbC1hdXRvIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToidG9wYmFyLWRpdmlkZXIgZC1ub25lIGQtc20tYmxvY2sifSkscy5hLmNyZWF0ZUVsZW1lbnQoImxpIix7Y2xhc3NOYW1lOiJuYXYtaXRlbSBuby1hcnJvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJtci0yIGQtbm9uZSBkLWxnLWlubGluZSB0ZXh0LWdyYXktNjAwIHNtYWxsIn0sIkNvbnNvbGlkYXRlIFJpc2tzIikpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyLWZsdWlkIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZC1zbS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImgxIix7Y2xhc3NOYW1lOiJoMyBtYi0wIHRleHQtZ3JheS04MDAifSwiQ29uc29saWRhdGUgcmlza3MiKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZCBib3JkZXItbGVmdC1pbmZvIHNoYWRvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImNhcmQtYm9keSJ9LHMuYS5jcmVhdGVFbGVtZW50KCJmb3JtIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImZvcm0tZ3JvdXAifSxzLmEuY3JlYXRlRWxlbWVudCgibGFiZWwiLHtodG1sRm9yOiJleGFtcGxlSW5wdXRFbWFpbDEifSwiUHJvamVjdCBBZGRyZXNzIikscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToidGV4dCIsY2xhc3NOYW1lOiJmb3JtLWNvbnRyb2wiLGlkOiJwcm9qZWN0QWRkcmVzcyIsb25DaGFuZ2U6dGhpcy5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZX0pKSkscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJidG4gYnRuLXByaW1hcnkgbWItMiBtci0yIixvbkNsaWNrOnRoaXMuaGFuZGxlQWRkUmlza30sIkFkZCBSaXNrIikscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJidG4gYnRuLXNlY29uZGFyeSBtYi0yIixvbkNsaWNrOnRoaXMuaGFuZGxlU3RvcmFnZU9mUmlza3N9LCJTdG9yZSBDb25zb2xpZGF0ZWQgUmlza3MiKSkpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoInRhYmxlIix7Y2xhc3NOYW1lOiJ0YWJsZSB0YWJsZS1zdHJpcGVkIGJvcmRlci1sZWZ0LWluZm8gc2hhZG93In0scy5hLmNyZWF0ZUVsZW1lbnQoInRoZWFkIixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJ0ciIsbnVsbCxzLmEuY3JlYXRlRWxlbWVudCgidGgiLG51bGwsIk5hbWUiKSxzLmEuY3JlYXRlRWxlbWVudCgidGgiLG51bGwsIkRlc2NyaXB0aW9uIikscy5hLmNyZWF0ZUVsZW1lbnQoInRoIixudWxsLCJBY3Rpb24iKSkpLHMuYS5jcmVhdGVFbGVtZW50KCJ0Ym9keSIsbnVsbCxlKSkpKSkpfX1dKSx0fShzLmEuQ29tcG9uZW50KSxmPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7dmFyIGE7cmV0dXJuIE9iamVjdChpLmEpKHRoaXMsdCksKGE9T2JqZWN0KG8uYSkodGhpcyxPYmplY3QoZC5hKSh0KS5jYWxsKHRoaXMsZSkpKS5zdGF0ZT17cmlza3M6W10scHJvamVjdEFkZHJlc3M6IiJ9LGEubm9kZT1hLnByb3BzLm5vZGUsYS5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZT1hLmhhbmRsZVByb2plY3RBZGRyZXNzQ2hhbmdlLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuYWRkUmlza0NsaWNrZWQ9YS5hZGRSaXNrQ2xpY2tlZC5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZU5hbWVDaGFuZ2U9YS5oYW5kbGVOYW1lQ2hhbmdlLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGEuaGFuZGxlRGVzY3JpcHRpb25DaGFuZ2U9YS5oYW5kbGVEZXNjcmlwdGlvbkNoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLnN0b3JlUmlza3NDbGlja2VkPWEuc3RvcmVSaXNrc0NsaWNrZWQuYmluZChPYmplY3QobS5hKShhKSksYX1yZXR1cm4gT2JqZWN0KGguYSkodCxlKSxPYmplY3QoYy5hKSh0LFt7a2V5OiJoYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5zZXRTdGF0ZSh7cHJvamVjdEFkZHJlc3M6ZS50YXJnZXQudmFsdWV9KX19LHtrZXk6ImFkZFJpc2tDbGlja2VkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUucmlza3M7ZS5sZW5ndGg8Nz8oZS5wdXNoKHtuYW1lOiIiLGRlc2NyaXB0aW9uOiIifSksdGhpcy5zZXRTdGF0ZSh7cmlza3M6ZX0pKTphbGVydCgiT25seSBzZXZlbiByaXNrcyBhbGxvd2VkIGF0IG9uY2UhIil9fSx7a2V5OiJoYW5kbGVOYW1lQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC5pZCxhPWUudGFyZ2V0LnZhbHVlLG49dGhpcy5zdGF0ZS5yaXNrcztuW3RdLm5hbWU9YSx0aGlzLnNldFN0YXRlKHtyaXNrczpufSl9fSx7a2V5OiJoYW5kbGVEZXNjcmlwdGlvbkNoYW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQuaWQsYT1lLnRhcmdldC52YWx1ZSxuPXRoaXMuc3RhdGUucmlza3M7blt0XS5kZXNjcmlwdGlvbj1hLHRoaXMuc2V0U3RhdGUoe3Jpc2tzOm59KX19LHtrZXk6InN0b3JlUmlza3NDbGlja2VkIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLnN0YXRlLnJpc2tzLHQ9W10sYT0wO2E8ZS5sZW5ndGg7YSsrKXt2YXIgbj17dHlwZToxNixkYXRhOntmZWU6e3Rva2VuczouMDUsYXNzZXRJZDoiV0FWRVMifSxkQXBwOnRoaXMuc3RhdGUucHJvamVjdEFkZHJlc3MsY2FsbDp7ZnVuY3Rpb246ImFkZFJpc2siLGFyZ3M6W3t0eXBlOiJzdHJpbmciLHZhbHVlOmVbYV0ubmFtZX0se3R5cGU6InN0cmluZyIsdmFsdWU6ZVthXS5kZXNjcmlwdGlvbn1dfSxwYXltZW50OltdfX07dC5wdXNoKG4pfXZhciBzPXRoaXM7d2luZG93LldhdmVzS2VlcGVyLnNpZ25UcmFuc2FjdGlvblBhY2thZ2UodCkudGhlbihmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylzLmJyb2FkY2FzdFRyYW5zYWN0aW9uKGVbdF0sZnVuY3Rpb24oZSl7Y29uc29sZS5sb2coZSl9KX0pfX0se2tleToiYnJvYWRjYXN0VHJhbnNhY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIGE9bmV3IFhNTEh0dHBSZXF1ZXN0O2Eub3BlbigiUE9TVCIsdGhpcy5ub2RlKyIvdHJhbnNhY3Rpb25zL2Jyb2FkY2FzdCIsITApLGEuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwiYXBwbGljYXRpb24vanNvbiIpLGEuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IiwiYXBwbGljYXRpb24vanNvbiIpLGEub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7dCh0aGlzLnJlc3BvbnNlKX0sYS5zZW5kKGUpfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDx0aGlzLnN0YXRlLnJpc2tzLmxlbmd0aDt0Kyspe3ZhciBhPXMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InJvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImNvbC14bC02IGNvbC1tZC02IG1iLTQifSxzLmEuY3JlYXRlRWxlbWVudCgibGFiZWwiLG51bGwsIk5hbWUiKSxzLmEuY3JlYXRlRWxlbWVudCgiYnIiLG51bGwpLHMuYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGNsYXNzTmFtZToiZm9ybS1jb250cm9sIixpZDp0LG9uQ2hhbmdlOnRoaXMuaGFuZGxlTmFtZUNoYW5nZX0pKSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJjb2wteGwtNiBjb2wtbWQtNiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImxhYmVsIixudWxsLCJEZXNjcmlwdGlvbiIpLHMuYS5jcmVhdGVFbGVtZW50KCJiciIsbnVsbCkscy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToidGV4dCIsY2xhc3NOYW1lOiJmb3JtLWNvbnRyb2wiLGlkOnQsb25DaGFuZ2U6dGhpcy5oYW5kbGVEZXNjcmlwdGlvbkNoYW5nZX0pKSk7ZS5wdXNoKGEpfXJldHVybiBzLmEuY3JlYXRlRWxlbWVudCgiZGl2IixudWxsLHMuYS5jcmVhdGVFbGVtZW50KCJuYXYiLHtjbGFzc05hbWU6Im5hdmJhciBuYXZiYXItZXhwYW5kIG5hdmJhci1saWdodCBiZy13aGl0ZSB0b3BiYXIgbWItNCBzdGF0aWMtdG9wIHNoYWRvdyJ9LHMuYS5jcmVhdGVFbGVtZW50KCJidXR0b24iLHtpZDoic2lkZWJhclRvZ2dsZVRvcCIsY2xhc3NOYW1lOiJidG4gYnRuLWxpbmsgZC1tZC1ub25lIHJvdW5kZWQtY2lyY2xlIG1yLTMifSxzLmEuY3JlYXRlRWxlbWVudCgiaSIse2NsYXNzTmFtZToiZmEgZmEtYmFycyJ9KSkscy5hLmNyZWF0ZUVsZW1lbnQoInVsIix7Y2xhc3NOYW1lOiJuYXZiYXItbmF2IG1sLWF1dG8ifSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJ0b3BiYXItZGl2aWRlciBkLW5vbmUgZC1zbS1ibG9jayJ9KSxzLmEuY3JlYXRlRWxlbWVudCgibGkiLHtjbGFzc05hbWU6Im5hdi1pdGVtIG5vLWFycm93In0scy5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6Im1yLTIgZC1ub25lIGQtbGctaW5saW5lIHRleHQtZ3JheS02MDAgc21hbGwifSwiQWRkIFJpc2tzIikpKSkscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyLWZsdWlkIn0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sLXhsLTEyIGNvbC1tZC0xMiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZC1zbS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi00In0scy5hLmNyZWF0ZUVsZW1lbnQoImgxIix7Y2xhc3NOYW1lOiJoMyBtYi0wIHRleHQtZ3JheS04MDAifSwiQWRkIGEgcmlzayIpKSxzLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJjYXJkIGJvcmRlci1sZWZ0LWluZm8gc2hhZG93In0scy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY2FyZC1ib2R5In0scy5hLmNyZWF0ZUVsZW1lbnQoImZvcm0iLG51bGwscy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiZm9ybS1ncm91cCJ9LHMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2h0bWxGb3I6ImV4YW1wbGVJbnB1dEVtYWlsMSJ9LCJQcm9qZWN0IEFkZHJlc3MiKSxzLmEuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHt0eXBlOiJ0ZXh0IixjbGFzc05hbWU6ImZvcm0tY29udHJvbCIsaWQ6InByb2plY3RBZGRyZXNzIixvbkNoYW5nZTp0aGlzLmhhbmRsZVByb2plY3RBZGRyZXNzQ2hhbmdlfSkpLGUpLHMuYS5jcmVhdGVFbGVtZW50KCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToiYnRuIGJ0bi1wcmltYXJ5IG1yLTIiLG9uQ2xpY2s6dGhpcy5hZGRSaXNrQ2xpY2tlZH0sIkFkZCBSaXNrIikscy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJidG4gYnRuLXNlY29uZGFyeSIsb25DbGljazp0aGlzLnN0b3JlUmlza3NDbGlja2VkfSwiU3RvcmUgUmlza3MiKSkpKSkpKX19XSksdH0ocy5hLkNvbXBvbmVudCksRT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3ZhciBhO3JldHVybiBPYmplY3QoaS5hKSh0aGlzLHQpLChhPU9iamVjdChvLmEpKHRoaXMsT2JqZWN0KGQuYSkodCkuY2FsbCh0aGlzLGUpKSkuc3RhdGU9e3Jpc2tzOltdLHByb2plY3RBZGRyZXNzOiIifSxhLm5vZGU9YS5wcm9wcy5ub2RlLGEuaGFuZGxlUHJvamVjdEFkZHJlc3NDaGFuZ2U9YS5oYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZS5iaW5kKE9iamVjdChtLmEpKGEpKSxhLmhhbmRsZVByb2JhYmlsaXR5Q2hhbmdlPWEuaGFuZGxlUHJvYmFiaWxpdHlDaGFuZ2UuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVJbXBhY3RDaGFuZ2U9YS5oYW5kbGVJbXBhY3RDaGFuZ2UuYmluZChPYmplY3QobS5hKShhKSksYS5oYW5kbGVTdG9yYWdlT2ZFdmFsdWF0aW9ucz1hLmhhbmRsZVN0b3JhZ2VPZkV2YWx1YXRpb25zLmJpbmQoT2JqZWN0KG0uYSkoYSkpLGF9cmV0dXJuIE9iamVjdChoLmEpKHQsZSksT2JqZWN0KGMuYSkodCxbe2tleToiaGFuZGxlUHJvYmFiaWxpdHlDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LmlkLGE9ZS50YXJnZXQudmFsdWUsbj10aGlzLnN0YXRlLnJpc2tzO25bdF0ucHJvYmFiaWxpdHk9YSx0aGlzLnNldFN0YXRlKHtyaXNrczpufSl9fSx7a2V5OiJoYW5kbGVJbXBhY3RDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LmlkLGE9ZS50YXJnZXQudmFsdWUsbj10aGlzLnN0YXRlLnJpc2tzO25bdF0uaW1wYWN0PWEsdGhpcy5zZXRTdGF0ZSh7cmlza3M6bn0pfX0se2tleToiaGFuZGxlU3RvcmFnZU9mRXZhbHVhdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuc3RhdGUucmlza3MsdD10aGlzLGE9W10sbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcz17dHlwZToxNixkYXRhOntmZWU6e3Rva2VuczouMDUsYXNzZXRJZDoiV0FWRVMifSxkQXBwOnRoaXMuc3RhdGUucHJvamVjdEFkZHJlc3MsY2FsbDp7ZnVuY3Rpb246ImV2YWx1YXRlUmlzayIsYXJnczpbe3R5cGU6InN0cmluZyIsdmFsdWU6ZVtuXS5pZH0se3R5cGU6ImludGVnZXIiLHZhbHVlOmVbbl0ucHJvYmFiaWxpdHl9LHt0eXBlOiJpbnRlZ2VyIix2YWx1ZTplW25dLmltcGFjdH1dfSxwYXltZW50OltdfX07YS5wdXNoKHMpLDc9PT1hLmxlbmd0aCYmKHdpbmRvdy5XYXZlc0tlZXBlci5zaWduVHJhbnNhY3Rpb25QYWNrYWdlKGEpLnRoZW4oZnVuY3Rpb24oZSl7Zm9yKHZhciBhPTA7YTxlLmxlbmd0aDthKyspdC5icm9hZGNhc3RUcmFuc2FjdGlvbihlW2FdLGZ1bmN0aW9uKGUpe2NvbnNvbGUubG9nKGUpfSl9KSxhPVtdKX1hLmxlbmd0aD4wJiZ3aW5kb3cuV2F2ZXNLZWVwZXIuc2lnblRyYW5zYWN0aW9uUGFja2FnZShhKS50aGVuKGZ1bmN0aW9uKGUpe2Zvcih2YXIgYT0wO2E8ZS5sZW5ndGg7YSsrKXQuYnJvYWRjYXN0VHJhbnNhY3Rpb24oZVthXSxmdW5jdGlvbihlKXtjb25zb2xlLmxvZyhlKX0pfSl9fSx7a2V5OiJicm9hZGNhc3RUcmFuc2FjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7YS5vcGVuKCJQT1NUIix0aGlzLm5vZGUrIi90cmFuc2FjdGlvbnMvYnJvYWRjYXN0IiwhMCksYS5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLCJhcHBsaWNhdGlvbi9qc29uIiksYS5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLCJhcHBsaWNhdGlvbi9qc29uIiksYS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXt0KHRoaXMucmVzcG9uc2UpfSxhLnNlbmQoZSl9fSx7a2V5OiJoYW5kbGVQcm9qZWN0QWRkcmVzc0NoYW5nZSIsdg=="
}

github/deemru/w8io/026f985 
3.73 ms