UNPKG

ngscopestorage

Version:

An AngularJS module that binds $scope to the browser storage

3 lines (2 loc) 13.6 kB
!function(t,e){"use strict";function n(){function n(t){if("object"!=typeof t)throw new TypeError(r+"- set_scope must get a object.");if(!t&&!e.isDefined(t))throw new SyntaxError(r+"- set_scope must get a value");g=t}function o(t){if("string"!=typeof t)throw new TypeError(r+"- set_ctrlName must get a string.");if(!t&&!e.isDefined(t))throw new SyntaxError(r+"- set_ctrlName must get a value");p=t}function i(t){if("string"!=typeof t)throw new TypeError(r+"- set_prefix must get a string.");if(""===t)throw new SyntaxError(r+"- set_prefix must`nt get an empty string");c=t}function s(e){if("string"!=typeof e)throw new TypeError(r+"- set_storageType must get a string.");if(""===e)throw new SyntaxError(r+"- set_storageType must`nt get an empty string");if("localstorage"!==e&&"sessionStorage"!==e)throw new SyntaxError(r+"- set_storageType got an invalid string");u=e,m=t[u]}function a(t){if("string"!=typeof t)throw new TypeError(r+"- set_onReload must get a string.");if(""===t)throw new SyntaxError(r+"- set_onReload must`nt get an empty string");if("save"!==t&&"empty"!==t)throw new SyntaxError(r+"- set_onReload got an invalid string");y=t}function f(t){for(var e in t)(-1!=e.indexOf(c)||e.indexOf(p))&&t.removeItem(e)}var g=null,p=null,c="vms",u="localStorage",y="empty",m=t[u];this.$get=[function(){function t(){var t;"empty"==y?(f(m),t=function(t){u(t)}):t=function(t){r(t)},w.prefix=c+":"+p+"::",Object.observe(w,t)}function r(t){t.forEach(function(t){var e=t.name;g[e]=t.object[e],"add"==t.type?m.getItem(c+":"+p+"::"+e)||m.setItem(c+":"+p+"::"+e,g[e]):m.setItem(c+":"+p+"::"+e,g[e])}),g.$apply()}function u(t){t.forEach(function(t){var e=t.name;g[e]=t.object[e],m.setItem(c+":"+p+"::"+e,g[e])}),g.$apply()}var w={};return w.config=function(r){n(r.scope),o(r.ctrlName),e.isDefined(r.prefix)&&i(r.prefix),e.isDefined(r.storageType)&&s(r.storageType),e.isDefined(r.onReload)&&a(r.onReload),t()},w}]}var r="ngScopeStorage",o=e.module("ngScopeStorage",[]);o.provider("$vms",n)}(window,window.angular); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5nc2NvcGVzdG9yYWdlLmpzIl0sIm5hbWVzIjpbIndpbmRvdyIsImFuZ3VsYXIiLCJfdm1zIiwic2V0X3Njb3BlIiwic2NvcGUiLCJUeXBlRXJyb3IiLCJNT0RVTEVfTkFNRSIsImlzRGVmaW5lZCIsIlN5bnRheEVycm9yIiwiX3Njb3BlIiwic2V0X2N0cmxOYW1lIiwiY3RybCIsIl9jdHJsTmFtZSIsInNldF9wcmVmaXgiLCJwcmUiLCJfcHJlZml4Iiwic2V0X3N0b3JhZ2VUeXBlIiwic3QiLCJfc3RvcmFnZVR5cGUiLCJfc3RvcmFnZSIsInNldF9vblJlbG9hZCIsIm9uciIsIl9vblJlbG9hZCIsImNsZWFuX3N0b3JhZ2UiLCJlIiwiaW5kZXhPZiIsInJlbW92ZUl0ZW0iLCJ0aGlzIiwiJGdldCIsImluaXQiLCJoYW5kbGVyIiwiY2hhbmdlcyIsImVtcHR5X2JpbmRlciIsInNhdmVfYmluZGVyIiwiXyR2bXMiLCJwcmVmaXgiLCJPYmplY3QiLCJvYnNlcnZlIiwia2V5cyIsImZvckVhY2giLCJuYW1lIiwib2JqZWN0IiwidHlwZSIsImdldEl0ZW0iLCJzZXRJdGVtIiwiJGFwcGx5IiwiY29uZmlnIiwic2V0dGluZ3NPYmoiLCJjdHJsTmFtZSIsInN0b3JhZ2VUeXBlIiwib25SZWxvYWQiLCJhcHAiLCJtb2R1bGUiLCJwcm92aWRlciJdLCJtYXBwaW5ncyI6IkNBU0EsU0FBV0EsRUFBUUMsR0FDZixZQVFBLFNBQVNDLEtBZUwsUUFBU0MsR0FBVUMsR0FDZixHQUFxQixnQkFBVkEsR0FDUCxLQUFNLElBQUlDLFdBQVdDLEVBQWMsaUNBRXZDLEtBQUtGLElBQVVILEVBQVFNLFVBQVVILEdBQzdCLEtBQU0sSUFBSUksYUFBYUYsRUFBYywrQkFFekNHLEdBQVNMLEVBR2IsUUFBU00sR0FBYUMsR0FDbEIsR0FBb0IsZ0JBQVRBLEdBQ1AsS0FBTSxJQUFJTixXQUFXQyxFQUFjLG9DQUV2QyxLQUFLSyxJQUFTVixFQUFRTSxVQUFVSSxHQUM1QixLQUFNLElBQUlILGFBQWFGLEVBQWMsa0NBRXpDTSxHQUFZRCxFQUdoQixRQUFTRSxHQUFXQyxHQUNoQixHQUFtQixnQkFBUkEsR0FDUCxLQUFNLElBQUlULFdBQVdDLEVBQWMsa0NBRXZDLElBQVksS0FBUlEsRUFDQSxLQUFNLElBQUlOLGFBQWFGLEVBQWMsMkNBRXpDUyxHQUFVRCxFQUdkLFFBQVNFLEdBQWdCQyxHQUNyQixHQUFrQixnQkFBUEEsR0FDUCxLQUFNLElBQUlaLFdBQVdDLEVBQWMsdUNBRXZDLElBQVcsS0FBUFcsRUFDQSxLQUFNLElBQUlULGFBQWFGLEVBQWMsZ0RBRXpDLElBQVUsaUJBQVBXLEdBQWdDLG1CQUFQQSxFQUN4QixLQUFNLElBQUlULGFBQWFGLEVBQWMsMENBRXpDWSxHQUFlRCxFQUNmRSxFQUFXbkIsRUFBT2tCLEdBR3RCLFFBQVNFLEdBQWFDLEdBQ2xCLEdBQW1CLGdCQUFSQSxHQUNQLEtBQU0sSUFBSWhCLFdBQVdDLEVBQWMsb0NBRXZDLElBQVksS0FBUmUsRUFDQSxLQUFNLElBQUliLGFBQWFGLEVBQWMsNkNBRXpDLElBQVcsU0FBUmUsR0FBMEIsVUFBUkEsRUFDakIsS0FBTSxJQUFJYixhQUFhRixFQUFjLHVDQUV6Q2dCLEdBQVlELEVBS2hCLFFBQVNFLEdBQWNKLEdBQ25CLElBQUssR0FBSUssS0FBS0wsSUFFZSxJQUF0QkssRUFBRUMsUUFBUVYsSUFBa0JTLEVBQUVDLFFBQVFiLEtBQ3JDTyxFQUFTTyxXQUFXRixHQTNFaEMsR0FBSWYsR0FBUyxLQUNURyxFQUFZLEtBR1pHLEVBQVUsTUFDVkcsRUFBZSxlQUNmSSxFQUFZLFFBR1pILEVBQVduQixFQUFPa0IsRUF1RXRCUyxNQUFLQyxNQUFRLFdBZ0JULFFBQVNDLEtBRUwsR0FBSUMsRUFFWSxVQUFiUixHQUNDQyxFQUFjSixHQUNkVyxFQUFVLFNBQVNDLEdBQVlDLEVBQWFELEtBRzVDRCxFQUFVLFNBQVNDLEdBQVlFLEVBQVlGLElBRy9DRyxFQUFNQyxPQUFRcEIsRUFBUSxJQUFJSCxFQUFVLEtBQ3BDd0IsT0FBT0MsUUFBUUgsRUFBTUosR0FHekIsUUFBU0csR0FBYUssR0FFbEJBLEVBQUtDLFFBQVEsU0FBVWYsR0FDbkIsR0FBSWdCLEdBQU9oQixFQUFFZ0IsSUFDYi9CLEdBQU8rQixHQUFRaEIsRUFBRWlCLE9BQU9ELEdBRVgsT0FBVmhCLEVBQUVrQixLQUNHdkIsRUFBU3dCLFFBQVE1QixFQUFRLElBQUlILEVBQVUsS0FBSzRCLElBQzVDckIsRUFBU3lCLFFBQVE3QixFQUFRLElBQUlILEVBQVUsS0FBSzRCLEVBQU8vQixFQUFPK0IsSUFJOURyQixFQUFTeUIsUUFBUTdCLEVBQVEsSUFBSUgsRUFBVSxLQUFLNEIsRUFBTy9CLEVBQU8rQixNQUdsRS9CLEVBQU9vQyxTQUVYLFFBQVNiLEdBQWNNLEdBRW5CQSxFQUFLQyxRQUFRLFNBQVVmLEdBQ25CLEdBQUlnQixHQUFPaEIsRUFBRWdCLElBQ2IvQixHQUFPK0IsR0FBUWhCLEVBQUVpQixPQUFPRCxHQUN4QnJCLEVBQVN5QixRQUFRN0IsRUFBUSxJQUFJSCxFQUFVLEtBQUs0QixFQUFPL0IsRUFBTytCLE1BRTlEL0IsRUFBT29DLFNBdERYLEdBQUlYLEtBeURKLE9BdkRBQSxHQUFNWSxPQUFTLFNBQVNDLEdBRXBCNUMsRUFBVTRDLEVBQVkzQyxPQUN0Qk0sRUFBYXFDLEVBQVlDLFVBRXRCL0MsRUFBUU0sVUFBVXdDLEVBQVlaLFNBQVN0QixFQUFXa0MsRUFBWVosUUFDOURsQyxFQUFRTSxVQUFVd0MsRUFBWUUsY0FBY2pDLEVBQWdCK0IsRUFBWUUsYUFDeEVoRCxFQUFRTSxVQUFVd0MsRUFBWUcsV0FBVzlCLEVBQWEyQixFQUFZRyxVQUVyRXJCLEtBOENHSyxJQXBKZixHQUFJNUIsR0FBYyxpQkFFZDZDLEVBQU1sRCxFQUFRbUQsT0FBTyxvQkFFekJELEdBQUlFLFNBQVMsT0FBUW5ELElBbUp0QkYsT0FBUUEsT0FBT0MiLCJmaWxlIjoibmdzY29wZXN0b3JhZ2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQW4gQW5ndWxhciBtb2R1bGUgdGhhdCBiaW5kcyAkc2NvcGUgdG8gdGhlIGJyb3dzZXIgc3RvcmFnZS5cclxuICogQG5hbWUgbmdTY29wZVN0b3JhZ2VcclxuICogQHZlcnNpb24gdjEuMC4wIC0gMDMtMTAtMjAxNVxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vcmFubm41MDUvbmdTY29wZVN0b3JhZ2VcclxuICogQGF1dGhvciByYW5ubjUwNSA8cmFubm41MDVAb3V0bG9vay5jb20+XHJcbiAqIEBsaWNlbnNlIE1JVCBMaWNlbnNlLCBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVFxyXG4gKi9cclxuXHJcbihmdW5jdGlvbiAod2luZG93LCBhbmd1bGFyKSB7XHJcbiAgICAndXNlIHN0cmljdCc7XHJcblxyXG4gICAgdmFyIE1PRFVMRV9OQU1FID0gJ25nU2NvcGVTdG9yYWdlJztcclxuXHJcbiAgICB2YXIgYXBwID0gYW5ndWxhci5tb2R1bGUoJ25nU2NvcGVTdG9yYWdlJywgW10pO1xyXG5cclxuICAgIGFwcC5wcm92aWRlcignJHZtcycsIF92bXMpO1xyXG5cclxuICAgIGZ1bmN0aW9uIF92bXMgKCkge1xyXG5cclxuICAgICAgICAvKnJlcXVpcmVkKi9cclxuICAgICAgICB2YXIgX3Njb3BlID0gbnVsbDtcclxuICAgICAgICB2YXIgX2N0cmxOYW1lID0gbnVsbDtcclxuXHJcbiAgICAgICAgLypvcHRpb25hbCovXHJcbiAgICAgICAgdmFyIF9wcmVmaXggPSAndm1zJztcclxuICAgICAgICB2YXIgX3N0b3JhZ2VUeXBlID0gJ2xvY2FsU3RvcmFnZSc7XHJcbiAgICAgICAgdmFyIF9vblJlbG9hZCA9ICdlbXB0eSc7XHJcblxyXG4gICAgICAgIC8qbW9kdWxlX3ZhcnMqL1xyXG4gICAgICAgIHZhciBfc3RvcmFnZSA9IHdpbmRvd1tfc3RvcmFnZVR5cGVdO1xyXG5cclxuICAgICAgICAvKnNldHRlcnMqL1xyXG4gICAgICAgIGZ1bmN0aW9uIHNldF9zY29wZShzY29wZSkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHNjb3BlICE9PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvciggTU9EVUxFX05BTUUgKyAnLSBzZXRfc2NvcGUgbXVzdCBnZXQgYSBvYmplY3QuJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFzY29wZSAmJiAhYW5ndWxhci5pc0RlZmluZWQoc2NvcGUpKXtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvciggTU9EVUxFX05BTUUgKyAnLSBzZXRfc2NvcGUgbXVzdCBnZXQgYSB2YWx1ZScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF9zY29wZSA9IHNjb3BlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZnVuY3Rpb24gc2V0X2N0cmxOYW1lKGN0cmwpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjdHJsICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvciggTU9EVUxFX05BTUUgKyAnLSBzZXRfY3RybE5hbWUgbXVzdCBnZXQgYSBzdHJpbmcuJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFjdHJsICYmICFhbmd1bGFyLmlzRGVmaW5lZChjdHJsKSl7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoIE1PRFVMRV9OQU1FICsgJy0gc2V0X2N0cmxOYW1lIG11c3QgZ2V0IGEgdmFsdWUnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBfY3RybE5hbWUgPSBjdHJsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZnVuY3Rpb24gc2V0X3ByZWZpeChwcmUpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcmUgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCBNT0RVTEVfTkFNRSArICctIHNldF9wcmVmaXggbXVzdCBnZXQgYSBzdHJpbmcuJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHByZSA9PT0gJycpe1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKCBNT0RVTEVfTkFNRSArICctIHNldF9wcmVmaXggbXVzdGBudCBnZXQgYW4gZW1wdHkgc3RyaW5nJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgX3ByZWZpeCA9IHByZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIHNldF9zdG9yYWdlVHlwZShzdCkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHN0ICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvciggTU9EVUxFX05BTUUgKyAnLSBzZXRfc3RvcmFnZVR5cGUgbXVzdCBnZXQgYSBzdHJpbmcuJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN0ID09PSAnJyl7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoIE1PRFVMRV9OQU1FICsgJy0gc2V0X3N0b3JhZ2VUeXBlIG11c3RgbnQgZ2V0IGFuIGVtcHR5IHN0cmluZycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHN0ICE9PSAnbG9jYWxzdG9yYWdlJyAmJiBzdCAhPT0gJ3Nlc3Npb25TdG9yYWdlJyl7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoIE1PRFVMRV9OQU1FICsgJy0gc2V0X3N0b3JhZ2VUeXBlIGdvdCBhbiBpbnZhbGlkIHN0cmluZycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF9zdG9yYWdlVHlwZSA9IHN0O1xyXG4gICAgICAgICAgICBfc3RvcmFnZSA9IHdpbmRvd1tfc3RvcmFnZVR5cGVdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZnVuY3Rpb24gc2V0X29uUmVsb2FkKG9ucikge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIG9uciAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIE1PRFVMRV9OQU1FICsgJy0gc2V0X29uUmVsb2FkIG11c3QgZ2V0IGEgc3RyaW5nLicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChvbnIgPT09ICcnKXtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvciggTU9EVUxFX05BTUUgKyAnLSBzZXRfb25SZWxvYWQgbXVzdGBudCBnZXQgYW4gZW1wdHkgc3RyaW5nJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYob25yICE9PSAnc2F2ZScgJiYgb25yICE9PSAnZW1wdHknKXtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvciggTU9EVUxFX05BTUUgKyAnLSBzZXRfb25SZWxvYWQgZ290IGFuIGludmFsaWQgc3RyaW5nJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgX29uUmVsb2FkID0gb25yO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIC8qY2xlYW5lcnMqL1xyXG4gICAgICAgIGZ1bmN0aW9uIGNsZWFuX3N0b3JhZ2UoX3N0b3JhZ2Upe1xyXG4gICAgICAgICAgICBmb3IgKHZhciBlIGluIF9zdG9yYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKGUpO1xyXG4gICAgICAgICAgICAgICAgaWYoZS5pbmRleE9mKF9wcmVmaXgpICE9IC0xIHx8IGUuaW5kZXhPZihfY3RybE5hbWUpKXtcclxuICAgICAgICAgICAgICAgICAgICBfc3RvcmFnZS5yZW1vdmVJdGVtKGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLiRnZXQgPSBbZnVuY3Rpb24gKCkge1xyXG5cclxuICAgICAgICAgICAgdmFyIF8kdm1zID0ge307XHJcblxyXG4gICAgICAgICAgICBfJHZtcy5jb25maWcgPSBmdW5jdGlvbihzZXR0aW5nc09iail7XHJcblxyXG4gICAgICAgICAgICAgICAgc2V0X3Njb3BlKHNldHRpbmdzT2JqLnNjb3BlKTtcclxuICAgICAgICAgICAgICAgIHNldF9jdHJsTmFtZShzZXR0aW5nc09iai5jdHJsTmFtZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYoYW5ndWxhci5pc0RlZmluZWQoc2V0dGluZ3NPYmoucHJlZml4KSl7c2V0X3ByZWZpeChzZXR0aW5nc09iai5wcmVmaXgpfVxyXG4gICAgICAgICAgICAgICAgaWYoYW5ndWxhci5pc0RlZmluZWQoc2V0dGluZ3NPYmouc3RvcmFnZVR5cGUpKXtzZXRfc3RvcmFnZVR5cGUoc2V0dGluZ3NPYmouc3RvcmFnZVR5cGUpfVxyXG4gICAgICAgICAgICAgICAgaWYoYW5ndWxhci5pc0RlZmluZWQoc2V0dGluZ3NPYmoub25SZWxvYWQpKXtzZXRfb25SZWxvYWQoc2V0dGluZ3NPYmoub25SZWxvYWQpfVxyXG5cclxuICAgICAgICAgICAgICAgIGluaXQoKTtcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIGluaXQoKXtcclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgaGFuZGxlcjtcclxuXHJcbiAgICAgICAgICAgICAgICBpZihfb25SZWxvYWQgPT0gJ2VtcHR5Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFuX3N0b3JhZ2UoX3N0b3JhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBmdW5jdGlvbihjaGFuZ2VzKSB7ICBlbXB0eV9iaW5kZXIoY2hhbmdlcyk7IH07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBmdW5jdGlvbihjaGFuZ2VzKSB7ICBzYXZlX2JpbmRlcihjaGFuZ2VzKTsgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBfJHZtcy5wcmVmaXggPV9wcmVmaXgrJzonK19jdHJsTmFtZSsnOjonO1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0Lm9ic2VydmUoXyR2bXMsaGFuZGxlcik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHNhdmVfYmluZGVyIChrZXlzKXtcclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJzYXZlXCIpO1xyXG4gICAgICAgICAgICAgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBlLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgX3Njb3BlW25hbWVdID0gZS5vYmplY3RbbmFtZV07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmKGUudHlwZSA9PSBcImFkZFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFfc3RvcmFnZS5nZXRJdGVtKF9wcmVmaXgrJzonK19jdHJsTmFtZSsnOjonK25hbWUpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zdG9yYWdlLnNldEl0ZW0oX3ByZWZpeCsnOicrX2N0cmxOYW1lKyc6OicrbmFtZSAsIF9zY29wZVtuYW1lXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3N0b3JhZ2Uuc2V0SXRlbShfcHJlZml4Kyc6JytfY3RybE5hbWUrJzo6JytuYW1lICwgX3Njb3BlW25hbWVdKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIF9zY29wZS4kYXBwbHkoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBlbXB0eV9iaW5kZXIgKGtleXMpe1xyXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImVtcHR5XCIpO1xyXG4gICAgICAgICAgICAgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBlLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgX3Njb3BlW25hbWVdID0gZS5vYmplY3RbbmFtZV07XHJcbiAgICAgICAgICAgICAgICAgICAgX3N0b3JhZ2Uuc2V0SXRlbShfcHJlZml4Kyc6JytfY3RybE5hbWUrJzo6JytuYW1lICwgX3Njb3BlW25hbWVdKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgX3Njb3BlLiRhcHBseSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gXyR2bXM7XHJcbiAgICAgICAgfV07XHJcbiAgICB9XHJcbn0pKHdpbmRvdywgd2luZG93LmFuZ3VsYXIpOyJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==