{"version":3,"sources":["webpack:///webpack/bootstrap a084bcf9b885f03081f5","webpack:///./src/components/app.module.js","webpack:///./src/assets/js/font-awesome.js","webpack:///./bower_components/angular/angular.min.js","webpack:///./bower_components/angular-cookies/angular-cookies.min.js","webpack:///./bower_components/ng-lodash/build/ng-lodash.min.js","webpack:///(webpack)/buildin/module.js","webpack:///./bower_components/angular-bootstrap/ui-bootstrap-tpls.js","webpack:///./bower_components/angular-bootstrap/ui-bootstrap.min.js","webpack:///./src/components/utf8base64.js","webpack:///./~/script-loader/addScript.js","webpack:///./src/components/utf8base64.js?39ef","webpack:///./src/config/config.js","webpack:///./src/components/services/thirdPartyHooks.js","webpack:///./src/components/services/utils.js","webpack:///./src/components/services/businessRules.js","webpack:///./src/components/services/tokenReplacement.js","webpack:///./src/components/filters/translate.js","webpack:///./src/components/loginwidget/login-widget-directive.js","webpack:///./src/components/loginwidget/login-widget-controller.js","webpack:///./src/components/sociallogin/sociallogin.js","webpack:///./src/components/services/http.js","webpack:///./src/components/services/api.js","webpack:///./src/components/services/fbapi.js","webpack:///./src/components/services/error.js","webpack:///./src/components/loginwidget/login-widget-directive.html"],"names":[],"mappings":"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AEH;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,6CAA6C,EAAE;AAC9E;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAiC,gBAAgB;;AAEjD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAiC,gBAAgB;;AAEjD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,QAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAoB,QAAQ;;AAE5B,4BAA2B,mCAAmC;AAC9D,2CAA0C,GAAG,oCAAoC;AACjF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,gBAAe,mBAAmB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA,sEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,wDAAwD;AACrF;AACA,YAAW,SAAS;AACpB,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,aAAa,qBAAqB;AACvD;AACA,qBAAoB,QAAQ;AAC5B,cAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC,yBAAyB;AACzD;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC,yBAAyB;AACzD;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;;AAGD;;AAEA;;AAEA;AACA;AACA,+DAA8D,EAAE;;AAEhE;;AAEA;AACA;AACA,mBAAkB,EAAE;AACpB,+BAA8B,oBAAoB;AAClD,MAAK;AACL;AACA,mBAAkB,EAAE;AACpB,+BAA8B,2BAA2B;AACzD,MAAK;AACL;AACA,mBAAkB,IAAI;AACtB,+BAA8B,oBAAoB;AAClD,MAAK;AACL;AACA;AACA,+BAA8B,4DAA4D;AAC1F,MAAK;AACL;AACA;AACA,+BAA8B,iEAAiE;AAC/F,MAAK;AACL;AACA;AACA,+BAA8B,wBAAwB;AACtD,MAAK;AACL;AACA;AACA,+BAA8B,wBAAwB;AACtD,MAAK;AACL;AACA,0BAAyB,EAAE,QAAQ,EAAE;AACrC,+BAA8B,oBAAoB;AAClD,MAAK;AACL;AACA,2BAA0B,EAAE,QAAQ,EAAE;AACtC,+BAA8B,oBAAoB;AAClD,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA,+BAA8B,qBAAqB;AACnD,MAAK;AACL;AACA;AACA,+BAA8B,qBAAqB;AACnD,MAAK;AACL;AACA;AACA,+BAA8B,qBAAqB;AACnD,MAAK;AACL;AACA;AACA,+BAA8B,qBAAqB;AACnD,MAAK;AACL;AACA;AACA,+BAA8B,uBAAuB;AACrD,MAAK;AACL;AACA;AACA,+BAA8B,uBAAuB;AACrD,MAAK;AACL;AACA;AACA,+BAA8B,4BAA4B;AAC1D,MAAK;AACL;AACA;AACA,+BAA8B,uBAAuB;AACrD,MAAK;AACL;AACA;AACA,+BAA8B,uBAAuB;AACrD,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,6BAA4B;AAC5B,yDAAwD,OAAO;AAC/D;AACA;AACA;AACA;;AAEA,mBAAkB,kCAAkC;AACpD;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,mBAAkB;AAClB;;AAEA,0CAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B;AAC5B;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,sBAAqB,+BAA+B;;AAEpD;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8KAA6K,wCAAwC;AACrN;;AAEA;AACA,gCAA+B,wCAAwC;AACvE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB;AACnB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wBAAuB,QAAQ;AAC/B;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA,wBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAA+B,oBAAoB;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gFAA+E;AAC/E;AACA,+BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA0B;AAC1B,UAAS;AACT,2BAA0B;AAC1B,UAAS;AACT,2BAA0B;AAC1B,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;;AAEA;AACA;AACA;AACA;;AAEA,wBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA0B;AAC1B,UAAS;AACT,2BAA0B;AAC1B,UAAS;AACT,2BAA0B;AAC1B,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB;AACnB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,gFAA+E,WAAW;AAC1F;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA0B;AAC1B,UAAS;AACT,2BAA0B;AAC1B,UAAS;AACT,2BAA0B;AAC1B,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA,yDAAwD,+BAA+B,EAAE;AACzF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,QAAO;AACP;AACA,2DAA0D,yBAAyB;AACnF;;AAEA;AACA;AACA;;AAEA;AACA,yDAAwD,yBAAyB;AACjF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,2EAA0E;AAC1E;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAqB,QAAQ;;AAE7B,2DAA0D,SAAS;;AAEnE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yCAAwC;AACxC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,gCAA+B,iBAAiB;AAChD;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;AACH;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,yBAAwB;AACxB;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;;AAEA;AACA,qBAAoB,gDAAgD;AACpE;AACA;AACA,QAAO;;AAEP;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA,4BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,4BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,4BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAY,yBAAyB,qCAAqC,wBAAwB;AAClG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe;AACf,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,gBAAe;AACf;AACA;AACA,cAAa;AACb;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;;AAEX,sBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,gBAAe;AACf;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA,6CAA4C;AAC5C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,kCAAkC,EAAE,cAAc,kCAAkC,EAAE;AACtH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;;AAEnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA,UAAS;AACT;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA,sBAAqB,8BAA8B;AACnD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA,0CAAyC;;AAEzC;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA,iBAAgB;AAChB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qCAAoC,mBAAmB;AACvD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA,iBAAgB;AAChB;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,qCAAoC,oBAAoB;AACxD,SAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC;;AAEjC;AACA;AACA;AACA;AACA,yCAAwC;AACxC,iEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA6B,QAAQ;;AAErC;AACA;AACA;AACA,gCAA+B,iDAAiD;;AAEhF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,kBAAiB;AACjB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAiC;AACjC;;AAEA,4BAA2B,mBAAmB;;AAE9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,gBAAe;;AAEf;AACA;AACA;AACA;AACA;AACA,kBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA,kBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,gBAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,gBAAe;AACf;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,kDAAiD,QAAQ;AACzD;AACA;;AAEA;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,UAAS;AACT;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,aAAY,6EAA6E;AACzF;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,aAAY;AACZ,yBAAwB;AACxB;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA,aAAY,gFAAgF;AAC5F;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY,6EAA6E;AACzF;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAY;AACZ,yBAAwB;AACxB;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA,aAAY,4FAA4F;AACxG;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA,aAAY,yFAAyF;AACrG;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oBAAmB,qBAAqB;AACxC;;AAEA;;AAEA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA,uBAAsB;;AAEtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,oH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAsC,OAAO;AAC7C,mCAAkC,WAAW,GAAG,0EAA0E;AAC1H;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB,aAAa;AACjC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ,4EAA4E,wDAAwD;AACvJ,YAAW,QAAQ;AACnB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB;AACA;AACA,uEAAsE,gDAAgD;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,YAAY;AACjC;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,oDAAoD;AAC7D,UAAS;AACT;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,0CAA0C;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,sBAAqB,8BAA8B;AACnD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;AACA,QAAO,2BAA2B;AAClC;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,4BAA2B;AAC3B;AACA;AACA;AACA,QAAO,2BAA2B;AAClC;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,+DAA8D;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA,aAAY,WAAW;AACvB,aAAY,uBAAuB;AACnC;AACA;AACA;AACA,aAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C,eAAe;AAC5D,YAAW;AACX;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gCAA+B,oBAAoB;AACnD;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;;AAEX;;AAEA;AACA;AACA;AACA,kCAAiC,oBAAoB,EAAE;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,YAAW;AACX;AACA;;AAEA,YAAW;AACX;AACA;AACA,cAAa;;AAEb,YAAW;AACX;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA,sDAAqD;AACrD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oEAAmE;AACnE;AACA,6HAA4H;AAC5H;AACA,iDAAgD;AAChD;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,2BAA0B,+BAA+B;AACzD;AACA;AACA,2IAA0I,yBAAyB,KAAK,SAAS;AACjL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,mGAAkG,wBAAwB;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,uBAAsB;AACtB;AACA,SAAQ;AACR;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,+CAA8C,YAAY,mCAAmC,cAAc;AAC3G;AACA;AACA;AACA,4BAA2B,iBAAiB,kBAAkB,YAAY,gOAAgO,aAAa,OAAO;AAC9T;AACA;AACA;AACA;AACA,4GAA2G,cAAc,KAAK,cAAc;AAC5I;AACA;AACA;AACA;AACA,mEAAkE,uBAAuB;AACzF,wGAAuG,UAAU;AACjH,6DAA4D,gDAAgD,8CAA8C,gGAAgG,oDAAoD,KAAK,YAAY;AAC/T;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,+CAA8C,YAAY,mCAAmC,cAAc;AAC3G;AACA;AACA;AACA,+BAA8B,YAAY,gOAAgO,aAAa,OAAO;AAC9R;AACA;AACA;AACA;AACA;AACA,wGAAuG,UAAU;AACjH,6DAA4D,yCAAyC,8CAA8C,gGAAgG,wBAAwB,KAAK,YAAY;AAC5R;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,wFAAuF,iDAAiD;AACxI;AACA;AACA;AACA,kIAAiI,sBAAsB;AACvJ,6FAA4F,oBAAoB;AAChH;AACA,mGAAkG,oBAAoB;AACtH;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,+CAA8C,YAAY,mCAAmC,cAAc;AAC3G;AACA;AACA;AACA,6CAA4C,YAAY,gOAAgO,aAAa,OAAO;AAC5S;AACA;AACA;AACA;AACA;AACA,wGAAuG,UAAU;AACjH,6DAA4D,yCAAyC,8CAA8C,gGAAgG,wBAAwB,KAAK,YAAY;AAC5R;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,uBAAsB,+CAA+C;AACrE;AACA;AACA,EAAC;;AAED;AACA;AACA,4BAA2B,aAAa;AACxC;AACA;AACA,mBAAkB,6CAA6C;AAC/D;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,wBAAuB,oDAAoD,uDAAuD,uBAAuB;AACzJ,wBAAuB,4CAA4C,uDAAuD,mBAAmB;AAC7I;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,kDAAiD,mCAAmC,2EAA2E,oBAAoB;AACnL,mDAAkD,mCAAmC,iFAAiF,uBAAuB;AAC7L,oEAAmE,uDAAuD,oFAAoF,WAAW;AACzN,mDAAkD,+BAA+B,iFAAiF,mBAAmB;AACrL,kDAAiD,+BAA+B,mFAAmF,mBAAmB;AACtL;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,qHAAoH,OAAO,yCAAyC,KAAK,eAAe,6CAA6C,sBAAsB,oBAAoB,yBAAyB;AACxS;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,uHAAsH,OAAO,yCAAyC,KAAK,eAAe,6CAA6C,sBAAsB,oBAAoB,yBAAyB;AAC1S;AACA;AACA,EAAC;;AAED;AACA;AACA,4IAA2I,cAAc,qBAAqB,OAAO;AACrL,oFAAmF,8BAA8B;AACjH,4OAA2O,SAAS;AACpP;AACA;AACA,EAAC;;AAED;AACA;AACA,sBAAqB,mCAAmC;AACxD,+DAA8D,SAAS;AACvE;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,8BAA6B,gBAAgB,eAAe,oDAAoD;AAChH;AACA;AACA;AACA,2BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,6DAA4D,6BAA6B;AACzF,sBAAqB;AACrB,+DAA8D,+BAA+B;AAC7F;AACA;AACA;AACA,iDAAgD,0BAA0B;AAC1E,wCAAuC;AACvC;AACA;AACA,iDAAgD,4BAA4B;AAC5E,w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AAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD,EAAC,W;;;;;;;;;AC9LD;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C;AAC3C;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uCAAsC;AACtC;AACA;AACA,UAAS;AACT,+BAA8B;AAC9B;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED,EAAC,W;;;;;;;;;AC3ID;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAuB,SAAS;AAChC,0BAAyB;AACzB,2BAA0B,eAAe;AACzC;AACA;AACA,2BAA0B,gBAAgB;AAC1C;AACA;AACA,qDAAoD;AACpD,cAAa,oBAAoB;AACjC;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAiC;AACjC,kCAAiC;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,EAAC;;AAED,EAAC,W;;;;;;;;;ACnED;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAK;;AAEL,EAAC,W;;;;;;;;;AC5CD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAkC,GAAG,EAAE;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,EAAC,W;;;;;;;;;AChDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA,cAAa;AACb;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,UAAS;AACT;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,UAAS;AACT;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mEAAkE,EAAE;AACpE,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2EAA0E,EAAE;AAC5E,UAAS;AACT;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;;AAEA;;AAEA,EAAC;;AAED,EAAC,W;;;;;;;;;AC3eD;;AAEA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB;AACrB,4FAA2F,iBAAiB,qCAAqC,iBAAiB,QAAQ,OAAO;AACjL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,6CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL,EAAC,W;;;;;;;;;ACvGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,kBAAiB;AACjB;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA,EAAC;;AAED,EAAC,W;;;;;;;;;AC7BD;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;;AAEb;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;;AAEb;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;;AAEb;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;;AAEb;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;;AAEb;AACA;AACA;AACA,EAAC;;AAED,EAAC,W;;;;;;;;;AC3FD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED,EAAC,W;;;;;;;;;ACpFD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAC;;AAED,EAAC,W;;;;;;;;;ACdD;AACA;AACA,0GAAyG,2CAA2C,oKAAoK,cAAc,yUAAyU,qBAAqB,mGAAmG,mDAAmD,2DAA2D,+CAA+C,uEAAuE,uBAAuB,qZAAqZ,wDAAwD,4eAA4e,mDAAmD,iKAAiK,oDAAoD,8KAA8K,0CAA0C,uIAAuI,+CAA+C,iRAAiR,mDAAmD,2GAA2G,KAAK,gDAAgD,uIAAuI,+BAA+B,mOAAmO,sDAAsD,+fAA+f,mDAAmD,+KAA+K,oDAAoD,6GAA6G,KAAK,wCAAwC,qHAAqH,kDAAkD,+KAA+K,sCAAsC,2FAA2F,YAAY,4OAA4O,gBAAgB,gVAAgV,oDAAoD,uSAAuS,sDAAsD,sKAAsK,+CAA+C,2WAA2W,mDAAmD,yLAAyL,8DAA8D,uIAAuI,sDAAsD,kIAAkI,UAAU,kNAAkN,mDAAmD,oMAAoM,wDAAwD,oLAAoL,yDAAyD,iSAAiS,2DAA2D;AAChmQ,iEAAgE,oBAAoB;AACpF;AACA,EAAC,W","file":"loginwidget.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"../../../dist/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap a084bcf9b885f03081f5\n **/","/* global require */\r\n(function(factory) {\r\n var angular;\r\n\r\n if (typeof require == 'function') {\r\n // Save a copy of the existing angular for later restoration\r\n if (window.angular) {\r\n window.existingWindowDotAngular = window.angular;\r\n window.angular = null;\r\n }\r\n\r\n // create a new window.angular and a closure variable for\r\n // angular.js to load itself into\r\n angular = (window.angular = {});\r\n\r\n // CSS\r\n require('../assets/js/font-awesome.js');\r\n\r\n // JS - Frameworks/Libraries\r\n require('../../bower_components/angular/angular.min.js');\r\n require(\"iifeloader!../../bower_components/angular-cookies/angular-cookies.min.js\");\r\n\r\n // JS - Module dependencies for module\r\n require('iifeloader!../../bower_components/ng-lodash/build/ng-lodash.min.js');\r\n require('iifeloader!../../bower_components/angular-bootstrap/ui-bootstrap-tpls.js');\r\n require('iifeloader!../../bower_components/angular-bootstrap/ui-bootstrap.min.js');\r\n require('script!./utf8base64.js');\r\n } else {\r\n angular = window.angular;\r\n }\r\n\r\n factory(angular);\r\n}(function(angular) {\r\n \"use strict\";\r\n\r\n // make local closure copy of angular\r\n var appangular = angular.copy(angular);\r\n\r\n appangular.element(document).ready(function() {\r\n var loginWidgetTag = appangular.element.find(\"loginwidget\"),\r\n containerDiv = appangular.element(\"
\");\r\n\r\n if (!loginWidgetTag || loginWidgetTag.length === 0) {\r\n throw new Error(\"Unable to bootstrap angular due to missing tag!\");\r\n }\r\n\r\n containerDiv.insertBefore(loginWidgetTag);\r\n containerDiv.append(loginWidgetTag);\r\n\r\n loginWidgetTag = appangular.element(loginWidgetTag);\r\n\r\n // ensure our angular is on window\r\n window.oldAngular = window.angular;\r\n window.angular = appangular;\r\n\r\n appangular.bootstrap(containerDiv, [\"LoginWidget\"]);\r\n\r\n // restore old angular after bootstrap\r\n window.angular = window.oldAngular;\r\n });\r\n\r\n var app = appangular.module(\"LoginWidget\", ['ngLodash', 'ui.bootstrap.tpls', 'ui.bootstrap', 'ngCookies']);\r\n\r\n if (typeof require == 'function') {\r\n require('iifeloader!../config/config.js');\r\n require('iifeloader!./services/thirdPartyHooks.js');\r\n require('iifeloader!./services/utils.js');\r\n require('iifeloader!./services/businessRules.js');\r\n require('iifeloader!./services/tokenReplacement.js');\r\n require('iifeloader!./filters/translate.js');\r\n require('iifeloader!./loginwidget/login-widget-directive.js');\r\n require('iifeloader!./loginwidget/login-widget-controller.js');\r\n require('iifeloader!./sociallogin/sociallogin.js');\r\n require('iifeloader!./services/http.js');\r\n require('iifeloader!./services/api.js');\r\n require('iifeloader!./services/fbapi.js');\r\n require('iifeloader!./services/error.js');\r\n require('iifeloader!./loginwidget/login-widget-directive.html');\r\n\r\n // restore old angular after everything loads\r\n window.angular = window.existingWindowDotAngular;\r\n }\r\n\r\n app.config([\"widgetConfig\", \"thirdPartyHooksProvider\", function(widgetConfig, thirdPartyHooksProvider) {\r\n thirdPartyHooksProvider.configure(widgetConfig);\r\n }]);\r\n\r\n app.run(function(widgetConfig, defaultLabels, thirdPartyHooks) {\r\n var labels = widgetConfig.labels || {};\r\n defaultLabels.merge(labels);\r\n\r\n thirdPartyHooks.onStart();\r\n });\r\n}));\r\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/components/app.module.js\n ** module id = 0\n ** module chunks = 0\n **/","/**\r\n * Created by hunterhodnett on 5/12/15.\r\n */\r\n\r\nmodule.exports = function() {\r\n var head = document.head\r\n , link = document.createElement('link');\r\n\r\n link.type = 'text/css';\r\n link.rel = 'stylesheet';\r\n link.href = '//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css';\r\n\r\n head.appendChild(link)\r\n}();\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/assets/js/font-awesome.js\n ** module id = 1\n ** module chunks = 0\n **/","/*\r\n AngularJS v1.4.10\r\n (c) 2010-2015 Google, Inc. http://angularjs.org\r\n License: MIT\r\n*/\r\n(function(U,W,v){'use strict';function L(a){return function(){var b=arguments[0],d;d=\"[\"+(a?a+\":\":\"\")+b+\"] http://errors.angularjs.org/1.4.10/\"+(a?a+\"/\":\"\")+b;for(b=1;b\").append(a).html();try{return a[0].nodeType===Oa?F(d):d.match(/^(<[^>]+>)/)[1].replace(/^<([\\w\\-]+)/,function(a,b){return\"<\"+F(b)})}catch(c){return F(d)}}function wc(a){try{return decodeURIComponent(a)}catch(b){}}\r\nfunction xc(a){var b={};p((a||\"\").split(\"&\"),function(a){var c,e,f;a&&(e=a=a.replace(/\\+/g,\"%20\"),c=a.indexOf(\"=\"),-1!==c&&(e=a.substring(0,c),f=a.substring(c+1)),e=wc(e),x(e)&&(f=x(f)?wc(f):!0,sa.call(b,e)?K(b[e])?b[e].push(f):b[e]=[b[e],f]:b[e]=f))});return b}function Qb(a){var b=[];p(a,function(a,c){K(a)?p(a,function(a){b.push(ia(c,!0)+(!0===a?\"\":\"=\"+ia(a,!0)))}):b.push(ia(c,!0)+(!0===a?\"\":\"=\"+ia(a,!0)))});return b.length?b.join(\"&\"):\"\"}function nb(a){return ia(a,!0).replace(/%26/gi,\"&\").replace(/%3D/gi,\r\n\"=\").replace(/%2B/gi,\"+\")}function ia(a,b){return encodeURIComponent(a).replace(/%40/gi,\"@\").replace(/%3A/gi,\":\").replace(/%24/g,\"$\").replace(/%2C/gi,\",\").replace(/%3B/gi,\";\").replace(/%20/g,b?\"%20\":\"+\")}function ce(a,b){var d,c,e=Pa.length;for(c=0;c/,\">\"));}b=b||[];b.unshift([\"$provide\",function(b){b.value(\"$rootElement\",a)}]);d.debugInfoEnabled&&b.push([\"$compileProvider\",function(a){a.debugInfoEnabled(!0)}]);b.unshift(\"ng\");c=db(b,d.strictDi);c.invoke([\"$rootScope\",\r\n\"$rootElement\",\"$compile\",\"$injector\",function(a,b,c,d){a.$apply(function(){b.data(\"$injector\",d);c(b)(a)})}]);return c},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;U&&e.test(U.name)&&(d.debugInfoEnabled=!0,U.name=U.name.replace(e,\"\"));if(U&&!f.test(U.name))return c();U.name=U.name.replace(f,\"\");fa.resumeBootstrap=function(a){p(a,function(a){b.push(a)});return c()};E(fa.resumeDeferredBootstrap)&&fa.resumeDeferredBootstrap()}function ee(){U.name=\"NG_ENABLE_DEBUG_INFO!\"+U.name;U.location.reload()}\r\nfunction fe(a){a=fa.element(a).injector();if(!a)throw Aa(\"test\");return a.get(\"$$testability\")}function zc(a,b){b=b||\"_\";return a.replace(ge,function(a,c){return(c?b:\"\")+a.toLowerCase()})}function he(){var a;if(!Ac){var b=ob();(qa=r(b)?U.jQuery:b?U[b]:v)&&qa.fn.on?(z=qa,M(qa.fn,{scope:Qa.scope,isolateScope:Qa.isolateScope,controller:Qa.controller,injector:Qa.injector,inheritedData:Qa.inheritedData}),a=qa.cleanData,qa.cleanData=function(b){var c;if(Rb)Rb=!1;else for(var e=0,f;null!=(f=b[e]);e++)(c=\r\nqa._data(f,\"events\"))&&c.$destroy&&qa(f).triggerHandler(\"$destroy\");a(b)}):z=R;fa.element=z;Ac=!0}}function pb(a,b,d){if(!a)throw Aa(\"areq\",b||\"?\",d||\"required\");return a}function Ra(a,b,d){d&&K(a)&&(a=a[a.length-1]);pb(E(a),b,\"not a function, got \"+(a&&\"object\"===typeof a?a.constructor.name||\"Object\":typeof a));return a}function Sa(a,b){if(\"hasOwnProperty\"===a)throw Aa(\"badname\",b);}function Bc(a,b,d){if(!b)return a;b=b.split(\".\");for(var c,e=a,f=b.length,g=0;g\")+c[2];for(c=c[0];c--;)d=d.lastChild;f=bb(f,d.childNodes);d=e.firstChild;d.textContent=\"\"}else f.push(b.createTextNode(a));e.textContent=\"\";e.innerHTML=\"\";p(f,function(a){e.appendChild(a)});return e}function Mc(a,\r\nb){var d=a.parentNode;d&&d.replaceChild(b,a);b.appendChild(a)}function R(a){if(a instanceof R)return a;var b;H(a)&&(a=V(a),b=!0);if(!(this instanceof R)){if(b&&\"<\"!=a.charAt(0))throw Ub(\"nosel\");return new R(a)}if(b){b=W;var d;a=(d=Lf.exec(a))?[b.createElement(d[1])]:(d=Lc(a,b))?d.childNodes:[]}Nc(this,a)}function Vb(a){return a.cloneNode(!0)}function tb(a,b){b||ub(a);if(a.querySelectorAll)for(var d=a.querySelectorAll(\"*\"),c=0,e=d.length;cm&&this.remove(G.key);return b}},get:function(a){if(m\").append(a).html())):c?Qa.clone.call(a):a;if(g)for(var h in g)d.data(\"$\"+h+\"Controller\",g[h].instance);J.$$addScopeInfo(d,b);c&&c(d,b);m&&m(b,d,d,f);return d}}function X(a,b,c,d,e,f){function g(a,c,d,e){var f,k,m,l,n,B,t;if(q)for(t=Array(c.length),\r\nl=0;lr.priority)break;if(Q=r.scope)r.templateUrl||(I(Q)?(Va(\"new/isolated scope\",C||A,r,$),C=r):Va(\"new/isolated scope\",C,r,$)),A=A||r;y=r.name;!r.templateUrl&&r.controller&&(Q=r.controller,u=u||aa(),Va(\"'\"+y+\"' controller\",u[y],r,$),u[y]=r);if(Q=r.transclude)N=!0,r.$$tlb||(Va(\"transclusion\",D,\r\nr,$),D=r),\"element\"==Q?(T=!0,P=r.priority,Q=$,$=d.$$element=z(W.createComment(\" \"+y+\": \"+d[y]+\" \")),b=$[0],Z(f,ta.call(Q,0),b),Ha=J(Q,e,P,g&&g.name,{nonTlbTranscludeDirective:D})):(Q=z(Vb(b)).contents(),$.empty(),Ha=J(Q,e,v,v,{needsNewScope:r.$$isolateScope||r.$$newScope}));if(r.template)if(p=!0,Va(\"template\",X,r,$),X=r,Q=E(r.template)?r.template($,d):r.template,Q=ia(Q),r.replace){g=r;Q=Tb.test(Q)?Yc(Yb(r.templateNamespace,V(Q))):[];b=Q[0];if(1!=Q.length||1!==b.nodeType)throw ga(\"tplrt\",y,\"\");Z(f,\r\n$,b);Q={$attr:{}};var Xc=ja(b,[],Q),Y=a.splice(F+1,a.length-(F+1));(C||A)&&x(Xc,C,A);a=a.concat(Xc).concat(Y);U(d,Q);M=a.length}else $.html(Q);if(r.templateUrl)p=!0,Va(\"template\",X,r,$),X=r,r.replace&&(g=r),w=Vf(a.splice(F,a.length-F),$,d,f,N&&Ha,h,m,{controllerDirectives:u,newScopeDirective:A!==r&&A,newIsolateScopeDirective:C,templateDirective:X,nonTlbTranscludeDirective:D}),M=a.length;else if(r.compile)try{L=r.compile($,d,Ha),E(L)?n(null,L,O,R):L&&n(L.pre,L.post,O,R)}catch(da){c(da,ua($))}r.terminal&&\r\n(w.terminal=!0,P=Math.max(P,r.priority))}w.scope=A&&!0===A.scope;w.transcludeOnThisElement=N;w.templateOnThisElement=p;w.transclude=Ha;l.hasElementTranscludeDirective=T;return w}function x(a,b,c){for(var d=0,e=a.length;dn.priority)&&-1!=n.restrict.indexOf(g)){m&&(n=Ob(n,{$$start:m,$$end:l}));\r\nif(!n.$$bindings){var t=n,J=n,P=n.name,w={isolateScope:null,bindToController:null};I(J.scope)&&(!0===J.bindToController?(w.bindToController=d(J.scope,P,!0),w.isolateScope={}):w.isolateScope=d(J.scope,P,!1));I(J.bindToController)&&(w.bindToController=d(J.bindToController,P,!0));if(I(w.bindToController)){var C=J.controller,u=J.controllerAs;if(!C)throw ga(\"noctrl\",P);var D;a:{var J=C,X=u;if(X&&H(X))D=X;else{if(H(J)){var ja=Zc.exec(J);if(ja){D=ja[3];break a}}D=void 0}}if(!D)throw ga(\"noident\",P);}var N=\r\nt.$$bindings=w;I(N.isolateScope)&&(n.$$isolateBindings=N.isolateScope)}b.push(n);h=n}}catch(p){c(p)}}return h}function L(b){if(e.hasOwnProperty(b))for(var c=a.get(b+\"Directive\"),d=0,f=c.length;d\"+b+\"\";return c.childNodes[0].childNodes;default:return b}}function R(a,b){if(\"srcdoc\"==b)return D.HTML;var c=pa(a);if(\"xlinkHref\"==b||\"form\"==c&&\"action\"==b||\"img\"!=c&&(\"src\"==b||\"ngSrc\"==b))return D.RESOURCE_URL}function Y(a,c,d,e,f){var g=R(a,e);f=h[e]||f;var k=\r\nb(d,!0,g,f);if(k){if(\"multiple\"===e&&\"select\"===pa(a))throw ga(\"selmulti\",ua(a));c.push({priority:100,compile:function(){return{pre:function(a,c,h){c=h.$$observers||(h.$$observers=aa());if(m.test(e))throw ga(\"nodomevents\");var l=h[e];l!==d&&(k=l&&b(l,!0,g,f),d=l);k&&(h[e]=k(a),(c[e]||(c[e]=[])).$$inter=!0,(h.$$observers&&h.$$observers[e].$$scope||a).$watch(k,function(a,b){\"class\"===e&&a!=b?h.$updateClass(a,b):h.$set(e,a)}))}}}})}}function Z(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=\r\n0,h=a.length;g=b)return a;for(;b--;)8===\r\na[b].nodeType&&Wf.call(a,b,1);return a}function df(){var a={},b=!1;this.register=function(b,c){Sa(b,\"controller\");I(b)?M(a,b):a[b]=c};this.allowGlobals=function(){b=!0};this.$get=[\"$injector\",\"$window\",function(d,c){function e(a,b,c,d){if(!a||!I(a.$scope))throw L(\"$controller\")(\"noscp\",d,b);a.$scope[b]=c}return function(f,g,h,k){var m,l,n;h=!0===h;k&&H(k)&&(n=k);if(H(f)){k=f.match(Zc);if(!k)throw Xf(\"ctrlfmt\",f);l=k[1];n=n||k[3];f=a.hasOwnProperty(l)?a[l]:Bc(g.$scope,l,!0)||(b?Bc(c,l,!0):v);Ra(f,\r\nl,!0)}if(h)return h=(K(f)?f[f.length-1]:f).prototype,m=Object.create(h||null),n&&e(g,n,m,l||f.name),M(function(){var a=d.invoke(f,m,g,l);a!==m&&(I(a)||E(a))&&(m=a,n&&e(g,n,m,l||f.name));return m},{instance:m,identifier:n});m=d.instantiate(f,g,l);n&&e(g,n,m,l||f.name);return m}}]}function ef(){this.$get=[\"$window\",function(a){return z(a.document)}]}function ff(){this.$get=[\"$log\",function(a){return function(b,d){a.error.apply(a,arguments)}}]}function Zb(a){return I(a)?da(a)?a.toISOString():cb(a):a}\r\nfunction lf(){this.$get=function(){return function(a){if(!a)return\"\";var b=[];oc(a,function(a,c){null===a||r(a)||(K(a)?p(a,function(a,d){b.push(ia(c)+\"=\"+ia(Zb(a)))}):b.push(ia(c)+\"=\"+ia(Zb(a))))});return b.join(\"&\")}}}function mf(){this.$get=function(){return function(a){function b(a,e,f){null===a||r(a)||(K(a)?p(a,function(a,c){b(a,e+\"[\"+(I(a)?c:\"\")+\"]\")}):I(a)&&!da(a)?oc(a,function(a,c){b(a,e+(f?\"\":\"[\")+c+(f?\"\":\"]\"))}):d.push(ia(e)+\"=\"+ia(Zb(a))))}if(!a)return\"\";var d=[];b(a,\"\",!0);return d.join(\"&\")}}}\r\nfunction $b(a,b){if(H(a)){var d=a.replace(Yf,\"\").trim();if(d){var c=b(\"Content-Type\");(c=c&&0===c.indexOf(bd))||(c=(c=d.match(Zf))&&$f[c[0]].test(d));c&&(a=uc(d))}}return a}function cd(a){var b=aa(),d;H(a)?p(a.split(\"\\n\"),function(a){d=a.indexOf(\":\");var e=F(V(a.substr(0,d)));a=V(a.substr(d+1));e&&(b[e]=b[e]?b[e]+\", \"+a:a)}):I(a)&&p(a,function(a,d){var f=F(d),g=V(a);f&&(b[f]=b[f]?b[f]+\", \"+g:g)});return b}function dd(a){var b;return function(d){b||(b=cd(a));return d?(d=b[F(d)],void 0===d&&(d=null),\r\nd):b}}function ed(a,b,d,c){if(E(c))return c(a,b,d);p(c,function(c){a=c(a,b,d)});return a}function kf(){var a=this.defaults={transformResponse:[$b],transformRequest:[function(a){return I(a)&&\"[object File]\"!==oa.call(a)&&\"[object Blob]\"!==oa.call(a)&&\"[object FormData]\"!==oa.call(a)?cb(a):a}],headers:{common:{Accept:\"application/json, text/plain, */*\"},post:ha(ac),put:ha(ac),patch:ha(ac)},xsrfCookieName:\"XSRF-TOKEN\",xsrfHeaderName:\"X-XSRF-TOKEN\",paramSerializer:\"$httpParamSerializer\"},b=!1;this.useApplyAsync=\r\nfunction(a){return x(a)?(b=!!a,this):b};var d=!0;this.useLegacyPromiseExtensions=function(a){return x(a)?(d=!!a,this):d};var c=this.interceptors=[];this.$get=[\"$httpBackend\",\"$$cookieReader\",\"$cacheFactory\",\"$rootScope\",\"$q\",\"$injector\",function(e,f,g,h,k,m){function l(b){function c(a){var b=M({},a);b.data=ed(a.data,a.headers,a.status,f.transformResponse);a=a.status;return 200<=a&&300>a?b:k.reject(b)}function e(a,b){var c,d={};p(a,function(a,e){E(a)?(c=a(b),null!=c&&(d[e]=c)):d[e]=a});return d}if(!fa.isObject(b))throw L(\"$http\")(\"badreq\",\r\nb);if(!H(b.url))throw L(\"$http\")(\"badreq\",b.url);var f=M({method:\"get\",transformRequest:a.transformRequest,transformResponse:a.transformResponse,paramSerializer:a.paramSerializer},b);f.headers=function(b){var c=a.headers,d=M({},b.headers),f,g,h,c=M({},c.common,c[F(b.method)]);a:for(f in c){g=F(f);for(h in d)if(F(h)===g)continue a;d[f]=c[f]}return e(d,ha(b))}(b);f.method=rb(f.method);f.paramSerializer=H(f.paramSerializer)?m.get(f.paramSerializer):f.paramSerializer;var g=[function(b){var d=b.headers,\r\ne=ed(b.data,dd(d),v,b.transformRequest);r(e)&&p(d,function(a,b){\"content-type\"===F(b)&&delete d[b]});r(b.withCredentials)&&!r(a.withCredentials)&&(b.withCredentials=a.withCredentials);return n(b,e).then(c,c)},v],h=k.when(f);for(p(u,function(a){(a.request||a.requestError)&&g.unshift(a.request,a.requestError);(a.response||a.responseError)&&g.push(a.response,a.responseError)});g.length;){b=g.shift();var l=g.shift(),h=h.then(b,l)}d?(h.success=function(a){Ra(a,\"fn\");h.then(function(b){a(b.data,b.status,\r\nb.headers,f)});return h},h.error=function(a){Ra(a,\"fn\");h.then(null,function(b){a(b.data,b.status,b.headers,f)});return h}):(h.success=fd(\"success\"),h.error=fd(\"error\"));return h}function n(c,d){function g(a,c,d,e){function f(){m(c,a,d,e)}C&&(200<=a&&300>a?C.put(P,[a,c,cd(d),e]):C.remove(P));b?h.$applyAsync(f):(f(),h.$$phase||h.$apply())}function m(a,b,d,e){b=-1<=b?b:0;(200<=b&&300>b?p.resolve:p.reject)({data:a,status:b,headers:dd(d),config:c,statusText:e})}function n(a){m(a.data,a.status,ha(a.headers()),\r\na.statusText)}function u(){var a=l.pendingRequests.indexOf(c);-1!==a&&l.pendingRequests.splice(a,1)}var p=k.defer(),B=p.promise,C,J,X=c.headers,P=G(c.url,c.paramSerializer(c.params));l.pendingRequests.push(c);B.then(u,u);!c.cache&&!a.cache||!1===c.cache||\"GET\"!==c.method&&\"JSONP\"!==c.method||(C=I(c.cache)?c.cache:I(a.cache)?a.cache:A);C&&(J=C.get(P),x(J)?J&&E(J.then)?J.then(n,n):K(J)?m(J[1],J[0],ha(J[2]),J[3]):m(J,200,{},\"OK\"):C.put(P,B));r(J)&&((J=gd(c.url)?f()[c.xsrfCookieName||a.xsrfCookieName]:\r\nv)&&(X[c.xsrfHeaderName||a.xsrfHeaderName]=J),e(c.method,P,d,g,X,c.timeout,c.withCredentials,c.responseType));return B}function G(a,b){0=k&&(q.resolve(u),A(w.$$intervalId),delete f[w.$$intervalId]);S||a.$apply()},\r\nh);f[w.$$intervalId]=q;return w}var f={};e.cancel=function(a){return a&&a.$$intervalId in f?(f[a.$$intervalId].reject(\"canceled\"),b.clearInterval(a.$$intervalId),delete f[a.$$intervalId],!0):!1};return e}]}function bc(a){a=a.split(\"/\");for(var b=a.length;b--;)a[b]=nb(a[b]);return a.join(\"/\")}function hd(a,b){var d=wa(a);b.$$protocol=d.protocol;b.$$host=d.hostname;b.$$port=ea(d.port)||bg[d.protocol]||null}function id(a,b){var d=\"/\"!==a.charAt(0);d&&(a=\"/\"+a);var c=wa(a);b.$$path=decodeURIComponent(d&&\r\n\"/\"===c.pathname.charAt(0)?c.pathname.substring(1):c.pathname);b.$$search=xc(c.search);b.$$hash=decodeURIComponent(c.hash);b.$$path&&\"/\"!=b.$$path.charAt(0)&&(b.$$path=\"/\"+b.$$path)}function ra(a,b){if(0===b.indexOf(a))return b.substr(a.length)}function Fa(a){var b=a.indexOf(\"#\");return-1==b?a:a.substr(0,b)}function hb(a){return a.replace(/(#.+)|#$/,\"$1\")}function cc(a,b,d){this.$$html5=!0;d=d||\"\";hd(a,this);this.$$parse=function(a){var d=ra(b,a);if(!H(d))throw Cb(\"ipthprfx\",a,b);id(d,this);this.$$path||\r\n(this.$$path=\"/\");this.$$compose()};this.$$compose=function(){var a=Qb(this.$$search),d=this.$$hash?\"#\"+nb(this.$$hash):\"\";this.$$url=bc(this.$$path)+(a?\"?\"+a:\"\")+d;this.$$absUrl=b+this.$$url.substr(1)};this.$$parseLinkUrl=function(c,e){if(e&&\"#\"===e[0])return this.hash(e.slice(1)),!0;var f,g;x(f=ra(a,c))?(g=f,g=x(f=ra(d,f))?b+(ra(\"/\",f)||f):a+g):x(f=ra(b,c))?g=b+f:b==c+\"/\"&&(g=b);g&&this.$$parse(g);return!!g}}function dc(a,b,d){hd(a,this);this.$$parse=function(c){var e=ra(a,c)||ra(b,c),f;r(e)||\"#\"!==\r\ne.charAt(0)?this.$$html5?f=e:(f=\"\",r(e)&&(a=c,this.replace())):(f=ra(d,e),r(f)&&(f=e));id(f,this);c=this.$$path;var e=a,g=/^\\/[A-Z]:(\\/.*)/;0===f.indexOf(e)&&(f=f.replace(e,\"\"));g.exec(f)||(c=(f=g.exec(c))?f[1]:c);this.$$path=c;this.$$compose()};this.$$compose=function(){var b=Qb(this.$$search),e=this.$$hash?\"#\"+nb(this.$$hash):\"\";this.$$url=bc(this.$$path)+(b?\"?\"+b:\"\")+e;this.$$absUrl=a+(this.$$url?d+this.$$url:\"\")};this.$$parseLinkUrl=function(b,d){return Fa(a)==Fa(b)?(this.$$parse(b),!0):!1}}function jd(a,\r\nb,d){this.$$html5=!0;dc.apply(this,arguments);this.$$parseLinkUrl=function(c,e){if(e&&\"#\"===e[0])return this.hash(e.slice(1)),!0;var f,g;a==Fa(c)?f=c:(g=ra(b,c))?f=a+d+g:b===c+\"/\"&&(f=b);f&&this.$$parse(f);return!!f};this.$$compose=function(){var b=Qb(this.$$search),e=this.$$hash?\"#\"+nb(this.$$hash):\"\";this.$$url=bc(this.$$path)+(b?\"?\"+b:\"\")+e;this.$$absUrl=a+d+this.$$url}}function Db(a){return function(){return this[a]}}function kd(a,b){return function(d){if(r(d))return this[a];this[a]=b(d);this.$$compose();\r\nreturn this}}function pf(){var a=\"\",b={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(b){return x(b)?(a=b,this):a};this.html5Mode=function(a){return Ma(a)?(b.enabled=a,this):I(a)?(Ma(a.enabled)&&(b.enabled=a.enabled),Ma(a.requireBase)&&(b.requireBase=a.requireBase),Ma(a.rewriteLinks)&&(b.rewriteLinks=a.rewriteLinks),this):b};this.$get=[\"$rootScope\",\"$browser\",\"$sniffer\",\"$rootElement\",\"$window\",function(d,c,e,f,g){function h(a,b,d){var e=m.url(),f=m.$$state;try{c.url(a,b,d),m.$$state=\r\nc.state()}catch(g){throw m.url(e),m.$$state=f,g;}}function k(a,b){d.$broadcast(\"$locationChangeSuccess\",m.absUrl(),a,m.$$state,b)}var m,l;l=c.baseHref();var n=c.url(),G;if(b.enabled){if(!l&&b.requireBase)throw Cb(\"nobase\");G=n.substring(0,n.indexOf(\"/\",n.indexOf(\"//\")+2))+(l||\"/\");l=e.history?cc:jd}else G=Fa(n),l=dc;var A=G.substr(0,Fa(G).lastIndexOf(\"/\")+1);m=new l(G,A,\"#\"+a);m.$$parseLinkUrl(n,n);m.$$state=c.state();var u=/^\\s*(javascript|mailto):/i;f.on(\"click\",function(a){if(b.rewriteLinks&&!a.ctrlKey&&\r\n!a.metaKey&&!a.shiftKey&&2!=a.which&&2!=a.button){for(var e=z(a.target);\"a\"!==pa(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop(\"href\"),k=e.attr(\"href\")||e.attr(\"xlink:href\");I(h)&&\"[object SVGAnimatedString]\"===h.toString()&&(h=wa(h.animVal).href);u.test(h)||!h||e.attr(\"target\")||a.isDefaultPrevented()||!m.$$parseLinkUrl(h,k)||(a.preventDefault(),m.absUrl()!=c.url()&&(d.$apply(),g.angular[\"ff-684208-preventDefault\"]=!0))}});hb(m.absUrl())!=hb(n)&&c.url(m.absUrl(),!0);var S=!0;c.onUrlChange(function(a,\r\nb){r(ra(A,a))?g.location.href=a:(d.$evalAsync(function(){var c=m.absUrl(),e=m.$$state,f;a=hb(a);m.$$parse(a);m.$$state=b;f=d.$broadcast(\"$locationChangeStart\",a,c,b,e).defaultPrevented;m.absUrl()===a&&(f?(m.$$parse(c),m.$$state=e,h(c,!1,e)):(S=!1,k(c,e)))}),d.$$phase||d.$digest())});d.$watch(function(){var a=hb(c.url()),b=hb(m.absUrl()),f=c.state(),g=m.$$replace,l=a!==b||m.$$html5&&e.history&&f!==m.$$state;if(S||l)S=!1,d.$evalAsync(function(){var b=m.absUrl(),c=d.$broadcast(\"$locationChangeStart\",\r\nb,a,m.$$state,f).defaultPrevented;m.absUrl()===b&&(c?(m.$$parse(a),m.$$state=f):(l&&h(b,g,f===m.$$state?null:m.$$state),k(a,f)))});m.$$replace=!1});return m}]}function qf(){var a=!0,b=this;this.debugEnabled=function(b){return x(b)?(a=b,this):a};this.$get=[\"$window\",function(d){function c(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?\"Error: \"+a.message+\"\\n\"+a.stack:a.stack:a.sourceURL&&(a=a.message+\"\\n\"+a.sourceURL+\":\"+a.line));return a}function e(a){var b=d.console||\r\n{},e=b[a]||b.log||y;a=!1;try{a=!!e.apply}catch(k){}return a?function(){var a=[];p(arguments,function(b){a.push(c(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?\"\":b)}}return{log:e(\"log\"),info:e(\"info\"),warn:e(\"warn\"),error:e(\"error\"),debug:function(){var c=e(\"debug\");return function(){a&&c.apply(b,arguments)}}()}}]}function Wa(a,b){if(\"__defineGetter__\"===a||\"__defineSetter__\"===a||\"__lookupGetter__\"===a||\"__lookupSetter__\"===a||\"__proto__\"===a)throw ba(\"isecfld\",b);return a}function ld(a,b){a+=\r\n\"\";if(!H(a))throw ba(\"iseccst\",b);return a}function xa(a,b){if(a){if(a.constructor===a)throw ba(\"isecfn\",b);if(a.window===a)throw ba(\"isecwindow\",b);if(a.children&&(a.nodeName||a.prop&&a.attr&&a.find))throw ba(\"isecdom\",b);if(a===Object)throw ba(\"isecobj\",b);}return a}function md(a,b){if(a){if(a.constructor===a)throw ba(\"isecfn\",b);if(a===cg||a===dg||a===eg)throw ba(\"isecff\",b);}}function Eb(a,b){if(a&&(a===(0).constructor||a===(!1).constructor||a===\"\".constructor||a==={}.constructor||a===[].constructor||\r\na===Function.constructor))throw ba(\"isecaf\",b);}function fg(a,b){return\"undefined\"!==typeof a?a:b}function nd(a,b){return\"undefined\"===typeof a?b:\"undefined\"===typeof b?a:a+b}function Y(a,b){var d,c;switch(a.type){case s.Program:d=!0;p(a.body,function(a){Y(a.expression,b);d=d&&a.expression.constant});a.constant=d;break;case s.Literal:a.constant=!0;a.toWatch=[];break;case s.UnaryExpression:Y(a.argument,b);a.constant=a.argument.constant;a.toWatch=a.argument.toWatch;break;case s.BinaryExpression:Y(a.left,\r\nb);Y(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.left.toWatch.concat(a.right.toWatch);break;case s.LogicalExpression:Y(a.left,b);Y(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.constant?[]:[a];break;case s.ConditionalExpression:Y(a.test,b);Y(a.alternate,b);Y(a.consequent,b);a.constant=a.test.constant&&a.alternate.constant&&a.consequent.constant;a.toWatch=a.constant?[]:[a];break;case s.Identifier:a.constant=!1;a.toWatch=[a];break;case s.MemberExpression:Y(a.object,\r\nb);a.computed&&Y(a.property,b);a.constant=a.object.constant&&(!a.computed||a.property.constant);a.toWatch=[a];break;case s.CallExpression:d=a.filter?!b(a.callee.name).$stateful:!1;c=[];p(a.arguments,function(a){Y(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=a.filter&&!b(a.callee.name).$stateful?c:[a];break;case s.AssignmentExpression:Y(a.left,b);Y(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=[a];break;case s.ArrayExpression:d=!0;c=[];p(a.elements,\r\nfunction(a){Y(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=c;break;case s.ObjectExpression:d=!0;c=[];p(a.properties,function(a){Y(a.value,b);d=d&&a.value.constant;a.value.constant||c.push.apply(c,a.value.toWatch)});a.constant=d;a.toWatch=c;break;case s.ThisExpression:a.constant=!1,a.toWatch=[]}}function od(a){if(1==a.length){a=a[0].expression;var b=a.toWatch;return 1!==b.length?b:b[0]!==a?b:v}}function pd(a){return a.type===s.Identifier||a.type===s.MemberExpression}\r\nfunction qd(a){if(1===a.body.length&&pd(a.body[0].expression))return{type:s.AssignmentExpression,left:a.body[0].expression,right:{type:s.NGValueParameter},operator:\"=\"}}function rd(a){return 0===a.body.length||1===a.body.length&&(a.body[0].expression.type===s.Literal||a.body[0].expression.type===s.ArrayExpression||a.body[0].expression.type===s.ObjectExpression)}function sd(a,b){this.astBuilder=a;this.$filter=b}function td(a,b){this.astBuilder=a;this.$filter=b}function Fb(a){return\"constructor\"==a}\r\nfunction ec(a){return E(a.valueOf)?a.valueOf():gg.call(a)}function rf(){var a=aa(),b=aa();this.$get=[\"$filter\",function(d){function c(c,f,n){var t,p,D;n=n||u;switch(typeof c){case \"string\":D=c=c.trim();var r=n?b:a;t=r[D];if(!t){\":\"===c.charAt(0)&&\":\"===c.charAt(1)&&(p=!0,c=c.substring(2));t=n?A:G;var B=new fc(t);t=(new gc(B,d,t)).parse(c);t.constant?t.$$watchDelegate=m:p?t.$$watchDelegate=t.literal?k:h:t.inputs&&(t.$$watchDelegate=g);n&&(t=e(t));r[D]=t}return l(t,f);case \"function\":return l(c,f);\r\ndefault:return l(y,f)}}function e(a){function b(c,d,e,f){var g=u;u=!0;try{return a(c,d,e,f)}finally{u=g}}if(!a)return a;b.$$watchDelegate=a.$$watchDelegate;b.assign=e(a.assign);b.constant=a.constant;b.literal=a.literal;for(var c=0;a.inputs&&c=this.promise.$$state.status&&d&&d.length&&a(function(){for(var a,e,f=0,g=d.length;fa)for(b in l++,f)sa.call(e,b)||(t--,delete f[b])}else f!==e&&(f=e,l++);return l}}c.$stateful=!0;var d=this,e,f,g,k=1r&&(T=\r\n4-r,u[T]||(u[T]=[]),u[T].push({msg:E(a.exp)?\"fn: \"+(a.exp.name||a.exp.toString()):a.exp,newVal:f,oldVal:h}));else if(a===c){A=!1;break a}}catch(y){g(y)}if(!(n=w.$$watchersCount&&w.$$childHead||w!==this&&w.$$nextSibling))for(;w!==this&&!(n=w.$$nextSibling);)w=w.$parent}while(w=n);if((A||N.length)&&!r--)throw t.$$phase=null,d(\"infdig\",b,u);}while(A||N.length);for(t.$$phase=null;D.length;)try{D.shift()()}catch(z){g(z)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast(\"$destroy\");\r\nthis.$$destroyed=!0;this===t&&k.$$applicationDestroyed();A(this,-this.$$watchersCount);for(var b in this.$$listenerCount)u(this,this.$$listenerCount[b],b);a&&a.$$childHead==this&&(a.$$childHead=this.$$nextSibling);a&&a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=y;this.$on=\r\nthis.$watch=this.$watchGroup=function(){return y};this.$$listeners={};this.$$nextSibling=null;l(this)}},$eval:function(a,b){return h(a)(this,b)},$evalAsync:function(a,b){t.$$phase||N.length||k.defer(function(){N.length&&t.$digest()});N.push({scope:this,expression:h(a),locals:b})},$$postDigest:function(a){D.push(a)},$apply:function(a){try{G(\"$apply\");try{return this.$eval(a)}finally{t.$$phase=null}}catch(b){g(b)}finally{try{t.$digest()}catch(c){throw g(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}\r\nvar c=this;a&&T.push(b);a=h(a);w()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,u(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,f=!1,h={name:a,targetScope:e,stopPropagation:function(){f=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=bb([h],arguments,1),l,m;do{d=\r\ne.$$listeners[a]||c;h.currentScope=e;l=0;for(m=d.length;lGa)throw ya(\"iequirks\");var c=ha(la);c.isEnabled=function(){return a};\r\nc.trustAs=d.trustAs;c.getTrusted=d.getTrusted;c.valueOf=d.valueOf;a||(c.trustAs=c.getTrusted=function(a,b){return b},c.valueOf=Za);c.parseAs=function(a,d){var e=b(d);return e.literal&&e.constant?e:b(d,function(b){return c.getTrusted(a,b)})};var e=c.parseAs,f=c.getTrusted,g=c.trustAs;p(la,function(a,b){var d=F(b);c[eb(\"parse_as_\"+d)]=function(b){return e(a,b)};c[eb(\"get_trusted_\"+d)]=function(b){return f(a,b)};c[eb(\"trust_as_\"+d)]=function(b){return g(a,b)}});return c}]}function xf(){this.$get=[\"$window\",\r\n\"$document\",function(a,b){var d={},c=ea((/android (\\d+)/.exec(F((a.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((a.navigator||{}).userAgent),f=b[0]||{},g,h=/^(Moz|webkit|ms)(?=[A-Z])/,k=f.body&&f.body.style,m=!1,l=!1;if(k){for(var n in k)if(m=h.exec(n)){g=m[0];g=g.substr(0,1).toUpperCase()+g.substr(1);break}g||(g=\"WebkitOpacity\"in k&&\"webkit\");m=!!(\"transition\"in k||g+\"Transition\"in k);l=!!(\"animation\"in k||g+\"Animation\"in k);!c||m&&l||(m=H(k.webkitTransition),l=H(k.webkitAnimation))}return{history:!(!a.history||\r\n!a.history.pushState||4>c||e),hasEvent:function(a){if(\"input\"===a&&11>=Ga)return!1;if(r(d[a])){var b=f.createElement(\"div\");d[a]=\"on\"+a in b}return d[a]},csp:Ba(),vendorPrefix:g,transitions:m,animations:l,android:c}}]}function zf(){this.$get=[\"$templateCache\",\"$http\",\"$q\",\"$sce\",function(a,b,d,c){function e(f,g){e.totalPendingRequests++;H(f)&&a.get(f)||(f=c.getTrustedResourceUrl(f));var h=b.defaults&&b.defaults.transformResponse;K(h)?h=h.filter(function(a){return a!==$b}):h===$b&&(h=null);return b.get(f,\r\n{cache:a,transformResponse:h})[\"finally\"](function(){e.totalPendingRequests--}).then(function(b){a.put(f,b.data);return b.data},function(a){if(!g)throw ga(\"tpload\",f,a.status,a.statusText);return d.reject(a)})}e.totalPendingRequests=0;return e}]}function Af(){this.$get=[\"$rootScope\",\"$browser\",\"$location\",function(a,b,d){return{findBindings:function(a,b,d){a=a.getElementsByClassName(\"ng-binding\");var g=[];p(a,function(a){var c=fa.element(a).data(\"$binding\");c&&p(c,function(c){d?(new RegExp(\"(^|\\\\s)\"+\r\nvd(b)+\"(\\\\s|\\\\||$)\")).test(c)&&g.push(a):-1!=c.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,d){for(var g=[\"ng-\",\"data-ng-\",\"ng\\\\:\"],h=0;hc&&(c=e),c+=+a.slice(e+1),a=a.substring(0,e)):0>c&&(c=a.length);for(e=0;a.charAt(e)==ic;e++);if(e==(g=a.length))d=[0],c=1;else{for(g--;a.charAt(g)==ic;)g--;c-=e;d=[];for(f=0;e<=g;e++,f++)d[f]=+a.charAt(e)}c>Fd&&(d=d.splice(0,Fd-1),b=c-1,c=1);return{d:d,e:b,i:c}}function pg(a,b,d,c){var e=a.d,f=e.length-a.i;b=r(b)?Math.min(Math.max(d,f),c):+b;d=b+a.i;c=e[d];if(0h;)k.unshift(0),h++;0b.lgSize&&h.unshift(k.splice(-b.lgSize).join(\"\"));k.length>b.gSize;)h.unshift(k.splice(-b.gSize).join(\"\"));\r\nk.length&&h.unshift(k.join(\"\"));k=h.join(d);f.length&&(k+=c+f.join(\"\"));e&&(k+=\"e+\"+e)}return 0>a&&!g?b.negPre+k+b.negSuf:b.posPre+k+b.posSuf}function Gb(a,b,d){var c=\"\";0>a&&(c=\"-\",a=-a);for(a=\"\"+a;a.length-d)e+=d;0===e&&-12==d&&(e=12);return Gb(e,b,c)}}function Hb(a,b){return function(d,c){var e=d[\"get\"+a](),f=rb(b?\"SHORT\"+a:a);return c[f][e]}}function Gd(a){var b=(new Date(a,\r\n0,1)).getDay();return new Date(a,0,(4>=b?5:12)-b)}function Hd(a){return function(b){var d=Gd(b.getFullYear());b=+new Date(b.getFullYear(),b.getMonth(),b.getDate()+(4-b.getDay()))-+d;b=1+Math.round(b/6048E5);return Gb(b,a)}}function jc(a,b){return 0>=a.getFullYear()?b.ERAS[0]:b.ERAS[1]}function Ad(a){function b(a){var b;if(b=a.match(d)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,k=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=ea(b[9]+b[10]),g=ea(b[9]+b[11]));h.call(a,ea(b[1]),ea(b[2])-\r\n1,ea(b[3]));f=ea(b[4]||0)-f;g=ea(b[5]||0)-g;h=ea(b[6]||0);b=Math.round(1E3*parseFloat(\"0.\"+(b[7]||0)));k.call(a,f,g,h,b)}return a}var d=/^(\\d{4})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;return function(c,d,f){var g=\"\",h=[],k,m;d=d||\"mediumDate\";d=a.DATETIME_FORMATS[d]||d;H(c)&&(c=qg.test(c)?ea(c):b(c));O(c)&&(c=new Date(c));if(!da(c)||!isFinite(c.getTime()))return c;for(;d;)(m=rg.exec(d))?(h=bb(h,m,1),d=h.pop()):(h.push(d),d=null);var l=c.getTimezoneOffset();\r\nf&&(l=vc(f,l),c=Pb(c,f,!0));p(h,function(b){k=sg[b];g+=k?k(c,a.DATETIME_FORMATS,l):\"''\"===b?\"'\":b.replace(/(^'|'$)/g,\"\").replace(/''/g,\"'\")});return g}}function jg(){return function(a,b){r(b)&&(b=2);return cb(a,b)}}function kg(){return function(a,b,d){b=Infinity===Math.abs(Number(b))?Number(b):ea(b);if(isNaN(b))return a;O(a)&&(a=a.toString());if(!K(a)&&!H(a))return a;d=!d||isNaN(d)?0:ea(d);d=0>d?Math.max(0,a.length+d):d;return 0<=b?a.slice(d,d+b):0===d?a.slice(b,a.length):a.slice(Math.max(0,d+b),\r\nd)}}function Cd(a){function b(b,d){d=d?-1:1;return b.map(function(b){var c=1,h=Za;if(E(b))h=b;else if(H(b)){if(\"+\"==b.charAt(0)||\"-\"==b.charAt(0))c=\"-\"==b.charAt(0)?-1:1,b=b.substring(1);if(\"\"!==b&&(h=a(b),h.constant))var k=h(),h=function(a){return a[k]}}return{get:h,descending:c*d}})}function d(a){switch(typeof a){case \"number\":case \"boolean\":case \"string\":return!0;default:return!1}}return function(a,e,f){if(!za(a))return a;K(e)||(e=[e]);0===e.length&&(e=[\"+\"]);var g=b(e,f);g.push({get:function(){return{}},\r\ndescending:f?-1:1});a=Array.prototype.map.call(a,function(a,b){return{value:a,predicateValues:g.map(function(c){var e=c.get(a);c=typeof e;if(null===e)c=\"string\",e=\"null\";else if(\"string\"===c)e=e.toLowerCase();else if(\"object\"===c)a:{if(\"function\"===typeof e.valueOf&&(e=e.valueOf(),d(e)))break a;if(qc(e)&&(e=e.toString(),d(e)))break a;e=b}return{value:e,type:c}})}});a.sort(function(a,b){for(var c=0,d=0,e=g.length;db||37<=b&&40>=b||l(a,this,this.value)});if(e.hasEvent(\"paste\"))b.on(\"paste cut\",l)}b.on(\"change\",m);if(Kd[g]&&c.$$hasNativeValidators&&g===d.type)b.on(\"keydown wheel mousedown\",function(a){if(!k){var b=this.validity,c=b.badInput,d=b.typeMismatch;k=f.defer(function(){k=null;b.badInput===c&&b.typeMismatch===\r\nd||m(a)})}});c.$render=function(){var a=c.$isEmpty(c.$viewValue)?\"\":c.$viewValue;b.val()!==a&&b.val(a)}}function Kb(a,b){return function(d,c){var e,f;if(da(d))return d;if(H(d)){'\"'==d.charAt(0)&&'\"'==d.charAt(d.length-1)&&(d=d.substring(1,d.length-1));if(tg.test(d))return new Date(d);a.lastIndex=0;if(e=a.exec(d))return e.shift(),f=c?{yyyy:c.getFullYear(),MM:c.getMonth()+1,dd:c.getDate(),HH:c.getHours(),mm:c.getMinutes(),ss:c.getSeconds(),sss:c.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,\r\nss:0,sss:0},p(e,function(a,c){c=s};g.$observe(\"min\",function(a){s=p(a);h.$validate()})}if(x(g.max)||g.ngMax){var q;h.$validators.max=function(a){return!n(a)||r(q)||d(a)<=q};g.$observe(\"max\",function(a){q=p(a);h.$validate()})}}}function Ld(a,b,d,c){(c.$$hasNativeValidators=I(b[0].validity))&&c.$parsers.push(function(a){var c=b.prop(\"validity\")||{};\r\nreturn c.badInput&&!c.typeMismatch?v:a})}function Md(a,b,d,c,e){if(x(c)){a=a(c);if(!a.constant)throw kb(\"constexpr\",d,c);return a(b)}return e}function lc(a,b){a=\"ngClass\"+a;return[\"$animate\",function(d){function c(a,b){var c=[],d=0;a:for(;d(?:<\\/\\1>|)$/,\r\nTb=/<|&#?\\w+;/,Jf=/<([\\w:-]+)/,Kf=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,ka={option:[1,'\"],thead:[1,\"\",\"
\"],col:[2,\"\",\"
\"],tr:[2,\"\",\"
\"],td:[3,\"\",\"
\"],_default:[0,\"\",\"\"]};ka.optgroup=ka.option;ka.tbody=ka.tfoot=ka.colgroup=ka.caption=ka.thead;ka.th=ka.td;var Rf=Node.prototype.contains||function(a){return!!(this.compareDocumentPosition(a)&\r\n16)},Qa=R.prototype={ready:function(a){function b(){d||(d=!0,a())}var d=!1;\"complete\"===W.readyState?setTimeout(b):(this.on(\"DOMContentLoaded\",b),R(U).on(\"load\",b))},toString:function(){var a=[];p(this,function(b){a.push(\"\"+b)});return\"[\"+a.join(\", \")+\"]\"},eq:function(a){return 0<=a?z(this[a]):z(this[this.length+a])},length:0,push:vg,sort:[].sort,splice:[].splice},Bb={};p(\"multiple selected checked disabled readOnly required open\".split(\" \"),function(a){Bb[F(a)]=a});var Sc={};p(\"input select option textarea button form details\".split(\" \"),\r\nfunction(a){Sc[a]=!0});var ad={ngMinlength:\"minlength\",ngMaxlength:\"maxlength\",ngMin:\"min\",ngMax:\"max\",ngPattern:\"pattern\"};p({data:Wb,removeData:ub,hasData:function(a){for(var b in fb[a.ng339])return!0;return!1}},function(a,b){R[b]=a});p({data:Wb,inheritedData:Ab,scope:function(a){return z.data(a,\"$scope\")||Ab(a.parentNode||a,[\"$isolateScope\",\"$scope\"])},isolateScope:function(a){return z.data(a,\"$isolateScope\")||z.data(a,\"$isolateScopeNoTemplate\")},controller:Pc,injector:function(a){return Ab(a,\r\n\"$injector\")},removeAttr:function(a,b){a.removeAttribute(b)},hasClass:xb,css:function(a,b,d){b=eb(b);if(x(d))a.style[b]=d;else return a.style[b]},attr:function(a,b,d){var c=a.nodeType;if(c!==Oa&&2!==c&&8!==c)if(c=F(b),Bb[c])if(x(d))d?(a[b]=!0,a.setAttribute(b,c)):(a[b]=!1,a.removeAttribute(c));else return a[b]||(a.attributes.getNamedItem(b)||y).specified?c:v;else if(x(d))a.setAttribute(b,d);else if(a.getAttribute)return a=a.getAttribute(b,2),null===a?v:a},prop:function(a,b,d){if(x(d))a[b]=d;else return a[b]},\r\ntext:function(){function a(a,d){if(r(d)){var c=a.nodeType;return 1===c||c===Oa?a.textContent:\"\"}a.textContent=d}a.$dv=\"\";return a}(),val:function(a,b){if(r(b)){if(a.multiple&&\"select\"===pa(a)){var d=[];p(a.options,function(a){a.selected&&d.push(a.value||a.text)});return 0===d.length?null:d}return a.value}a.value=b},html:function(a,b){if(r(b))return a.innerHTML;tb(a,!0);a.innerHTML=b},empty:Qc},function(a,b){R.prototype[b]=function(b,c){var e,f,g=this.length;if(a!==Qc&&r(2==a.length&&a!==xb&&a!==Pc?\r\nb:c)){if(I(b)){for(e=0;e <= >= && || ! = |\".split(\" \"),function(a){Lb[a]=!0});var Bg={n:\"\\n\",f:\"\\f\",r:\"\\r\",t:\"\\t\",v:\"\\v\",\"'\":\"'\",'\"':'\"'},fc=function(a){this.options=\r\na};fc.prototype={constructor:fc,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index=a&&\"string\"===typeof a},isWhitespace:function(a){return\" \"===a||\"\\r\"===a||\"\\t\"===a||\"\\n\"===a||\"\\v\"===a||\"\\u00a0\"===a},isIdent:function(a){return\"a\"<=\r\na&&\"z\">=a||\"A\"<=a&&\"Z\">=a||\"_\"===a||\"$\"===a},isExpOperator:function(a){return\"-\"===a||\"+\"===a||this.isNumber(a)},throwError:function(a,b,d){d=d||this.index;b=x(b)?\"s \"+b+\"-\"+this.index+\" [\"+this.text.substring(b,d)+\"]\":\" \"+d;throw ba(\"lexerr\",a,b,this.text);},readNumber:function(){for(var a=\"\",b=this.index;this.index\",\"<=\",\">=\");)a={type:s.BinaryExpression,operator:b.text,left:a,right:this.additive()};return a},additive:function(){for(var a=this.multiplicative(),b;b=this.expect(\"+\",\"-\");)a={type:s.BinaryExpression,operator:b.text,left:a,right:this.multiplicative()};return a},multiplicative:function(){for(var a=this.unary(),b;b=this.expect(\"*\",\"/\",\"%\");)a={type:s.BinaryExpression,operator:b.text,left:a,right:this.unary()};return a},unary:function(){var a;return(a=this.expect(\"+\",\r\n\"-\",\"!\"))?{type:s.UnaryExpression,operator:a.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var a;this.expect(\"(\")?(a=this.filterChain(),this.consume(\")\")):this.expect(\"[\")?a=this.arrayDeclaration():this.expect(\"{\")?a=this.object():this.constants.hasOwnProperty(this.peek().text)?a=Na(this.constants[this.consume().text]):this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant():this.throwError(\"not a primary expression\",this.peek());for(var b;b=this.expect(\"(\",\r\n\"[\",\".\");)\"(\"===b.text?(a={type:s.CallExpression,callee:a,arguments:this.parseArguments()},this.consume(\")\")):\"[\"===b.text?(a={type:s.MemberExpression,object:a,property:this.expression(),computed:!0},this.consume(\"]\")):\".\"===b.text?a={type:s.MemberExpression,object:a,property:this.identifier(),computed:!1}:this.throwError(\"IMPOSSIBLE\");return a},filter:function(a){a=[a];for(var b={type:s.CallExpression,callee:this.identifier(),arguments:a,filter:!0};this.expect(\":\");)a.push(this.expression());return b},\r\nparseArguments:function(){var a=[];if(\")\"!==this.peekToken().text){do a.push(this.expression());while(this.expect(\",\"))}return a},identifier:function(){var a=this.consume();a.identifier||this.throwError(\"is not a valid identifier\",a);return{type:s.Identifier,name:a.text}},constant:function(){return{type:s.Literal,value:this.consume().value}},arrayDeclaration:function(){var a=[];if(\"]\"!==this.peekToken().text){do{if(this.peek(\"]\"))break;a.push(this.expression())}while(this.expect(\",\"))}this.consume(\"]\");\r\nreturn{type:s.ArrayExpression,elements:a}},object:function(){var a=[],b;if(\"}\"!==this.peekToken().text){do{if(this.peek(\"}\"))break;b={type:s.Property,kind:\"init\"};this.peek().constant?b.key=this.constant():this.peek().identifier?b.key=this.identifier():this.throwError(\"invalid key\",this.peek());this.consume(\":\");b.value=this.expression();a.push(b)}while(this.expect(\",\"))}this.consume(\"}\");return{type:s.ObjectExpression,properties:a}},throwError:function(a,b){throw ba(\"syntax\",b.text,a,b.index+1,this.text,\r\nthis.text.substring(b.index));},consume:function(a){if(0===this.tokens.length)throw ba(\"ueoe\",this.text);var b=this.expect(a);b||this.throwError(\"is unexpected, expecting [\"+a+\"]\",this.peek());return b},peekToken:function(){if(0===this.tokens.length)throw ba(\"ueoe\",this.text);return this.tokens[0]},peek:function(a,b,d,c){return this.peekAhead(0,a,b,d,c)},peekAhead:function(a,b,d,c,e){if(this.tokens.length>a){a=this.tokens[a];var f=a.text;if(f===b||f===d||f===c||f===e||!(b||d||c||e))return a}return!1},\r\nexpect:function(a,b,d,c){return(a=this.peek(a,b,d,c))?(this.tokens.shift(),a):!1},constants:{\"true\":{type:s.Literal,value:!0},\"false\":{type:s.Literal,value:!1},\"null\":{type:s.Literal,value:null},undefined:{type:s.Literal,value:v},\"this\":{type:s.ThisExpression}}};sd.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.state={nextId:0,filters:{},expensiveChecks:b,fn:{vars:[],body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]};Y(c,d.$filter);var e=\"\",f;this.stage=\"assign\";\r\nif(f=qd(c))this.state.computing=\"assign\",e=this.nextId(),this.recurse(f,e),this.return_(e),e=\"fn.assign=\"+this.generateFunction(\"assign\",\"s,v,l\");f=od(c.body);d.stage=\"inputs\";p(f,function(a,b){var c=\"fn\"+b;d.state[c]={vars:[],body:[],own:{}};d.state.computing=c;var e=d.nextId();d.recurse(a,e);d.return_(e);d.state.inputs.push(c);a.watchId=b});this.state.computing=\"fn\";this.stage=\"main\";this.recurse(c);e='\"'+this.USE+\" \"+this.STRICT+'\";\\n'+this.filterPrefix()+\"var fn=\"+this.generateFunction(\"fn\",\"s,l,a,i\")+\r\ne+this.watchFns()+\"return fn;\";e=(new Function(\"$filter\",\"ensureSafeMemberName\",\"ensureSafeObject\",\"ensureSafeFunction\",\"getStringValue\",\"ensureSafeAssignContext\",\"ifDefined\",\"plus\",\"text\",e))(this.$filter,Wa,xa,md,ld,Eb,fg,nd,a);this.state=this.stage=v;e.literal=rd(c);e.constant=c.constant;return e},USE:\"use\",STRICT:\"strict\",watchFns:function(){var a=[],b=this.state.inputs,d=this;p(b,function(b){a.push(\"var \"+b+\"=\"+d.generateFunction(b,\"s\"))});b.length&&a.push(\"fn.inputs=[\"+b.join(\",\")+\"];\");return a.join(\"\")},\r\ngenerateFunction:function(a,b){return\"function(\"+b+\"){\"+this.varsPrefix(a)+this.body(a)+\"};\"},filterPrefix:function(){var a=[],b=this;p(this.state.filters,function(d,c){a.push(d+\"=$filter(\"+b.escape(c)+\")\")});return a.length?\"var \"+a.join(\",\")+\";\":\"\"},varsPrefix:function(a){return this.state[a].vars.length?\"var \"+this.state[a].vars.join(\",\")+\";\":\"\"},body:function(a){return this.state[a].body.join(\"\")},recurse:function(a,b,d,c,e,f){var g,h,k=this,m,l;c=c||y;if(!f&&x(a.watchId))b=b||this.nextId(),this.if_(\"i\",\r\nthis.lazyAssign(b,this.computedMember(\"i\",a.watchId)),this.lazyRecurse(a,b,d,c,e,!0));else switch(a.type){case s.Program:p(a.body,function(b,c){k.recurse(b.expression,v,v,function(a){h=a});c!==a.body.length-1?k.current().body.push(h,\";\"):k.return_(h)});break;case s.Literal:l=this.escape(a.value);this.assign(b,l);c(l);break;case s.UnaryExpression:this.recurse(a.argument,v,v,function(a){h=a});l=a.operator+\"(\"+this.ifDefined(h,0)+\")\";this.assign(b,l);c(l);break;case s.BinaryExpression:this.recurse(a.left,\r\nv,v,function(a){g=a});this.recurse(a.right,v,v,function(a){h=a});l=\"+\"===a.operator?this.plus(g,h):\"-\"===a.operator?this.ifDefined(g,0)+a.operator+this.ifDefined(h,0):\"(\"+g+\")\"+a.operator+\"(\"+h+\")\";this.assign(b,l);c(l);break;case s.LogicalExpression:b=b||this.nextId();k.recurse(a.left,b);k.if_(\"&&\"===a.operator?b:k.not(b),k.lazyRecurse(a.right,b));c(b);break;case s.ConditionalExpression:b=b||this.nextId();k.recurse(a.test,b);k.if_(b,k.lazyRecurse(a.alternate,b),k.lazyRecurse(a.consequent,b));c(b);\r\nbreak;case s.Identifier:b=b||this.nextId();d&&(d.context=\"inputs\"===k.stage?\"s\":this.assign(this.nextId(),this.getHasOwnProperty(\"l\",a.name)+\"?l:s\"),d.computed=!1,d.name=a.name);Wa(a.name);k.if_(\"inputs\"===k.stage||k.not(k.getHasOwnProperty(\"l\",a.name)),function(){k.if_(\"inputs\"===k.stage||\"s\",function(){e&&1!==e&&k.if_(k.not(k.nonComputedMember(\"s\",a.name)),k.lazyAssign(k.nonComputedMember(\"s\",a.name),\"{}\"));k.assign(b,k.nonComputedMember(\"s\",a.name))})},b&&k.lazyAssign(b,k.nonComputedMember(\"l\",\r\na.name)));(k.state.expensiveChecks||Fb(a.name))&&k.addEnsureSafeObject(b);c(b);break;case s.MemberExpression:g=d&&(d.context=this.nextId())||this.nextId();b=b||this.nextId();k.recurse(a.object,g,v,function(){k.if_(k.notNull(g),function(){e&&1!==e&&k.addEnsureSafeAssignContext(g);if(a.computed)h=k.nextId(),k.recurse(a.property,h),k.getStringValue(h),k.addEnsureSafeMemberName(h),e&&1!==e&&k.if_(k.not(k.computedMember(g,h)),k.lazyAssign(k.computedMember(g,h),\"{}\")),l=k.ensureSafeObject(k.computedMember(g,\r\nh)),k.assign(b,l),d&&(d.computed=!0,d.name=h);else{Wa(a.property.name);e&&1!==e&&k.if_(k.not(k.nonComputedMember(g,a.property.name)),k.lazyAssign(k.nonComputedMember(g,a.property.name),\"{}\"));l=k.nonComputedMember(g,a.property.name);if(k.state.expensiveChecks||Fb(a.property.name))l=k.ensureSafeObject(l);k.assign(b,l);d&&(d.computed=!1,d.name=a.property.name)}},function(){k.assign(b,\"undefined\")});c(b)},!!e);break;case s.CallExpression:b=b||this.nextId();a.filter?(h=k.filter(a.callee.name),m=[],p(a.arguments,\r\nfunction(a){var b=k.nextId();k.recurse(a,b);m.push(b)}),l=h+\"(\"+m.join(\",\")+\")\",k.assign(b,l),c(b)):(h=k.nextId(),g={},m=[],k.recurse(a.callee,h,g,function(){k.if_(k.notNull(h),function(){k.addEnsureSafeFunction(h);p(a.arguments,function(a){k.recurse(a,k.nextId(),v,function(a){m.push(k.ensureSafeObject(a))})});g.name?(k.state.expensiveChecks||k.addEnsureSafeObject(g.context),l=k.member(g.context,g.name,g.computed)+\"(\"+m.join(\",\")+\")\"):l=h+\"(\"+m.join(\",\")+\")\";l=k.ensureSafeObject(l);k.assign(b,l)},\r\nfunction(){k.assign(b,\"undefined\")});c(b)}));break;case s.AssignmentExpression:h=this.nextId();g={};if(!pd(a.left))throw ba(\"lval\");this.recurse(a.left,v,g,function(){k.if_(k.notNull(g.context),function(){k.recurse(a.right,h);k.addEnsureSafeObject(k.member(g.context,g.name,g.computed));k.addEnsureSafeAssignContext(g.context);l=k.member(g.context,g.name,g.computed)+a.operator+h;k.assign(b,l);c(b||l)})},1);break;case s.ArrayExpression:m=[];p(a.elements,function(a){k.recurse(a,k.nextId(),v,function(a){m.push(a)})});\r\nl=\"[\"+m.join(\",\")+\"]\";this.assign(b,l);c(l);break;case s.ObjectExpression:m=[];p(a.properties,function(a){k.recurse(a.value,k.nextId(),v,function(b){m.push(k.escape(a.key.type===s.Identifier?a.key.name:\"\"+a.key.value)+\":\"+b)})});l=\"{\"+m.join(\",\")+\"}\";this.assign(b,l);c(l);break;case s.ThisExpression:this.assign(b,\"s\");c(\"s\");break;case s.NGValueParameter:this.assign(b,\"v\"),c(\"v\")}},getHasOwnProperty:function(a,b){var d=a+\".\"+b,c=this.current().own;c.hasOwnProperty(d)||(c[d]=this.nextId(!1,a+\"&&(\"+\r\nthis.escape(b)+\" in \"+a+\")\"));return c[d]},assign:function(a,b){if(a)return this.current().body.push(a,\"=\",b,\";\"),a},filter:function(a){this.state.filters.hasOwnProperty(a)||(this.state.filters[a]=this.nextId(!0));return this.state.filters[a]},ifDefined:function(a,b){return\"ifDefined(\"+a+\",\"+this.escape(b)+\")\"},plus:function(a,b){return\"plus(\"+a+\",\"+b+\")\"},return_:function(a){this.current().body.push(\"return \",a,\";\")},if_:function(a,b,d){if(!0===a)b();else{var c=this.current().body;c.push(\"if(\",a,\r\n\"){\");b();c.push(\"}\");d&&(c.push(\"else{\"),d(),c.push(\"}\"))}},not:function(a){return\"!(\"+a+\")\"},notNull:function(a){return a+\"!=null\"},nonComputedMember:function(a,b){return a+\".\"+b},computedMember:function(a,b){return a+\"[\"+b+\"]\"},member:function(a,b,d){return d?this.computedMember(a,b):this.nonComputedMember(a,b)},addEnsureSafeObject:function(a){this.current().body.push(this.ensureSafeObject(a),\";\")},addEnsureSafeMemberName:function(a){this.current().body.push(this.ensureSafeMemberName(a),\";\")},\r\naddEnsureSafeFunction:function(a){this.current().body.push(this.ensureSafeFunction(a),\";\")},addEnsureSafeAssignContext:function(a){this.current().body.push(this.ensureSafeAssignContext(a),\";\")},ensureSafeObject:function(a){return\"ensureSafeObject(\"+a+\",text)\"},ensureSafeMemberName:function(a){return\"ensureSafeMemberName(\"+a+\",text)\"},ensureSafeFunction:function(a){return\"ensureSafeFunction(\"+a+\",text)\"},getStringValue:function(a){this.assign(a,\"getStringValue(\"+a+\",text)\")},ensureSafeAssignContext:function(a){return\"ensureSafeAssignContext(\"+\r\na+\",text)\"},lazyRecurse:function(a,b,d,c,e,f){var g=this;return function(){g.recurse(a,b,d,c,e,f)}},lazyAssign:function(a,b){var d=this;return function(){d.assign(a,b)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(a){return\"\\\\u\"+(\"0000\"+a.charCodeAt(0).toString(16)).slice(-4)},escape:function(a){if(H(a))return\"'\"+a.replace(this.stringEscapeRegex,this.stringEscapeFn)+\"'\";if(O(a))return a.toString();if(!0===a)return\"true\";if(!1===a)return\"false\";if(null===a)return\"null\";if(\"undefined\"===\r\ntypeof a)return\"undefined\";throw ba(\"esc\");},nextId:function(a,b){var d=\"v\"+this.state.nextId++;a||this.current().vars.push(d+(b?\"=\"+b:\"\"));return d},current:function(){return this.state[this.state.computing]}};td.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.expression=a;this.expensiveChecks=b;Y(c,d.$filter);var e,f;if(e=qd(c))f=this.recurse(e);e=od(c.body);var g;e&&(g=[],p(e,function(a,b){var c=d.recurse(a);a.input=c;g.push(c);a.watchId=b}));var h=[];p(c.body,function(a){h.push(d.recurse(a.expression))});\r\ne=0===c.body.length?function(){}:1===c.body.length?h[0]:function(a,b){var c;p(h,function(d){c=d(a,b)});return c};f&&(e.assign=function(a,b,c){return f(a,c,b)});g&&(e.inputs=g);e.literal=rd(c);e.constant=c.constant;return e},recurse:function(a,b,d){var c,e,f=this,g;if(a.input)return this.inputs(a.input,a.watchId);switch(a.type){case s.Literal:return this.value(a.value,b);case s.UnaryExpression:return e=this.recurse(a.argument),this[\"unary\"+a.operator](e,b);case s.BinaryExpression:return c=this.recurse(a.left),\r\ne=this.recurse(a.right),this[\"binary\"+a.operator](c,e,b);case s.LogicalExpression:return c=this.recurse(a.left),e=this.recurse(a.right),this[\"binary\"+a.operator](c,e,b);case s.ConditionalExpression:return this[\"ternary?:\"](this.recurse(a.test),this.recurse(a.alternate),this.recurse(a.consequent),b);case s.Identifier:return Wa(a.name,f.expression),f.identifier(a.name,f.expensiveChecks||Fb(a.name),b,d,f.expression);case s.MemberExpression:return c=this.recurse(a.object,!1,!!d),a.computed||(Wa(a.property.name,\r\nf.expression),e=a.property.name),a.computed&&(e=this.recurse(a.property)),a.computed?this.computedMember(c,e,b,d,f.expression):this.nonComputedMember(c,e,f.expensiveChecks,b,d,f.expression);case s.CallExpression:return g=[],p(a.arguments,function(a){g.push(f.recurse(a))}),a.filter&&(e=this.$filter(a.callee.name)),a.filter||(e=this.recurse(a.callee,!0)),a.filter?function(a,c,d,f){for(var n=[],p=0;p\":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>b(c,e,f,g);return d?{value:c}:c}},\"binary<=\":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)<=b(c,e,f,g);return d?{value:c}:c}},\"binary>=\":function(a,b,d){return function(c,\r\ne,f,g){c=a(c,e,f,g)>=b(c,e,f,g);return d?{value:c}:c}},\"binary&&\":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)&&b(c,e,f,g);return d?{value:c}:c}},\"binary||\":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)||b(c,e,f,g);return d?{value:c}:c}},\"ternary?:\":function(a,b,d,c){return function(e,f,g,h){e=a(e,f,g,h)?b(e,f,g,h):d(e,f,g,h);return c?{value:e}:e}},value:function(a,b){return function(){return b?{context:v,name:v,value:a}:a}},identifier:function(a,b,d,c,e){return function(f,g,h,k){f=\r\ng&&a in g?g:f;c&&1!==c&&f&&!f[a]&&(f[a]={});g=f?f[a]:v;b&&xa(g,e);return d?{context:f,name:a,value:g}:g}},computedMember:function(a,b,d,c,e){return function(f,g,h,k){var m=a(f,g,h,k),l,n;null!=m&&(l=b(f,g,h,k),l=ld(l),Wa(l,e),c&&1!==c&&(Eb(m),m&&!m[l]&&(m[l]={})),n=m[l],xa(n,e));return d?{context:m,name:l,value:n}:n}},nonComputedMember:function(a,b,d,c,e,f){return function(g,h,k,m){g=a(g,h,k,m);e&&1!==e&&(Eb(g),g&&!g[b]&&(g[b]={}));h=null!=g?g[b]:v;(d||Fb(b))&&xa(h,f);return c?{context:g,name:b,value:h}:\r\nh}},inputs:function(a,b){return function(d,c,e,f){return f?f[b]:a(d,c,e)}}};var gc=function(a,b,d){this.lexer=a;this.$filter=b;this.options=d;this.ast=new s(this.lexer);this.astCompiler=d.csp?new td(this.ast,b):new sd(this.ast,b)};gc.prototype={constructor:gc,parse:function(a){return this.astCompiler.compile(a,this.options.expensiveChecks)}};var gg=Object.prototype.valueOf,ya=L(\"$sce\"),la={HTML:\"html\",CSS:\"css\",URL:\"url\",RESOURCE_URL:\"resourceUrl\",JS:\"js\"},ga=L(\"$compile\"),Z=W.createElement(\"a\"),\r\nxd=wa(U.location.href);yd.$inject=[\"$document\"];Jc.$inject=[\"$provide\"];var Fd=22,Ed=\".\",ic=\"0\";zd.$inject=[\"$locale\"];Bd.$inject=[\"$locale\"];var sg={yyyy:ca(\"FullYear\",4),yy:ca(\"FullYear\",2,0,!0),y:ca(\"FullYear\",1),MMMM:Hb(\"Month\"),MMM:Hb(\"Month\",!0),MM:ca(\"Month\",2,1),M:ca(\"Month\",1,1),dd:ca(\"Date\",2),d:ca(\"Date\",1),HH:ca(\"Hours\",2),H:ca(\"Hours\",1),hh:ca(\"Hours\",2,-12),h:ca(\"Hours\",1,-12),mm:ca(\"Minutes\",2),m:ca(\"Minutes\",1),ss:ca(\"Seconds\",2),s:ca(\"Seconds\",1),sss:ca(\"Milliseconds\",3),EEEE:Hb(\"Day\"),\r\nEEE:Hb(\"Day\",!0),a:function(a,b){return 12>a.getHours()?b.AMPMS[0]:b.AMPMS[1]},Z:function(a,b,d){a=-1*d;return a=(0<=a?\"+\":\"\")+(Gb(Math[0=a.getFullYear()?b.ERANAMES[0]:b.ERANAMES[1]}},rg=/((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,qg=/^\\-?\\d+$/;Ad.$inject=[\"$locale\"];var lg=na(F),mg=na(rb);Cd.$inject=[\"$parse\"];var me=na({restrict:\"E\",compile:function(a,\r\nb){if(!b.href&&!b.xlinkHref)return function(a,b){if(\"a\"===b[0].nodeName.toLowerCase()){var e=\"[object SVGAnimatedString]\"===oa.call(b.prop(\"href\"))?\"xlink:href\":\"href\";b.on(\"click\",function(a){b.attr(e)||a.preventDefault()})}}}}),sb={};p(Bb,function(a,b){function d(a,d,e){a.$watch(e[c],function(a){e.$set(b,!!a)})}if(\"multiple\"!=a){var c=va(\"ng-\"+b),e=d;\"checked\"===a&&(e=function(a,b,e){e.ngModel!==e[c]&&d(a,b,e)});sb[c]=function(){return{restrict:\"A\",priority:100,link:e}}}});p(ad,function(a,b){sb[b]=\r\nfunction(){return{priority:100,link:function(a,c,e){if(\"ngPattern\"===b&&\"/\"==e.ngPattern.charAt(0)&&(c=e.ngPattern.match(ug))){e.$set(\"ngPattern\",new RegExp(c[1],c[2]));return}a.$watch(e[b],function(a){e.$set(b,a)})}}}});p([\"src\",\"srcset\",\"href\"],function(a){var b=va(\"ng-\"+a);sb[b]=function(){return{priority:99,link:function(d,c,e){var f=a,g=a;\"href\"===a&&\"[object SVGAnimatedString]\"===oa.call(c.prop(\"href\"))&&(g=\"xlinkHref\",e.$attr[g]=\"xlink:href\",f=null);e.$observe(b,function(b){b?(e.$set(g,b),\r\nGa&&f&&c.prop(f,e[g])):\"href\"===a&&e.$set(g,null)})}}}});var Ib={$addControl:y,$$renameControl:function(a,b){a.$name=b},$removeControl:y,$setValidity:y,$setDirty:y,$setPristine:y,$setSubmitted:y};Id.$inject=[\"$element\",\"$attrs\",\"$scope\",\"$animate\",\"$interpolate\"];var Rd=function(a){return[\"$timeout\",\"$parse\",function(b,d){function c(a){return\"\"===a?d('this[\"\"]').assign:d(a).assign||y}return{name:\"form\",restrict:a?\"EAC\":\"E\",require:[\"form\",\"^^?form\"],controller:Id,compile:function(d,f){d.addClass(Xa).addClass(lb);\r\nvar g=f.name?\"name\":a&&f.ngForm?\"ngForm\":!1;return{pre:function(a,d,e,f){var n=f[0];if(!(\"action\"in e)){var p=function(b){a.$apply(function(){n.$commitViewValue();n.$setSubmitted()});b.preventDefault()};d[0].addEventListener(\"submit\",p,!1);d.on(\"$destroy\",function(){b(function(){d[0].removeEventListener(\"submit\",p,!1)},0,!1)})}(f[1]||n.$$parentForm).$addControl(n);var r=g?c(n.$name):y;g&&(r(a,n),e.$observe(g,function(b){n.$name!==b&&(r(a,v),n.$$parentForm.$$renameControl(n,b),r=c(n.$name),r(a,n))}));\r\nd.on(\"$destroy\",function(){n.$$parentForm.$removeControl(n);r(a,v);M(n,Ib)})}}}}}]},ne=Rd(),Ae=Rd(!0),tg=/\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z)/,Cg=/^[a-z][a-z\\d.+-]*:\\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\\s:/?#]+|\\[[a-f\\d:]+\\])(?::\\d+)?(?:\\/[^?#]*)?(?:\\?[^#]*)?(?:#.*)?$/i,Dg=/^[a-z0-9!#$%&'*+\\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,Eg=/^\\s*(\\-|\\+)?(\\d+|(\\d*(\\.\\d*)))([eE][+-]?\\d+)?\\s*$/,Sd=/^(\\d{4})-(\\d{2})-(\\d{2})$/,Td=/^(\\d{4})-(\\d\\d)-(\\d\\d)T(\\d\\d):(\\d\\d)(?::(\\d\\d)(\\.\\d{1,3})?)?$/,\r\nmc=/^(\\d{4})-W(\\d\\d)$/,Ud=/^(\\d{4})-(\\d\\d)$/,Vd=/^(\\d\\d):(\\d\\d)(?::(\\d\\d)(\\.\\d{1,3})?)?$/,Kd=aa();p([\"date\",\"datetime-local\",\"month\",\"time\",\"week\"],function(a){Kd[a]=!0});var Wd={text:function(a,b,d,c,e,f){ib(a,b,d,c,e,f);kc(c)},date:jb(\"date\",Sd,Kb(Sd,[\"yyyy\",\"MM\",\"dd\"]),\"yyyy-MM-dd\"),\"datetime-local\":jb(\"datetimelocal\",Td,Kb(Td,\"yyyy MM dd HH mm ss sss\".split(\" \")),\"yyyy-MM-ddTHH:mm:ss.sss\"),time:jb(\"time\",Vd,Kb(Vd,[\"HH\",\"mm\",\"ss\",\"sss\"]),\"HH:mm:ss.sss\"),week:jb(\"week\",mc,function(a,b){if(da(a))return a;\r\nif(H(a)){mc.lastIndex=0;var d=mc.exec(a);if(d){var c=+d[1],e=+d[2],f=d=0,g=0,h=0,k=Gd(c),e=7*(e-1);b&&(d=b.getHours(),f=b.getMinutes(),g=b.getSeconds(),h=b.getMilliseconds());return new Date(c,0,k.getDate()+e,d,f,g,h)}}return NaN},\"yyyy-Www\"),month:jb(\"month\",Ud,Kb(Ud,[\"yyyy\",\"MM\"]),\"yyyy-MM\"),number:function(a,b,d,c,e,f){Ld(a,b,d,c);ib(a,b,d,c,e,f);c.$$parserName=\"number\";c.$parsers.push(function(a){return c.$isEmpty(a)?null:Eg.test(a)?parseFloat(a):v});c.$formatters.push(function(a){if(!c.$isEmpty(a)){if(!O(a))throw kb(\"numfmt\",\r\na);a=a.toString()}return a});if(x(d.min)||d.ngMin){var g;c.$validators.min=function(a){return c.$isEmpty(a)||r(g)||a>=g};d.$observe(\"min\",function(a){x(a)&&!O(a)&&(a=parseFloat(a,10));g=O(a)&&!isNaN(a)?a:v;c.$validate()})}if(x(d.max)||d.ngMax){var h;c.$validators.max=function(a){return c.$isEmpty(a)||r(h)||a<=h};d.$observe(\"max\",function(a){x(a)&&!O(a)&&(a=parseFloat(a,10));h=O(a)&&!isNaN(a)?a:v;c.$validate()})}},url:function(a,b,d,c,e,f){ib(a,b,d,c,e,f);kc(c);c.$$parserName=\"url\";c.$validators.url=\r\nfunction(a,b){var d=a||b;return c.$isEmpty(d)||Cg.test(d)}},email:function(a,b,d,c,e,f){ib(a,b,d,c,e,f);kc(c);c.$$parserName=\"email\";c.$validators.email=function(a,b){var d=a||b;return c.$isEmpty(d)||Dg.test(d)}},radio:function(a,b,d,c){r(d.name)&&b.attr(\"name\",++mb);b.on(\"click\",function(a){b[0].checked&&c.$setViewValue(d.value,a&&a.type)});c.$render=function(){b[0].checked=d.value==c.$viewValue};d.$observe(\"value\",c.$render)},checkbox:function(a,b,d,c,e,f,g,h){var k=Md(h,a,\"ngTrueValue\",d.ngTrueValue,\r\n!0),m=Md(h,a,\"ngFalseValue\",d.ngFalseValue,!1);b.on(\"click\",function(a){c.$setViewValue(b[0].checked,a&&a.type)});c.$render=function(){b[0].checked=c.$viewValue};c.$isEmpty=function(a){return!1===a};c.$formatters.push(function(a){return ma(a,k)});c.$parsers.push(function(a){return a?k:m})},hidden:y,button:y,submit:y,reset:y,file:y},Dc=[\"$browser\",\"$sniffer\",\"$filter\",\"$parse\",function(a,b,d,c){return{restrict:\"E\",require:[\"?ngModel\"],link:{pre:function(e,f,g,h){h[0]&&(Wd[F(g.type)]||Wd.text)(e,f,\r\ng,h[0],b,a,d,c)}}}}],Fg=/^(true|false|\\d+)$/,Se=function(){return{restrict:\"A\",priority:100,compile:function(a,b){return Fg.test(b.ngValue)?function(a,b,e){e.$set(\"value\",a.$eval(e.ngValue))}:function(a,b,e){a.$watch(e.ngValue,function(a){e.$set(\"value\",a)})}}}},se=[\"$compile\",function(a){return{restrict:\"AC\",compile:function(b){a.$$addBindingClass(b);return function(b,c,e){a.$$addBindingInfo(c,e.ngBind);c=c[0];b.$watch(e.ngBind,function(a){c.textContent=r(a)?\"\":a})}}}}],ue=[\"$interpolate\",\"$compile\",\r\nfunction(a,b){return{compile:function(d){b.$$addBindingClass(d);return function(c,d,f){c=a(d.attr(f.$attr.ngBindTemplate));b.$$addBindingInfo(d,c.expressions);d=d[0];f.$observe(\"ngBindTemplate\",function(a){d.textContent=r(a)?\"\":a})}}}}],te=[\"$sce\",\"$parse\",\"$compile\",function(a,b,d){return{restrict:\"A\",compile:function(c,e){var f=b(e.ngBindHtml),g=b(e.ngBindHtml,function(a){return(a||\"\").toString()});d.$$addBindingClass(c);return function(b,c,e){d.$$addBindingInfo(c,e.ngBindHtml);b.$watch(g,function(){c.html(a.getTrustedHtml(f(b))||\r\n\"\")})}}}}],Re=na({restrict:\"A\",require:\"ngModel\",link:function(a,b,d,c){c.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),ve=lc(\"\",!0),xe=lc(\"Odd\",0),we=lc(\"Even\",1),ye=Ka({compile:function(a,b){b.$set(\"ngCloak\",v);a.removeClass(\"ng-cloak\")}}),ze=[function(){return{restrict:\"A\",scope:!0,controller:\"@\",priority:500}}],Ic={},Gg={blur:!0,focus:!0};p(\"click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste\".split(\" \"),\r\nfunction(a){var b=va(\"ng-\"+a);Ic[b]=[\"$parse\",\"$rootScope\",function(d,c){return{restrict:\"A\",compile:function(e,f){var g=d(f[b],null,!0);return function(b,d){d.on(a,function(d){var e=function(){g(b,{$event:d})};Gg[a]&&c.$$phase?b.$evalAsync(e):b.$apply(e)})}}}}]});var Ce=[\"$animate\",function(a){return{multiElement:!0,transclude:\"element\",priority:600,terminal:!0,restrict:\"A\",$$tlb:!0,link:function(b,d,c,e,f){var g,h,k;b.$watch(c.ngIf,function(b){b?h||f(function(b,e){h=e;b[b.length++]=W.createComment(\" end ngIf: \"+\r\nc.ngIf+\" \");g={clone:b};a.enter(b,d.parent(),d)}):(k&&(k.remove(),k=null),h&&(h.$destroy(),h=null),g&&(k=qb(g.clone),a.leave(k).then(function(){k=null}),g=null))})}}}],De=[\"$templateRequest\",\"$anchorScroll\",\"$animate\",function(a,b,d){return{restrict:\"ECA\",priority:400,terminal:!0,transclude:\"element\",controller:fa.noop,compile:function(c,e){var f=e.ngInclude||e.src,g=e.onload||\"\",h=e.autoscroll;return function(c,e,l,n,p){var r=0,u,s,q,w=function(){s&&(s.remove(),s=null);u&&(u.$destroy(),u=null);q&&\r\n(d.leave(q).then(function(){s=null}),s=q,q=null)};c.$watch(f,function(f){var l=function(){!x(h)||h&&!c.$eval(h)||b()},D=++r;f?(a(f,!0).then(function(a){if(!c.$$destroyed&&D===r){var b=c.$new();n.template=a;a=p(b,function(a){w();d.enter(a,null,e).then(l)});u=b;q=a;u.$emit(\"$includeContentLoaded\",f);c.$eval(g)}},function(){c.$$destroyed||D!==r||(w(),c.$emit(\"$includeContentError\",f))}),c.$emit(\"$includeContentRequested\",f)):(w(),n.template=null)})}}}}],Ue=[\"$compile\",function(a){return{restrict:\"ECA\",\r\npriority:-400,require:\"ngInclude\",link:function(b,d,c,e){/SVG/.test(d[0].toString())?(d.empty(),a(Lc(e.template,W).childNodes)(b,function(a){d.append(a)},{futureParentElement:d})):(d.html(e.template),a(d.contents())(b))}}}],Ee=Ka({priority:450,compile:function(){return{pre:function(a,b,d){a.$eval(d.ngInit)}}}}),Qe=function(){return{restrict:\"A\",priority:100,require:\"ngModel\",link:function(a,b,d,c){var e=b.attr(d.$attr.ngList)||\", \",f=\"false\"!==d.ngTrim,g=f?V(e):e;c.$parsers.push(function(a){if(!r(a)){var b=\r\n[];a&&p(a.split(g),function(a){a&&b.push(f?V(a):a)});return b}});c.$formatters.push(function(a){return K(a)?a.join(e):v});c.$isEmpty=function(a){return!a||!a.length}}}},lb=\"ng-valid\",Nd=\"ng-invalid\",Xa=\"ng-pristine\",Jb=\"ng-dirty\",Pd=\"ng-pending\",kb=L(\"ngModel\"),Hg=[\"$scope\",\"$exceptionHandler\",\"$attrs\",\"$element\",\"$parse\",\"$animate\",\"$timeout\",\"$rootScope\",\"$q\",\"$interpolate\",function(a,b,d,c,e,f,g,h,k,m){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=v;this.$validators={};this.$asyncValidators=\r\n{};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success={};this.$pending=v;this.$name=m(d.name||\"\",!1)(a);this.$$parentForm=Ib;var l=e(d.ngModel),n=l.assign,s=l,A=n,u=null,z,q=this;this.$$setOptions=function(a){if((q.$options=a)&&a.getterSetter){var b=e(d.ngModel+\"()\"),f=e(d.ngModel+\"($$$p)\");s=function(a){var c=l(a);E(c)&&(c=b(a));return c};A=function(a,\r\nb){E(l(a))?f(a,{$$$p:q.$modelValue}):n(a,q.$modelValue)}}else if(!l.assign)throw kb(\"nonassign\",d.ngModel,ua(c));};this.$render=y;this.$isEmpty=function(a){return r(a)||\"\"===a||null===a||a!==a};var w=0;Jd({ctrl:this,$element:c,set:function(a,b){a[b]=!0},unset:function(a,b){delete a[b]},$animate:f});this.$setPristine=function(){q.$dirty=!1;q.$pristine=!0;f.removeClass(c,Jb);f.addClass(c,Xa)};this.$setDirty=function(){q.$dirty=!0;q.$pristine=!1;f.removeClass(c,Xa);f.addClass(c,Jb);q.$$parentForm.$setDirty()};\r\nthis.$setUntouched=function(){q.$touched=!1;q.$untouched=!0;f.setClass(c,\"ng-untouched\",\"ng-touched\")};this.$setTouched=function(){q.$touched=!0;q.$untouched=!1;f.setClass(c,\"ng-touched\",\"ng-untouched\")};this.$rollbackViewValue=function(){g.cancel(u);q.$viewValue=q.$$lastCommittedViewValue;q.$render()};this.$validate=function(){if(!O(q.$modelValue)||!isNaN(q.$modelValue)){var a=q.$$rawModelValue,b=q.$valid,c=q.$modelValue,d=q.$options&&q.$options.allowInvalid;q.$$runValidators(a,q.$$lastCommittedViewValue,\r\nfunction(e){d||b===e||(q.$modelValue=e?a:v,q.$modelValue!==c&&q.$$writeModelToScope())})}};this.$$runValidators=function(a,b,c){function d(){var c=!0;p(q.$validators,function(d,e){var g=d(a,b);c=c&&g;f(e,g)});return c?!0:(p(q.$asyncValidators,function(a,b){f(b,null)}),!1)}function e(){var c=[],d=!0;p(q.$asyncValidators,function(e,g){var h=e(a,b);if(!h||!E(h.then))throw kb(\"nopromise\",h);f(g,v);c.push(h.then(function(){f(g,!0)},function(a){d=!1;f(g,!1)}))});c.length?k.all(c).then(function(){g(d)},\r\ny):g(!0)}function f(a,b){h===w&&q.$setValidity(a,b)}function g(a){h===w&&c(a)}w++;var h=w;(function(){var a=q.$$parserName||\"parse\";if(r(z))f(a,null);else return z||(p(q.$validators,function(a,b){f(b,null)}),p(q.$asyncValidators,function(a,b){f(b,null)})),f(a,z),z;return!0})()?d()?e():g(!1):g(!1)};this.$commitViewValue=function(){var a=q.$viewValue;g.cancel(u);if(q.$$lastCommittedViewValue!==a||\"\"===a&&q.$$hasNativeValidators)q.$$lastCommittedViewValue=a,q.$pristine&&this.$setDirty(),this.$$parseAndValidate()};\r\nthis.$$parseAndValidate=function(){var b=q.$$lastCommittedViewValue;if(z=r(b)?v:!0)for(var c=0;ce||c.$isEmpty(b)||b.length<=e}}}}},Gc=function(){return{restrict:\"A\",require:\"?ngModel\",link:function(a,b,d,c){if(c){var e=0;d.$observe(\"minlength\",function(a){e=ea(a)||0;c.$validate()});\r\nc.$validators.minlength=function(a,b){return c.$isEmpty(b)||b.length>=e}}}}};U.angular.bootstrap?U.console&&console.log(\"WARNING: Tried to load angular more than once.\"):(he(),je(fa),fa.module(\"ngLocale\",[],[\"$provide\",function(a){function b(a){a+=\"\";var b=a.indexOf(\".\");return-1==b?0:a.length-b-1}a.value(\"$locale\",{DATETIME_FORMATS:{AMPMS:[\"AM\",\"PM\"],DAY:\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),ERANAMES:[\"Before Christ\",\"Anno Domini\"],ERAS:[\"BC\",\"AD\"],FIRSTDAYOFWEEK:6,\r\nMONTH:\"January February March April May June July August September October November December\".split(\" \"),SHORTDAY:\"Sun Mon Tue Wed Thu Fri Sat\".split(\" \"),SHORTMONTH:\"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\".split(\" \"),STANDALONEMONTH:\"January February March April May June July August September October November December\".split(\" \"),WEEKENDRANGE:[5,6],fullDate:\"EEEE, MMMM d, y\",longDate:\"MMMM d, y\",medium:\"MMM d, y h:mm:ss a\",mediumDate:\"MMM d, y\",mediumTime:\"h:mm:ss a\",\"short\":\"M/d/yy h:mm a\",\r\nshortDate:\"M/d/yy\",shortTime:\"h:mm a\"},NUMBER_FORMATS:{CURRENCY_SYM:\"$\",DECIMAL_SEP:\".\",GROUP_SEP:\",\",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:\"-\",negSuf:\"\",posPre:\"\",posSuf:\"\"},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:\"-\\u00a4\",negSuf:\"\",posPre:\"\\u00a4\",posSuf:\"\"}]},id:\"en-us\",localeID:\"en_US\",pluralCat:function(a,c){var e=a|0,f=c;v===f&&(f=Math.min(b(a),3));Math.pow(10,f);return 1==e&&0==f?\"one\":\"other\"}})}]),z(W).ready(function(){de(W,yc)}))})(window,document);\r\n!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend('');\r\n//# sourceMappingURL=angular.min.js.map\r\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./bower_components/angular/angular.min.js\n ** module id = 2\n ** module chunks = 0\n **/","(function(angular) {\r\n/*\r\n AngularJS v1.4.10\r\n (c) 2010-2015 Google, Inc. http://angularjs.org\r\n License: MIT\r\n*/\r\n(function(p,c,n){'use strict';function l(b,a,g){var d=g.baseHref(),k=b[0];return function(b,e,f){var g,h;f=f||{};h=f.expires;g=c.isDefined(f.path)?f.path:d;c.isUndefined(e)&&(h=\"Thu, 01 Jan 1970 00:00:00 GMT\",e=\"\");c.isString(h)&&(h=new Date(h));e=encodeURIComponent(b)+\"=\"+encodeURIComponent(e);e=e+(g?\";path=\"+g:\"\")+(f.domain?\";domain=\"+f.domain:\"\");e+=h?\";expires=\"+h.toUTCString():\"\";e+=f.secure?\";secure\":\"\";f=e.length+1;4096 4096 bytes)!\");k.cookie=e}}c.module(\"ngCookies\",[\"ng\"]).provider(\"$cookies\",[function(){var b=this.defaults={};this.$get=[\"$$cookieReader\",\"$$cookieWriter\",function(a,g){return{get:function(d){return a()[d]},getObject:function(d){return(d=this.get(d))?c.fromJson(d):d},getAll:function(){return a()},put:function(d,a,m){g(d,a,m?c.extend({},b,m):b)},putObject:function(d,b,a){this.put(d,c.toJson(b),a)},remove:function(a,k){g(a,n,k?c.extend({},b,k):b)}}}]}]);c.module(\"ngCookies\").factory(\"$cookieStore\",\r\n[\"$cookies\",function(b){return{get:function(a){return b.getObject(a)},put:function(a,c){b.putObject(a,c)},remove:function(a){b.remove(a)}}}]);l.$inject=[\"$document\",\"$log\",\"$browser\"];c.module(\"ngCookies\").provider(\"$$cookieWriter\",function(){this.$get=l})})(window,window.angular);\r\n//# sourceMappingURL=angular-cookies.min.js.map\r\n\r\n})(angular);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./loaders/iifeloader.js!./bower_components/angular-cookies/angular-cookies.min.js\n ** module id = 3\n ** module chunks = 0\n **/","(function(angular) {\r\n/**\r\n * @license\r\n * lodash 3.8.0 (Custom Build) \r\n * Build: `lodash modern exports=\"amd,commonjs,node\" iife=\"angular.module('ngLodash', []).constant('lodash', null).config(function ($provide) { %output% $provide.constant('lodash', _);});\" --output build/ng-lodash.js`\r\n * Copyright 2012-2015 The Dojo Foundation \r\n * Based on Underscore.js 1.8.3 \r\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\r\n * Available under MIT license \r\n */\r\nangular.module(\"ngLodash\",[]).constant(\"lodash\",null).config([\"$provide\",function(a){function b(a,b){if(a!==b){var c=a===a,d=b===b;if(a>b||!c||a===x&&d)return 1;if(b>a||!d||b===x&&c)return-1}return 0}function c(a,b,c){for(var d=a.length,e=c?d:-1;c?e--:++e-1;);return c}function i(a,b){for(var c=a.length;c--&&b.indexOf(a.charAt(c))>-1;);return c}function j(a,c){return b(a.criteria,c.criteria)||a.index-c.index}function k(a,c,d){for(var e=-1,f=a.criteria,g=c.criteria,h=f.length,i=d.length;++e=i?j:j*(d[e]?1:-1)}return a.index-c.index}function l(a){return Ra[a]}function m(a){return Sa[a]}function n(a){return\"\\\\\"+Va[a]}function o(a,b,c){for(var d=a.length,e=b+(c?0:-1);c?e--:++e=a&&a>=9&&13>=a||32==a||160==a||5760==a||6158==a||a>=8192&&(8202>=a||8232==a||8233==a||8239==a||8287==a||12288==a||65279==a)}function r(a,b){for(var c=-1,d=a.length,e=-1,f=[];++cb,d=Mc(0,a.length,this.__views__),e=d.start,f=d.end,g=f-e,h=c?f:e-1,i=pg(g,this.__takeCount__),j=this.__iteratees__,k=j?j.length:0,l=0,m=[];a:for(;g--&&i>l;){h+=b;for(var n=-1,o=a[h];++np.index:h-1?p.count++>=s:!q(o)))continue a}}else{var t=q(o);if(r==O)o=t;else if(!t){if(r==N)continue a;break a}}}m[l++]=o}return m}function Ua(){this.__data__={}}function Va(a){return this.has(a)&&delete this.__data__[a]}function Wa(a){return\"__proto__\"==a?x:this.__data__[a]}function Xa(a){return\"__proto__\"!=a&&Qf.call(this.__data__,a)}function Ya(a,b){return\"__proto__\"!=a&&(this.__data__[a]=b),this}function Za(a){var b=a?a.length:0;for(this.data={hash:lg(null),set:new dg};b--;)this.push(a[b])}function $a(a,b){var c=a.data,d=\"string\"==typeof b||xe(b)?c.set.has(b):c.hash[b];return d?0:-1}function _a(a){var b=this.data;\"string\"==typeof a||xe(a)?b.set.add(a):b.hash[a]=!0}function cb(a,b){var c=-1,d=a.length;for(b||(b=Bf(d));++cd&&(d=e)}return d}function jb(a){for(var b=-1,c=a.length,d=vg;++be&&(d=e)}return d}function kb(a,b,c,d){var e=-1,f=a.length;for(d&&f&&(c=a[++e]);++e=200?Lg(b):null,j=b.length;i&&(g=$a,h=!1,b=i);a:for(;++fc&&(c=-c>e?0:e+c),d=d===x||d>e?e:+d||0,0>d&&(d+=e),e=c>d?0:d>>>0,c>>>=0;e>c;)a[c++]=b;return a}function zb(a,b){var c=[];return Gg(a,function(a,d,e){b(a,d,e)&&c.push(a)}),c}function Ab(a,b,c,d){var e;return c(a,function(a,c,f){return b(a,c,f)?(e=d?c:a,!1):void 0}),e}function Bb(a,b,c){for(var d=-1,e=a.length,f=-1,g=[];++db&&(b=-b>e?0:e+b),c=c===x||c>e?e:+c||0,0>c&&(c+=e),e=b>c?0:c-b>>>0,b>>>=0;for(var f=Bf(e);++d=200,i=h?Lg():null,j=[];i?(e=$a,g=!1):(h=!1,i=b?[]:j);a:for(;++c=e){for(;e>d;){var f=d+e>>>1,g=a[f];(c?b>=g:b>g)?d=f+1:e=f}return e}return cc(a,b,of,c)}function cc(a,b,c,d){b=c(b);for(var e=0,f=a?a.length:0,g=b!==b,h=b===x;f>e;){var i=Zf((e+f)/2),j=c(a[i]),k=j===j;if(g)var l=k||d;else l=h?k&&(d||j!==x):d?b>=j:b>j;l?e=i+1:f=i}return pg(f,xg)}function dc(a,b,c){if(\"function\"!=typeof a)return of;if(b===x)return a;switch(c){case 1:return function(c){return a.call(b,c)};case 3:return function(c,d,e){return a.call(b,c,d,e)};case 4:return function(c,d,e,f){return a.call(b,c,d,e,f)};case 5:return function(c,d,e,f,g){return a.call(b,c,d,e,f,g)}}return function(){return a.apply(b,arguments)}}function ec(a){return Wf.call(a,0)}function fc(a,b,c){for(var d=c.length,e=-1,f=og(a.length-d,0),g=-1,h=b.length,i=Bf(f+h);++g2&&c[e-2],g=e>2&&c[2],h=e>1&&c[e-1];for(\"function\"==typeof f?(f=dc(f,h,5),e-=2):(f=\"function\"==typeof h?h:null,e-=f?1:0),g&&Tc(c[0],c[1],g)&&(f=3>e?null:f,e=1);++d-1?d[g]:x}return Ab(d,e,a)}}function rc(a){return function(b,d,e){return b&&b.length?(d=Kc(d,e,3),c(b,d,a)):-1}}function sc(a){return function(b,c,d){return c=Kc(c,d,3),Ab(b,c,a,!0)}}function tc(a){return function(){var b=arguments.length;if(!b)return function(){return arguments[0]};for(var c,d=a?b:-1,e=0,f=Bf(b);a?d--:++du){var C=h?cb(h):null,D=og(j-u,0),G=o?B:null,H=o?null:B,I=o?w:null,J=o?null:w;b|=o?E:F,b&=~(o?F:E),p||(b&=~(z|A));var K=[a,b,c,I,G,J,H,C,i,D],L=Bc.apply(x,K);return Vc(a)&&Qg(L,K),L.placeholder=y,L}}var M=m?c:this;n&&(a=M[t]),h&&(w=_c(w,h)),l&&i=b||!mg(b))return\"\";var e=b-d;return c=null==c?\" \":c+\"\",cf(c,Xf(e/c.length)).slice(0,e)}function Dc(a,b,c,d){function e(){for(var b=-1,h=arguments.length,i=-1,j=d.length,k=Bf(h+j);++ii))return!1;for(;k&&++hi:i>e)||i===d&&i===f)&&(e=i,f=a)}),f}function Kc(a,b,c){var d=q.callback||mf;return d=d===mf?tb:d,c?d(a,b,c):d}function Lc(a,b,c){var e=q.indexOf||qd;return e=e===qd?d:e,a?e(a,b,c):e}function Mc(a,b,c){for(var d=-1,e=c?c.length:0;++d-1&&a%1==0&&b>a}function Tc(a,b,c){if(!xe(c))return!1;var d=typeof b;if(\"number\"==d?Rc(c)&&Sc(b,c.length):\"string\"==d&&b in c){var e=c[b];return a===a?a===e:e!==e}return!1}function Uc(a,b){var c=typeof a;if(\"string\"==c&&xa.test(a)||\"number\"==c)return!0;if(zh(a))return!1;var d=!wa.test(a);return d||null!=b&&a in dd(b)}function Vc(a){var b=Ng(a);return!!b&&a===q[b]&&b in ba.prototype}function Wc(a){return\"number\"==typeof a&&a>-1&&a%1==0&&Ag>=a}function Xc(a){return a===a&&!xe(a)}function Yc(a,b){var c=a[1],d=b[1],e=c|d,f=G>e,g=d==G&&c==C||d==G&&c==H&&a[7].length<=b[8]||d==(G|H)&&c==C;if(!f&&!g)return a;d&z&&(a[2]=b[2],e|=c&z?0:B);var h=b[3];if(h){var i=a[3];a[3]=i?fc(i,h,b[4]):cb(h),a[4]=i?r(a[3],Q):cb(b[4])}return h=b[5],h&&(i=a[5],a[5]=i?gc(i,h,b[6]):cb(h),a[6]=i?r(a[5],Q):cb(b[6])),h=b[7],h&&(a[7]=cb(h)),d&G&&(a[8]=null==a[8]?b[8]:pg(a[8],b[8])),null==a[9]&&(a[9]=b[9]),a[0]=b[0],a[1]=e,a}function Zc(a,b){a=dd(a);for(var c=-1,d=b.length,e={};++cd;)g[++f]=Ub(a,d,d+=b);return g}function hd(a){for(var b=-1,c=a?a.length:0,d=-1,e=[];++bb?0:b)):[]}function jd(a,b,c){var d=a?a.length:0;return d?((c?Tc(a,b,c):null==b)&&(b=1),b=d-(+b||0),Ub(a,0,0>b?0:b)):[]}function kd(a,b,c){return a&&a.length?_b(a,Kc(b,c,3),!0,!0):[]}function ld(a,b,c){return a&&a.length?_b(a,Kc(b,c,3),!0):[]}function md(a,b,c,d){var e=a?a.length:0;return e?(c&&\"number\"!=typeof c&&Tc(a,b,c)&&(c=0,d=e),yb(a,b,c,d)):[]}function nd(a){return a?a[0]:x}function od(a,b,c){var d=a?a.length:0;return c&&Tc(a,b,c)&&(b=!1),d?Bb(a,b):[]}function pd(a){var b=a?a.length:0;return b?Bb(a,!0):[]}function qd(a,b,c){var e=a?a.length:0;if(!e)return-1;if(\"number\"==typeof c)c=0>c?og(e+c,0):c;else if(c){var f=bc(a,b),g=a[f];return(b===b?b===g:g!==g)?f:-1}return d(a,b,c||0)}function rd(a){return jd(a,1)}function sd(){for(var a=[],b=-1,c=arguments.length,e=[],f=Lc(),g=f==d,h=[];++b=120?Lg(b&&i):null))}if(c=a.length,2>c)return h;var j=a[0],k=-1,l=j?j.length:0,m=e[0];a:for(;++kc?og(d+c,0):pg(c||0,d-1))+1;else if(c){e=bc(a,b,!0)-1;var f=a[e];return(b===b?b===f:f!==f)?e:-1}if(b!==b)return o(a,e,!0);for(;e--;)if(a[e]===b)return e;return-1}function vd(){var a=arguments,b=a[0];if(!b||!b.length)return b;for(var c=0,d=Lc(),e=a.length;++c-1;)fg.call(b,f,1);return b}function wd(a,b,c){var d=[];if(!a||!a.length)return d;var e=-1,f=[],g=a.length;for(b=Kc(b,c,3);++eb?0:b)):[]}function Ad(a,b,c){var d=a?a.length:0;return d?((c?Tc(a,b,c):null==b)&&(b=1),b=d-(+b||0),Ub(a,0>b?0:b)):[]}function Bd(a,b,c){return a&&a.length?_b(a,Kc(b,c,3),!1,!0):[]}function Cd(a,b,c){return a&&a.length?_b(a,Kc(b,c,3)):[]}function Dd(a,b,c,e){var f=a?a.length:0;if(!f)return[];null!=b&&\"boolean\"!=typeof b&&(e=c,c=Tc(a,b,e)?null:b,b=!1);var g=Kc();return(g!==tb||null!=c)&&(c=g(c,e,3)),b&&Lc()==d?s(a,c):Zb(a,c)}function Ed(a){if(!a||!a.length)return[];var b=-1,c=0;a=gb(a,function(a){return Rc(a)?(c=og(a.length,c),!0):void 0});for(var d=Bf(c);++bc?og(e+c,0):c||0,\"string\"==typeof a||!zh(a)&&Ee(a)?e>c&&a.indexOf(b,c)>-1:Lc(a,b,c)>-1):!1}function Vd(a,b,c){var d=zh(a)?hb:Kb;return b=Kc(b,c,3),d(a,b)}function Wd(a,b){return Vd(a,uf(b))}function Xd(a,b,c){var d=zh(a)?gb:zb;return b=Kc(b,c,3),d(a,function(a,c,d){return!b(a,c,d)})}function Yd(a,b,c){if(c?Tc(a,b,c):null==b){a=cd(a);var d=a.length;return d>0?a[Sb(0,d-1)]:x}var e=Zd(a);return e.length=pg(0>b?0:+b||0,e.length),e}function Zd(a){a=cd(a);for(var b=-1,c=a.length,d=Bf(c);++b0&&(c=b.apply(this,arguments)),1>=a&&(b=null),c}}function ge(a,b,c){function d(){m&&Yf(m),i&&Yf(i),i=m=n=x}function e(){var c=b-(mh()-k);if(0>=c||c>b){i&&Yf(i);var d=n;i=m=n=x,d&&(o=mh(),j=a.apply(l,h),m||i||(h=l=null))}else m=eg(e,c)}function f(){m&&Yf(m),i=m=n=x,(q||p!==b)&&(o=mh(),j=a.apply(l,h),m||i||(h=l=null))}function g(){if(h=arguments,k=mh(),l=this,n=q&&(m||!r),p===!1)var c=r&&!m;else{i||r||(o=k);var d=p-(k-o),g=0>=d||d>p;g?(i&&(i=Yf(i)),o=k,j=a.apply(l,h)):i||(i=eg(f,d))}return g&&m?m=Yf(m):m||b===p||(m=eg(e,b)),c&&(g=!0,j=a.apply(l,h)),!g||m||i||(h=l=null),j}var h,i,j,k,l,m,n,o=0,p=!1,q=!0;if(\"function\"!=typeof a)throw new Kf(P);if(b=0>b?0:+b||0,c===!0){var r=!0;q=!1}else xe(c)&&(r=c.leading,p=\"maxWait\"in c&&og(+c.maxWait||0,b),q=\"trailing\"in c?c.trailing:q);return g.cancel=d,g}function he(a,b){if(\"function\"!=typeof a||b&&\"function\"!=typeof b)throw new Kf(P);var c=function(){var d=arguments,e=c.cache,f=b?b.apply(this,d):d[0];if(e.has(f))return e.get(f);var g=a.apply(this,d);return e.set(f,g),g};return c.cache=new he.Cache,c}function ie(a){if(\"function\"!=typeof a)throw new Kf(P);return function(){return!a.apply(this,arguments)}}function je(a){return fe(2,a)}function ke(a,b){if(\"function\"!=typeof a)throw new Kf(P);return b=og(b===x?a.length-1:+b||0,0),function(){for(var c=arguments,d=-1,e=og(c.length-b,0),f=Bf(e);++d-1}function ue(a){return null==a?!0:Rc(a)&&(zh(a)||Ee(a)||qe(a)||p(a)&&Bh(a.splice))?!a.length:!Lh(a).length}function ve(a,b,c,d){if(c=\"function\"==typeof c&&dc(c,d,3),!c&&Xc(a)&&Xc(b))return a===b;var e=c?c(a,b):x;return e===x?Hb(a,b,c):!!e}function we(a){return p(a)&&\"string\"==typeof a.message&&Sf.call(a)==V}function xe(a){var b=typeof a;return\"function\"==b||!!a&&\"object\"==b}function ye(a,b,c,d){var e=Lh(b),f=e.length;if(!f)return!0;if(null==a)return!1;if(c=\"function\"==typeof c&&dc(c,d,3),a=dd(a),!c&&1==f){var g=e[0],h=b[g];if(Xc(h))return h===a[g]&&(h!==x||g in a)}for(var i=Bf(f),j=Bf(f);f--;)h=i[f]=b[e[f]],j[f]=Xc(h);return Jb(a,e,i,j,c)}function ze(a){return Ce(a)&&a!=+a}function Ae(a){return null==a?!1:Sf.call(a)==W?Uf.test(Pf.call(a)):p(a)&&Ga.test(a)}function Be(a){return null===a}function Ce(a){return\"number\"==typeof a||p(a)&&Sf.call(a)==Y}function De(a){return p(a)&&Sf.call(a)==$}function Ee(a){return\"string\"==typeof a||p(a)&&Sf.call(a)==aa}function Fe(a){return p(a)&&Wc(a.length)&&!!Oa[Sf.call(a)]}function Ge(a){return a===x}function He(a){var b=a?Og(a):0;return Wc(b)?b?cb(a):[]:Te(a)}function Ie(a){return sb(a,Oe(a))}function Je(a,b,c){var d=Fg(a);return c&&Tc(a,b,c)&&(b=null),b?Eg(d,b):d}function Ke(a){return Fb(a,Oe(a))}function Le(a,b,c){var d=null==a?x:Gb(a,ed(b),b+\"\");return d===x?c:d}function Me(a,b){if(null==a)return!1;var c=Qf.call(a,b);return c||Uc(b)||(b=ed(b),a=1==b.length?a:Gb(a,Ub(b,0,-1)),b=td(b),c=null!=a&&Qf.call(a,b)),c}function Ne(a,b,c){c&&Tc(a,b,c)&&(b=null);for(var d=-1,e=Lh(a),f=e.length,g={};++d0;++d=pg(b,c)&&ac?0:+c||0,d),c-=b.length,c>=0&&a.indexOf(b,c)==c}function $e(a){return a=f(a),a&&sa.test(a)?a.replace(qa,m):a}function _e(a){return a=f(a),a&&Aa.test(a)?a.replace(za,\"\\\\$&\"):a}function af(a,b,c){a=f(a),b=+b;var d=a.length;if(d>=b||!mg(b))return a;var e=(b-d)/2,g=Zf(e),h=Xf(e);\r\nreturn c=Cc(\"\",h,c),c.slice(0,g)+a+c}function bf(a,b,c){return c&&Tc(a,b,c)&&(b=0),sg(a,b)}function cf(a,b){var c=\"\";if(a=f(a),b=+b,1>b||!a||!mg(b))return c;do b%2&&(c+=a),b=Zf(b/2),a+=a;while(b);return c}function df(a,b,c){return a=f(a),c=null==c?0:pg(0>c?0:+c||0,a.length),a.lastIndexOf(b,c)==c}function ef(a,b,c){var d=q.templateSettings;c&&Tc(a,b,c)&&(b=c=null),a=f(a),b=qb(Eg({},c||b),d,pb);var e=qb(Eg({},b.imports),d.imports,pb),g=Lh(e),h=$b(e,g),i,j,k=0,l=b.interpolate||Ia,m=\"__p += '\",o=If((b.escape||Ia).source+\"|\"+l.source+\"|\"+(l===va?Da:Ia).source+\"|\"+(b.evaluate||Ia).source+\"|$\",\"g\"),p=\"//# sourceURL=\"+(\"sourceURL\"in b?b.sourceURL:\"lodash.templateSources[\"+ ++Na+\"]\")+\"\\n\";a.replace(o,function(b,c,d,e,f,g){return d||(d=e),m+=a.slice(k,g).replace(Ja,n),c&&(i=!0,m+=\"' +\\n__e(\"+c+\") +\\n'\"),f&&(j=!0,m+=\"';\\n\"+f+\";\\n__p += '\"),d&&(m+=\"' +\\n((__t = (\"+d+\")) == null ? '' : __t) +\\n'\"),k=g+b.length,b}),m+=\"';\\n\";var r=b.variable;r||(m=\"with (obj) {\\n\"+m+\"\\n}\\n\"),m=(j?m.replace(ma,\"\"):m).replace(na,\"$1\").replace(oa,\"$1;\"),m=\"function(\"+(r||\"obj\")+\") {\\n\"+(r?\"\":\"obj || (obj = {});\\n\")+\"var __t, __p = ''\"+(i?\", __e = _.escape\":\"\")+(j?\", __j = Array.prototype.join;\\nfunction print() { __p += __j.call(arguments, '') }\\n\":\";\\n\")+m+\"return __p\\n}\";var s=Xh(function(){return Ef(g,p+\"return \"+m).apply(x,h)});if(s.source=m,we(s))throw s;return s}function ff(a,b,c){var d=a;return(a=f(a))?(c?Tc(d,b,c):null==b)?a.slice(t(a),u(a)+1):(b+=\"\",a.slice(h(a,b),i(a,b)+1)):a}function gf(a,b,c){var d=a;return a=f(a),a?a.slice((c?Tc(d,b,c):null==b)?t(a):h(a,b+\"\")):a}function hf(a,b,c){var d=a;return a=f(a),a?(c?Tc(d,b,c):null==b)?a.slice(0,u(a)+1):a.slice(0,i(a,b+\"\")+1):a}function jf(a,b,c){c&&Tc(a,b,c)&&(b=null);var d=I,e=J;if(null!=b)if(xe(b)){var g=\"separator\"in b?b.separator:g;d=\"length\"in b?+b.length||0:d,e=\"omission\"in b?f(b.omission):e}else d=+b||0;if(a=f(a),d>=a.length)return a;var h=d-e.length;if(1>h)return e;var i=a.slice(0,h);if(null==g)return i+e;if(De(g)){if(a.slice(h).search(g)){var j,k,l=a.slice(0,h);for(g.global||(g=If(g.source,(Ea.exec(g)||\"\")+\"g\")),g.lastIndex=0;j=g.exec(l);)k=j.index;i=i.slice(0,null==k?h:k)}}else if(a.indexOf(g,h)!=h){var m=i.lastIndexOf(g);m>-1&&(i=i.slice(0,m))}return i+e}function kf(a){return a=f(a),a&&ra.test(a)?a.replace(pa,v):a}function lf(a,b,c){return c&&Tc(a,b,c)&&(b=null),a=f(a),a.match(b||Ka)||[]}function mf(a,b,c){return c&&Tc(a,b,c)&&(b=null),p(a)?pf(a):tb(a,b)}function nf(a){return function(){return a}}function of(a){return a}function pf(a){return Lb(ub(a,!0))}function qf(a,b){return Mb(a,ub(b,!0))}function rf(a,b,c){if(null==c){var d=xe(b),e=d&&Lh(b),f=e&&e.length&&Fb(b,e);(f?f.length:d)||(f=!1,c=b,b=a,a=this)}f||(f=Fb(b,Lh(b)));var g=!0,h=-1,i=Bh(a),j=f.length;c===!1?g=!1:xe(c)&&\"chain\"in c&&(g=c.chain);for(;++ha||!mg(a))return[];var d=-1,e=Bf(pg(a,wg));for(b=dc(b,c,1);++dd?e[d]=b(d):b(d);return e}function yf(a){var b=++Rf;return f(a)+b}function zf(a,b){return(+a||0)+(+b||0)}function Af(a,b,c){c&&Tc(a,b,c)&&(b=null);var d=Kc(),e=null==b;return d===tb&&e||(e=!1,b=d(b,c,3)),e?nb(zh(a)?a:cd(a)):Yb(a,b)}a=a?bb.defaults(ab.Object(),a,bb.pick(ab,Ma)):ab;var Bf=a.Array,Cf=a.Date,Df=a.Error,Ef=a.Function,Ff=a.Math,Gf=a.Number,Hf=a.Object,If=a.RegExp,Jf=a.String,Kf=a.TypeError,Lf=Bf.prototype,Mf=Hf.prototype,Nf=Jf.prototype,Of=(Of=a.window)&&Of.document,Pf=Ef.prototype.toString,Qf=Mf.hasOwnProperty,Rf=0,Sf=Mf.toString,Tf=a._,Uf=If(\"^\"+_e(Sf).replace(/toString|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),Vf=Ae(Vf=a.ArrayBuffer)&&Vf,Wf=Ae(Wf=Vf&&new Vf(0).slice)&&Wf,Xf=Ff.ceil,Yf=a.clearTimeout,Zf=Ff.floor,$f=Ae($f=Hf.getOwnPropertySymbols)&&$f,_f=Ae(_f=Hf.getPrototypeOf)&&_f,ag=Lf.push,bg=Ae(bg=Hf.preventExtensions)&&bg,cg=Mf.propertyIsEnumerable,dg=Ae(dg=a.Set)&&dg,eg=a.setTimeout,fg=Lf.splice,gg=Ae(gg=a.Uint8Array)&&gg,hg=Ae(hg=a.WeakMap)&&hg,ig=function(){try{var b=Ae(b=a.Float64Array)&&b,c=new b(new Vf(10),0,1)&&b}catch(d){}return c}(),jg=function(){var a=bg&&Ae(a=Hf.assign)&&a;try{if(a){var b=bg({1:0});b[0]=1}}catch(c){try{a(b,\"xo\")}catch(c){}return!b[1]&&a}return!1}(),kg=Ae(kg=Bf.isArray)&&kg,lg=Ae(lg=Hf.create)&&lg,mg=a.isFinite,ng=Ae(ng=Hf.keys)&&ng,og=Ff.max,pg=Ff.min,qg=Ae(qg=Cf.now)&&qg,rg=Ae(rg=Gf.isFinite)&&rg,sg=a.parseInt,tg=Ff.random,ug=Gf.NEGATIVE_INFINITY,vg=Gf.POSITIVE_INFINITY,wg=Ff.pow(2,32)-1,xg=wg-1,yg=wg>>>1,zg=ig?ig.BYTES_PER_ELEMENT:0,Ag=Ff.pow(2,53)-1,Bg=hg&&new hg,Cg={},Dg=q.support={};!function(a){var b=function(){this.x=a},c=arguments,d={0:a,length:a},e=[];b.prototype={valueOf:a,y:a};for(var f in new b)e.push(f);Dg.funcDecomp=/\\bthis\\b/.test(function(){return this}),Dg.funcNames=\"string\"==typeof Ef.name;try{Dg.dom=11===Of.createDocumentFragment().nodeType}catch(g){Dg.dom=!1}try{Dg.nonEnumArgs=!cg.call(c,1)}catch(g){Dg.nonEnumArgs=!0}}(1,0),q.templateSettings={escape:ta,evaluate:ua,interpolate:va,variable:\"\",imports:{_:q}};var Eg=jg||function(a,b){return null==b?a:sb(b,Pg(b),sb(b,Lh(b),a))},Fg=function(){function b(){}return function(c){if(xe(c)){b.prototype=c;var d=new b;b.prototype=null}return d||a.Object()}}(),Gg=jc(Db),Hg=jc(Eb,!0),Ig=kc(),Jg=kc(!0),Kg=Bg?function(a,b){return Bg.set(a,b),a}:of;Wf||(ec=Vf&&gg?function(a){var b=a.byteLength,c=ig?Zf(b/zg):0,d=c*zg,e=new Vf(b);if(c){var f=new ig(e,0,c);f.set(new ig(a,0,c))}return b!=d&&(f=new gg(e,d),f.set(new gg(a,d))),e}:nf(null));var Lg=lg&&dg?function(a){return new Za(a)}:nf(null),Mg=Bg?function(a){return Bg.get(a)}:tf,Ng=function(){return Dg.funcNames?\"constant\"==nf.name?Pb(\"name\"):function(a){for(var b=a.name,c=Cg[b],d=c?c.length:0;d--;){var e=c[d],f=e.func;if(null==f||f==a)return e.name}return b}:nf(\"\")}(),Og=Pb(\"length\"),Pg=$f?function(a){return $f(dd(a))}:nf([]),Qg=function(){var a=0,b=0;return function(c,d){var e=mh(),f=L-(e-b);if(b=e,f>0){if(++a>=K)return c}else a=0;return Kg(c,d)}}(),Rg=ke(function(a,b){return Rc(a)?wb(a,Bb(b,!1,!0)):[]}),Sg=rc(),Tg=rc(!0),Ug=ke(function(a,c){c=Bb(c);var d=rb(a,c);return Rb(a,c.sort(b)),d}),Vg=Ec(),Wg=Ec(!0),Xg=ke(function(a){return Zb(Bb(a,!1,!0))}),Yg=ke(function(a,b){return Rc(a)?wb(a,b):[]}),Zg=ke(Ed),$g=ke(function(a){var b=a.length,c=a[b-2],d=a[b-1];return b>2&&\"function\"==typeof c?b-=2:(c=b>1&&\"function\"==typeof d?(--b,d):x,d=x),a.length=b,Fd(a,c,d)}),_g=ke(function(a,b){return rb(a,Bb(b))}),ah=hc(function(a,b,c){Qf.call(a,c)?++a[c]:a[c]=1}),bh=qc(Gg),ch=qc(Hg,!0),dh=uc(db,Gg),eh=uc(eb,Hg),fh=hc(function(a,b,c){Qf.call(a,c)?a[c].push(b):a[c]=[b]}),gh=hc(function(a,b,c){a[c]=b}),hh=ke(function(a,b,c){var d=-1,e=\"function\"==typeof b,f=Uc(b),g=Rc(a)?Bf(a.length):[];return Gg(a,function(a){var h=e?b:f&&null!=a&&a[b];g[++d]=h?h.apply(a,c):Qc(a,b,c)}),g}),ih=hc(function(a,b,c){a[c?0:1].push(b)},function(){return[[],[]]}),jh=Ac(kb,Gg),kh=Ac(lb,Hg),lh=ke(function(a,b){if(null==a)return[];var c=b[2];return c&&Tc(b[0],b[1],c)&&(b.length=1),Xb(a,Bb(b),[])}),mh=qg||function(){return(new Cf).getTime()},nh=ke(function(a,b,c){var d=z;if(c.length){var e=r(c,nh.placeholder);d|=E}return Fc(a,d,b,c,e)}),oh=ke(function(a,b){b=b.length?Bb(b):Ke(a);for(var c=-1,d=b.length;++ca?c=this.takeRight(-a):a&&(c=this.drop(a)),b!==x&&(b=+b||0,c=0>b?c.dropRight(-b):c.take(b-a)),c},ba.prototype.toArray=function(){return this.drop(0)},Db(ba.prototype,function(a,b){var c=q[b];if(c){var d=/^(?:filter|map|reject)|While$/.test(b),e=/^(?:first|last)$/.test(b);q.prototype[b]=function(){var b=arguments,f=this.__chain__,g=this.__wrapped__,h=!!this.__actions__.length,i=g instanceof ba,j=b[0],k=i||zh(g);k&&d&&\"function\"==typeof j&&1!=j.length&&(i=k=!1);var l=i&&!h;if(e&&!f)return l?a.call(g):c.call(q,this.value());var m=function(a){var d=[a];return ag.apply(d,b),c.apply(q,d)};if(k){var n=l?g:new ba(this),o=a.apply(n,b);if(!e&&(h||o.__actions__)){var p=o.__actions__||(o.__actions__=[]);p.push({func:Kd,args:[m],thisArg:q})}return new _(o,f)}return this.thru(m)}}}),db([\"concat\",\"join\",\"pop\",\"push\",\"replace\",\"shift\",\"sort\",\"splice\",\"split\",\"unshift\"],function(a){var b=(/^(?:replace|split)$/.test(a)?Nf:Lf)[a],c=/^(?:push|sort|unshift)$/.test(a)?\"tap\":\"thru\",d=/^(?:join|pop|replace|shift)$/.test(a);q.prototype[a]=function(){var a=arguments;return d&&!this.__chain__?b.apply(this.value(),a):this[c](function(c){return b.apply(c,a)})}}),Db(ba.prototype,function(a,b){var c=q[b];if(c){var d=c.name,e=Cg[d]||(Cg[d]=[]);e.push({name:b,func:c})}}),Cg[Bc(null,A).name]=[{name:\"wrapper\",func:null}],ba.prototype.clone=Ra,ba.prototype.reverse=Sa,ba.prototype.value=Ta,q.prototype.chain=Ld,q.prototype.commit=Md,q.prototype.plant=Nd,q.prototype.reverse=Od,q.prototype.toString=Pd,q.prototype.run=q.prototype.toJSON=q.prototype.valueOf=q.prototype.value=Qd,q.prototype.collect=q.prototype.map,q.prototype.head=q.prototype.first,q.prototype.select=q.prototype.filter,q.prototype.tail=q.prototype.rest,q}var x,y=\"3.8.0\",z=1,A=2,B=4,C=8,D=16,E=32,F=64,G=128,H=256,I=30,J=\"...\",K=150,L=16,M=0,N=1,O=2,P=\"Expected a function\",Q=\"__lodash_placeholder__\",R=\"[object Arguments]\",S=\"[object Array]\",T=\"[object Boolean]\",U=\"[object Date]\",V=\"[object Error]\",W=\"[object Function]\",X=\"[object Map]\",Y=\"[object Number]\",Z=\"[object Object]\",$=\"[object RegExp]\",_=\"[object Set]\",aa=\"[object String]\",ba=\"[object WeakMap]\",ca=\"[object ArrayBuffer]\",da=\"[object Float32Array]\",ea=\"[object Float64Array]\",fa=\"[object Int8Array]\",ga=\"[object Int16Array]\",ha=\"[object Int32Array]\",ia=\"[object Uint8Array]\",ja=\"[object Uint8ClampedArray]\",ka=\"[object Uint16Array]\",la=\"[object Uint32Array]\",ma=/\\b__p \\+= '';/g,na=/\\b(__p \\+=) '' \\+/g,oa=/(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g,pa=/&(?:amp|lt|gt|quot|#39|#96);/g,qa=/[&<>\"'`]/g,ra=RegExp(pa.source),sa=RegExp(qa.source),ta=/<%-([\\s\\S]+?)%>/g,ua=/<%([\\s\\S]+?)%>/g,va=/<%=([\\s\\S]+?)%>/g,wa=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\n\\\\]|\\\\.)*?\\1)\\]/,xa=/^\\w*$/,ya=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\n\\\\]|\\\\.)*?)\\2)\\]/g,za=/[.*+?^${}()|[\\]\\/\\\\]/g,Aa=RegExp(za.source),Ba=/[\\u0300-\\u036f\\ufe20-\\ufe23]/g,Ca=/\\\\(\\\\)?/g,Da=/\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g,Ea=/\\w*$/,Fa=/^0[xX]/,Ga=/^\\[object .+?Constructor\\]$/,Ha=/[\\xc0-\\xd6\\xd8-\\xde\\xdf-\\xf6\\xf8-\\xff]/g,Ia=/($^)/,Ja=/['\\n\\r\\u2028\\u2029\\\\]/g,Ka=function(){var a=\"[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]\",b=\"[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]+\";return RegExp(a+\"+(?=\"+a+b+\")|\"+a+\"?\"+b+\"|\"+a+\"+|[0-9]+\",\"g\")}(),La=\" \t\u000b\\f \\ufeff\\n\\r\\u2028\\u2029 ᠎              \",Ma=[\"Array\",\"ArrayBuffer\",\"Date\",\"Error\",\"Float32Array\",\"Float64Array\",\"Function\",\"Int8Array\",\"Int16Array\",\"Int32Array\",\"Math\",\"Number\",\"Object\",\"RegExp\",\"Set\",\"String\",\"_\",\"clearTimeout\",\"document\",\"isFinite\",\"parseInt\",\"setTimeout\",\"TypeError\",\"Uint8Array\",\"Uint8ClampedArray\",\"Uint16Array\",\"Uint32Array\",\"WeakMap\",\"window\"],Na=-1,Oa={};Oa[da]=Oa[ea]=Oa[fa]=Oa[ga]=Oa[ha]=Oa[ia]=Oa[ja]=Oa[ka]=Oa[la]=!0,Oa[R]=Oa[S]=Oa[ca]=Oa[T]=Oa[U]=Oa[V]=Oa[W]=Oa[X]=Oa[Y]=Oa[Z]=Oa[$]=Oa[_]=Oa[aa]=Oa[ba]=!1;var Pa={};Pa[R]=Pa[S]=Pa[ca]=Pa[T]=Pa[U]=Pa[da]=Pa[ea]=Pa[fa]=Pa[ga]=Pa[ha]=Pa[Y]=Pa[Z]=Pa[$]=Pa[aa]=Pa[ia]=Pa[ja]=Pa[ka]=Pa[la]=!0,Pa[V]=Pa[W]=Pa[X]=Pa[_]=Pa[ba]=!1;var Qa={leading:!1,maxWait:0,trailing:!1},Ra={\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"Ç\":\"C\",\"ç\":\"c\",\"Ð\":\"D\",\"ð\":\"d\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"Ñ\":\"N\",\"ñ\":\"n\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"Ý\":\"Y\",\"ý\":\"y\",\"ÿ\":\"y\",\"Æ\":\"Ae\",\"æ\":\"ae\",\"Þ\":\"Th\",\"þ\":\"th\",\"ß\":\"ss\"},Sa={\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\",\"`\":\"`\"},Ta={\"&\":\"&\",\"<\":\"<\",\">\":\">\",\""\":'\"',\"'\":\"'\",\"`\":\"`\"},Ua={\"function\":!0,object:!0},Va={\"\\\\\":\"\\\\\",\"'\":\"'\",\"\\n\":\"n\",\"\\r\":\"r\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},Wa=Ua[typeof exports]&&exports&&!exports.nodeType&&exports,Xa=Ua[typeof module]&&module&&!module.nodeType&&module,Ya=Wa&&Xa&&\"object\"==typeof global&&global&&global.Object&&global,Za=Ua[typeof self]&&self&&self.Object&&self,$a=Ua[typeof window]&&window&&window.Object&&window,_a=Xa&&Xa.exports===Wa&&Wa,ab=Ya||$a!==(this&&this.window)&&$a||Za||this,bb=w();\"function\"==typeof define&&\"object\"==typeof define.amd&&define.amd?define(function(){return bb}):Wa&&Xa&&(_a?(Xa.exports=bb)._=bb:Wa._=bb),a.constant(\"lodash\",bb)}]);\r\n})(angular);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./loaders/iifeloader.js!./bower_components/ng-lodash/build/ng-lodash.min.js\n ** module id = 4\n ** module chunks = 0\n **/","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/buildin/module.js\n ** module id = 5\n ** module chunks = 0\n **/","(function(angular) {\r\n/*\r\n * angular-ui-bootstrap\r\n * http://angular-ui.github.io/bootstrap/\r\n\r\n * Version: 0.13.4 - 2015-09-03\r\n * License: MIT\r\n */\r\nangular.module(\"ui.bootstrap\", [\"ui.bootstrap.tpls\", \"ui.bootstrap.collapse\",\"ui.bootstrap.accordion\",\"ui.bootstrap.alert\",\"ui.bootstrap.bindHtml\",\"ui.bootstrap.buttons\",\"ui.bootstrap.carousel\",\"ui.bootstrap.dateparser\",\"ui.bootstrap.position\",\"ui.bootstrap.datepicker\",\"ui.bootstrap.dropdown\",\"ui.bootstrap.modal\",\"ui.bootstrap.pagination\",\"ui.bootstrap.tooltip\",\"ui.bootstrap.popover\",\"ui.bootstrap.progressbar\",\"ui.bootstrap.rating\",\"ui.bootstrap.tabs\",\"ui.bootstrap.timepicker\",\"ui.bootstrap.transition\",\"ui.bootstrap.typeahead\"]);\r\nangular.module(\"ui.bootstrap.tpls\", [\"template/accordion/accordion-group.html\",\"template/accordion/accordion.html\",\"template/alert/alert.html\",\"template/carousel/carousel.html\",\"template/carousel/slide.html\",\"template/datepicker/datepicker.html\",\"template/datepicker/day.html\",\"template/datepicker/month.html\",\"template/datepicker/popup.html\",\"template/datepicker/year.html\",\"template/modal/backdrop.html\",\"template/modal/window.html\",\"template/pagination/pager.html\",\"template/pagination/pagination.html\",\"template/tooltip/tooltip-html-popup.html\",\"template/tooltip/tooltip-html-unsafe-popup.html\",\"template/tooltip/tooltip-popup.html\",\"template/tooltip/tooltip-template-popup.html\",\"template/popover/popover-html.html\",\"template/popover/popover-template.html\",\"template/popover/popover.html\",\"template/progressbar/bar.html\",\"template/progressbar/progress.html\",\"template/progressbar/progressbar.html\",\"template/rating/rating.html\",\"template/tabs/tab.html\",\"template/tabs/tabset.html\",\"template/timepicker/timepicker.html\",\"template/typeahead/typeahead-match.html\",\"template/typeahead/typeahead-popup.html\"]);\r\nangular.module('ui.bootstrap.collapse', [])\r\n\r\n .directive('collapse', ['$animate', function($animate) {\r\n return {\r\n link: function(scope, element, attrs) {\r\n function expand() {\r\n element.removeClass('collapse')\r\n .addClass('collapsing')\r\n .attr('aria-expanded', true)\r\n .attr('aria-hidden', false);\r\n\r\n $animate.addClass(element, 'in', {\r\n to: { height: element[0].scrollHeight + 'px' }\r\n }).then(expandDone);\r\n }\r\n\r\n function expandDone() {\r\n element.removeClass('collapsing');\r\n element.css({height: 'auto'});\r\n }\r\n\r\n function collapse() {\r\n if (!element.hasClass('collapse') && !element.hasClass('in')) {\r\n return collapseDone();\r\n }\r\n\r\n element\r\n // IMPORTANT: The height must be set before adding \"collapsing\" class.\r\n // Otherwise, the browser attempts to animate from height 0 (in\r\n // collapsing class) to the given height here.\r\n .css({height: element[0].scrollHeight + 'px'})\r\n // initially all panel collapse have the collapse class, this removal\r\n // prevents the animation from jumping to collapsed state\r\n .removeClass('collapse')\r\n .addClass('collapsing')\r\n .attr('aria-expanded', false)\r\n .attr('aria-hidden', true);\r\n\r\n $animate.removeClass(element, 'in', {\r\n to: {height: '0'}\r\n }).then(collapseDone);\r\n }\r\n\r\n function collapseDone() {\r\n element.css({height: '0'}); // Required so that collapse works when animation is disabled\r\n element.removeClass('collapsing');\r\n element.addClass('collapse');\r\n }\r\n\r\n scope.$watch(attrs.collapse, function(shouldCollapse) {\r\n if (shouldCollapse) {\r\n collapse();\r\n } else {\r\n expand();\r\n }\r\n });\r\n }\r\n };\r\n }]);\r\n\r\nangular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse'])\r\n\r\n.constant('accordionConfig', {\r\n closeOthers: true\r\n})\r\n\r\n.controller('AccordionController', ['$scope', '$attrs', 'accordionConfig', function($scope, $attrs, accordionConfig) {\r\n // This array keeps track of the accordion groups\r\n this.groups = [];\r\n\r\n // Ensure that all the groups in this accordion are closed, unless close-others explicitly says not to\r\n this.closeOthers = function(openGroup) {\r\n var closeOthers = angular.isDefined($attrs.closeOthers) ?\r\n $scope.$eval($attrs.closeOthers) : accordionConfig.closeOthers;\r\n if (closeOthers) {\r\n angular.forEach(this.groups, function(group) {\r\n if (group !== openGroup) {\r\n group.isOpen = false;\r\n }\r\n });\r\n }\r\n };\r\n\r\n // This is called from the accordion-group directive to add itself to the accordion\r\n this.addGroup = function(groupScope) {\r\n var that = this;\r\n this.groups.push(groupScope);\r\n\r\n groupScope.$on('$destroy', function(event) {\r\n that.removeGroup(groupScope);\r\n });\r\n };\r\n\r\n // This is called from the accordion-group directive when to remove itself\r\n this.removeGroup = function(group) {\r\n var index = this.groups.indexOf(group);\r\n if (index !== -1) {\r\n this.groups.splice(index, 1);\r\n }\r\n };\r\n\r\n}])\r\n\r\n// The accordion directive simply sets up the directive controller\r\n// and adds an accordion CSS class to itself element.\r\n.directive('accordion', function() {\r\n return {\r\n restrict: 'EA',\r\n controller: 'AccordionController',\r\n controllerAs: 'accordion',\r\n transclude: true,\r\n replace: false,\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'template/accordion/accordion.html';\r\n }\r\n };\r\n})\r\n\r\n// The accordion-group directive indicates a block of html that will expand and collapse in an accordion\r\n.directive('accordionGroup', function() {\r\n return {\r\n require: '^accordion', // We need this directive to be inside an accordion\r\n restrict: 'EA',\r\n transclude: true, // It transcludes the contents of the directive into the template\r\n replace: true, // The element containing the directive will be replaced with the template\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'template/accordion/accordion-group.html';\r\n },\r\n scope: {\r\n heading: '@', // Interpolate the heading attribute onto this scope\r\n isOpen: '=?',\r\n isDisabled: '=?'\r\n },\r\n controller: function() {\r\n this.setHeading = function(element) {\r\n this.heading = element;\r\n };\r\n },\r\n link: function(scope, element, attrs, accordionCtrl) {\r\n accordionCtrl.addGroup(scope);\r\n\r\n scope.openClass = attrs.openClass || 'panel-open';\r\n scope.panelClass = attrs.panelClass;\r\n scope.$watch('isOpen', function(value) {\r\n element.toggleClass(scope.openClass, value);\r\n if (value) {\r\n accordionCtrl.closeOthers(scope);\r\n }\r\n });\r\n\r\n scope.toggleOpen = function($event) {\r\n if (!scope.isDisabled) {\r\n if (!$event || $event.which === 32) {\r\n scope.isOpen = !scope.isOpen;\r\n }\r\n }\r\n };\r\n }\r\n };\r\n})\r\n\r\n// Use accordion-heading below an accordion-group to provide a heading containing HTML\r\n// \r\n// Heading containing HTML - \r\n// \r\n.directive('accordionHeading', function() {\r\n return {\r\n restrict: 'EA',\r\n transclude: true, // Grab the contents to be used as the heading\r\n template: '', // In effect remove this element!\r\n replace: true,\r\n require: '^accordionGroup',\r\n link: function(scope, element, attr, accordionGroupCtrl, transclude) {\r\n // Pass the heading to the accordion-group controller\r\n // so that it can be transcluded into the right place in the template\r\n // [The second parameter to transclude causes the elements to be cloned so that they work in ng-repeat]\r\n accordionGroupCtrl.setHeading(transclude(scope, angular.noop));\r\n }\r\n };\r\n})\r\n\r\n// Use in the accordion-group template to indicate where you want the heading to be transcluded\r\n// You must provide the property on the accordion-group controller that will hold the transcluded element\r\n//
\r\n// \r\n// ...\r\n//
\r\n.directive('accordionTransclude', function() {\r\n return {\r\n require: '^accordionGroup',\r\n link: function(scope, element, attr, controller) {\r\n scope.$watch(function() { return controller[attr.accordionTransclude]; }, function(heading) {\r\n if (heading) {\r\n element.find('span').html('');\r\n element.find('span').append(heading);\r\n }\r\n });\r\n }\r\n };\r\n})\r\n\r\n;\r\n\r\nangular.module('ui.bootstrap.alert', [])\r\n\r\n.controller('AlertController', ['$scope', '$attrs', function($scope, $attrs) {\r\n $scope.closeable = !!$attrs.close;\r\n this.close = $scope.close;\r\n}])\r\n\r\n.directive('alert', function() {\r\n return {\r\n controller: 'AlertController',\r\n controllerAs: 'alert',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'template/alert/alert.html';\r\n },\r\n transclude: true,\r\n replace: true,\r\n scope: {\r\n type: '@',\r\n close: '&'\r\n }\r\n };\r\n})\r\n\r\n.directive('dismissOnTimeout', ['$timeout', function($timeout) {\r\n return {\r\n require: 'alert',\r\n link: function(scope, element, attrs, alertCtrl) {\r\n $timeout(function() {\r\n alertCtrl.close();\r\n }, parseInt(attrs.dismissOnTimeout, 10));\r\n }\r\n };\r\n}]);\r\n\r\nangular.module('ui.bootstrap.bindHtml', [])\r\n\r\n .value('$bindHtmlUnsafeSuppressDeprecated', false)\r\n\r\n .directive('bindHtmlUnsafe', ['$log', '$bindHtmlUnsafeSuppressDeprecated', function ($log, $bindHtmlUnsafeSuppressDeprecated) {\r\n return function (scope, element, attr) {\r\n if (!$bindHtmlUnsafeSuppressDeprecated) {\r\n $log.warn('bindHtmlUnsafe is now deprecated. Use ngBindHtml instead');\r\n }\r\n element.addClass('ng-binding').data('$binding', attr.bindHtmlUnsafe);\r\n scope.$watch(attr.bindHtmlUnsafe, function bindHtmlUnsafeWatchAction(value) {\r\n element.html(value || '');\r\n });\r\n };\r\n }]);\r\nangular.module('ui.bootstrap.buttons', [])\r\n\r\n.constant('buttonConfig', {\r\n activeClass: 'active',\r\n toggleEvent: 'click'\r\n})\r\n\r\n.controller('ButtonsController', ['buttonConfig', function(buttonConfig) {\r\n this.activeClass = buttonConfig.activeClass || 'active';\r\n this.toggleEvent = buttonConfig.toggleEvent || 'click';\r\n}])\r\n\r\n.directive('btnRadio', function() {\r\n return {\r\n require: ['btnRadio', 'ngModel'],\r\n controller: 'ButtonsController',\r\n controllerAs: 'buttons',\r\n link: function(scope, element, attrs, ctrls) {\r\n var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n element.find('input').css({display: 'none'});\r\n\r\n //model -> UI\r\n ngModelCtrl.$render = function() {\r\n element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, scope.$eval(attrs.btnRadio)));\r\n };\r\n\r\n //ui->model\r\n element.bind(buttonsCtrl.toggleEvent, function() {\r\n if (attrs.disabled) {\r\n return;\r\n }\r\n\r\n var isActive = element.hasClass(buttonsCtrl.activeClass);\r\n\r\n if (!isActive || angular.isDefined(attrs.uncheckable)) {\r\n scope.$apply(function() {\r\n ngModelCtrl.$setViewValue(isActive ? null : scope.$eval(attrs.btnRadio));\r\n ngModelCtrl.$render();\r\n });\r\n }\r\n });\r\n }\r\n };\r\n})\r\n\r\n.directive('btnCheckbox', ['$document', function($document) {\r\n return {\r\n require: ['btnCheckbox', 'ngModel'],\r\n controller: 'ButtonsController',\r\n controllerAs: 'button',\r\n link: function(scope, element, attrs, ctrls) {\r\n var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n element.find('input').css({display: 'none'});\r\n\r\n function getTrueValue() {\r\n return getCheckboxValue(attrs.btnCheckboxTrue, true);\r\n }\r\n\r\n function getFalseValue() {\r\n return getCheckboxValue(attrs.btnCheckboxFalse, false);\r\n }\r\n\r\n function getCheckboxValue(attributeValue, defaultValue) {\r\n var val = scope.$eval(attributeValue);\r\n return angular.isDefined(val) ? val : defaultValue;\r\n }\r\n\r\n //model -> UI\r\n ngModelCtrl.$render = function() {\r\n element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, getTrueValue()));\r\n };\r\n\r\n //ui->model\r\n element.bind(buttonsCtrl.toggleEvent, function() {\r\n if (attrs.disabled) {\r\n return;\r\n }\r\n\r\n scope.$apply(function() {\r\n ngModelCtrl.$setViewValue(element.hasClass(buttonsCtrl.activeClass) ? getFalseValue() : getTrueValue());\r\n ngModelCtrl.$render();\r\n });\r\n });\r\n\r\n //accessibility\r\n element.on('keypress', function(e) {\r\n if (attrs.disabled || e.which !== 32 || $document[0].activeElement !== element[0]) {\r\n return;\r\n }\r\n\r\n scope.$apply(function() {\r\n ngModelCtrl.$setViewValue(element.hasClass(buttonsCtrl.activeClass) ? getFalseValue() : getTrueValue());\r\n ngModelCtrl.$render();\r\n });\r\n });\r\n }\r\n };\r\n}]);\r\n\r\n/**\r\n* @ngdoc overview\r\n* @name ui.bootstrap.carousel\r\n*\r\n* @description\r\n* AngularJS version of an image carousel.\r\n*\r\n*/\r\nangular.module('ui.bootstrap.carousel', [])\r\n.controller('CarouselController', ['$scope', '$element', '$interval', '$animate', function ($scope, $element, $interval, $animate) {\r\n var self = this,\r\n slides = self.slides = $scope.slides = [],\r\n NEW_ANIMATE = angular.version.minor >= 4,\r\n NO_TRANSITION = 'uib-noTransition',\r\n SLIDE_DIRECTION = 'uib-slideDirection',\r\n currentIndex = -1,\r\n currentInterval, isPlaying;\r\n self.currentSlide = null;\r\n\r\n var destroyed = false;\r\n /* direction: \"prev\" or \"next\" */\r\n self.select = $scope.select = function(nextSlide, direction) {\r\n var nextIndex = $scope.indexOfSlide(nextSlide);\r\n //Decide direction if it's not given\r\n if (direction === undefined) {\r\n direction = nextIndex > self.getCurrentIndex() ? 'next' : 'prev';\r\n }\r\n //Prevent this user-triggered transition from occurring if there is already one in progress\r\n if (nextSlide && nextSlide !== self.currentSlide && !$scope.$currentTransition) {\r\n goNext(nextSlide, nextIndex, direction);\r\n }\r\n };\r\n\r\n function goNext(slide, index, direction) {\r\n // Scope has been destroyed, stop here.\r\n if (destroyed) { return; }\r\n\r\n angular.extend(slide, {direction: direction, active: true});\r\n angular.extend(self.currentSlide || {}, {direction: direction, active: false});\r\n if ($animate.enabled() && !$scope.noTransition && !$scope.$currentTransition &&\r\n slide.$element && self.slides.length > 1) {\r\n slide.$element.data(SLIDE_DIRECTION, slide.direction);\r\n if (self.currentSlide && self.currentSlide.$element) {\r\n self.currentSlide.$element.data(SLIDE_DIRECTION, slide.direction);\r\n }\r\n\r\n $scope.$currentTransition = true;\r\n if (NEW_ANIMATE) {\r\n $animate.on('addClass', slide.$element, function (element, phase) {\r\n if (phase === 'close') {\r\n $scope.$currentTransition = null;\r\n $animate.off('addClass', element);\r\n }\r\n });\r\n } else {\r\n slide.$element.one('$animate:close', function closeFn() {\r\n $scope.$currentTransition = null;\r\n });\r\n }\r\n }\r\n\r\n self.currentSlide = slide;\r\n currentIndex = index;\r\n\r\n //every time you change slides, reset the timer\r\n restartTimer();\r\n }\r\n\r\n $scope.$on('$destroy', function () {\r\n destroyed = true;\r\n });\r\n\r\n function getSlideByIndex(index) {\r\n if (angular.isUndefined(slides[index].index)) {\r\n return slides[index];\r\n }\r\n var i, len = slides.length;\r\n for (i = 0; i < slides.length; ++i) {\r\n if (slides[i].index == index) {\r\n return slides[i];\r\n }\r\n }\r\n }\r\n\r\n self.getCurrentIndex = function() {\r\n if (self.currentSlide && angular.isDefined(self.currentSlide.index)) {\r\n return +self.currentSlide.index;\r\n }\r\n return currentIndex;\r\n };\r\n\r\n /* Allow outside people to call indexOf on slides array */\r\n $scope.indexOfSlide = function(slide) {\r\n return angular.isDefined(slide.index) ? +slide.index : slides.indexOf(slide);\r\n };\r\n\r\n $scope.next = function() {\r\n var newIndex = (self.getCurrentIndex() + 1) % slides.length;\r\n\r\n if (newIndex === 0 && $scope.noWrap()) {\r\n $scope.pause();\r\n return;\r\n }\r\n\r\n return self.select(getSlideByIndex(newIndex), 'next');\r\n };\r\n\r\n $scope.prev = function() {\r\n var newIndex = self.getCurrentIndex() - 1 < 0 ? slides.length - 1 : self.getCurrentIndex() - 1;\r\n\r\n if ($scope.noWrap() && newIndex === slides.length - 1){\r\n $scope.pause();\r\n return;\r\n }\r\n\r\n return self.select(getSlideByIndex(newIndex), 'prev');\r\n };\r\n\r\n $scope.isActive = function(slide) {\r\n return self.currentSlide === slide;\r\n };\r\n\r\n $scope.$watch('interval', restartTimer);\r\n $scope.$on('$destroy', resetTimer);\r\n\r\n function restartTimer() {\r\n resetTimer();\r\n var interval = +$scope.interval;\r\n if (!isNaN(interval) && interval > 0) {\r\n currentInterval = $interval(timerFn, interval);\r\n }\r\n }\r\n\r\n function resetTimer() {\r\n if (currentInterval) {\r\n $interval.cancel(currentInterval);\r\n currentInterval = null;\r\n }\r\n }\r\n\r\n function timerFn() {\r\n var interval = +$scope.interval;\r\n if (isPlaying && !isNaN(interval) && interval > 0 && slides.length) {\r\n $scope.next();\r\n } else {\r\n $scope.pause();\r\n }\r\n }\r\n\r\n $scope.play = function() {\r\n if (!isPlaying) {\r\n isPlaying = true;\r\n restartTimer();\r\n }\r\n };\r\n $scope.pause = function() {\r\n if (!$scope.noPause) {\r\n isPlaying = false;\r\n resetTimer();\r\n }\r\n };\r\n\r\n self.addSlide = function(slide, element) {\r\n slide.$element = element;\r\n slides.push(slide);\r\n //if this is the first slide or the slide is set to active, select it\r\n if(slides.length === 1 || slide.active) {\r\n self.select(slides[slides.length-1]);\r\n if (slides.length == 1) {\r\n $scope.play();\r\n }\r\n } else {\r\n slide.active = false;\r\n }\r\n };\r\n\r\n self.removeSlide = function(slide) {\r\n if (angular.isDefined(slide.index)) {\r\n slides.sort(function(a, b) {\r\n return +a.index > +b.index;\r\n });\r\n }\r\n //get the index of the slide inside the carousel\r\n var index = slides.indexOf(slide);\r\n slides.splice(index, 1);\r\n if (slides.length > 0 && slide.active) {\r\n if (index >= slides.length) {\r\n self.select(slides[index-1]);\r\n } else {\r\n self.select(slides[index]);\r\n }\r\n } else if (currentIndex > index) {\r\n currentIndex--;\r\n }\r\n \r\n //clean the currentSlide when no more slide\r\n if (slides.length === 0) {\r\n self.currentSlide = null;\r\n }\r\n };\r\n\r\n $scope.$watch('noTransition', function(noTransition) {\r\n $element.data(NO_TRANSITION, noTransition);\r\n });\r\n\r\n}])\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name ui.bootstrap.carousel.directive:carousel\r\n * @restrict EA\r\n *\r\n * @description\r\n * Carousel is the outer container for a set of image 'slides' to showcase.\r\n *\r\n * @param {number=} interval The time, in milliseconds, that it will take the carousel to go to the next slide.\r\n * @param {boolean=} noTransition Whether to disable transitions on the carousel.\r\n * @param {boolean=} noPause Whether to disable pausing on the carousel (by default, the carousel interval pauses on hover).\r\n *\r\n * @example\r\n\r\n \r\n \r\n \r\n \r\n
\r\n

Beautiful!

\r\n
\r\n
\r\n \r\n \r\n
\r\n

D'aww!

\r\n
\r\n
\r\n
\r\n
\r\n \r\n .carousel-indicators {\r\n top: auto;\r\n bottom: 15px;\r\n }\r\n \r\n
\r\n */\r\n.directive('carousel', [function() {\r\n return {\r\n restrict: 'EA',\r\n transclude: true,\r\n replace: true,\r\n controller: 'CarouselController',\r\n controllerAs: 'carousel',\r\n require: 'carousel',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'template/carousel/carousel.html';\r\n },\r\n scope: {\r\n interval: '=',\r\n noTransition: '=',\r\n noPause: '=',\r\n noWrap: '&'\r\n }\r\n };\r\n}])\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name ui.bootstrap.carousel.directive:slide\r\n * @restrict EA\r\n *\r\n * @description\r\n * Creates a slide inside a {@link ui.bootstrap.carousel.directive:carousel carousel}. Must be placed as a child of a carousel element.\r\n *\r\n * @param {boolean=} active Model binding, whether or not this slide is currently active.\r\n * @param {number=} index The index of the slide. The slides will be sorted by this parameter.\r\n *\r\n * @example\r\n\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n

Slide {{$index}}

\r\n

{{slide.text}}

\r\n
\r\n
\r\n
\r\n Interval, in milliseconds: \r\n
Enter a negative number to stop the interval.\r\n
\r\n
\r\n \r\nfunction CarouselDemoCtrl($scope) {\r\n $scope.myInterval = 5000;\r\n}\r\n \r\n \r\n .carousel-indicators {\r\n top: auto;\r\n bottom: 15px;\r\n }\r\n \r\n
\r\n*/\r\n\r\n.directive('slide', function() {\r\n return {\r\n require: '^carousel',\r\n restrict: 'EA',\r\n transclude: true,\r\n replace: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'template/carousel/slide.html';\r\n },\r\n scope: {\r\n active: '=?',\r\n actual: '=?',\r\n index: '=?'\r\n },\r\n link: function (scope, element, attrs, carouselCtrl) {\r\n carouselCtrl.addSlide(scope, element);\r\n //when the scope is destroyed then remove the slide from the current slides array\r\n scope.$on('$destroy', function() {\r\n carouselCtrl.removeSlide(scope);\r\n });\r\n\r\n scope.$watch('active', function(active) {\r\n if (active) {\r\n carouselCtrl.select(scope);\r\n }\r\n });\r\n }\r\n };\r\n})\r\n\r\n.animation('.item', [\r\n '$injector', '$animate',\r\nfunction ($injector, $animate) {\r\n var NO_TRANSITION = 'uib-noTransition',\r\n SLIDE_DIRECTION = 'uib-slideDirection',\r\n $animateCss = null;\r\n\r\n if ($injector.has('$animateCss')) {\r\n $animateCss = $injector.get('$animateCss');\r\n }\r\n\r\n function removeClass(element, className, callback) {\r\n element.removeClass(className);\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n\r\n return {\r\n beforeAddClass: function (element, className, done) {\r\n // Due to transclusion, noTransition property is on parent's scope\r\n if (className == 'active' && element.parent() &&\r\n !element.parent().data(NO_TRANSITION)) {\r\n var stopped = false;\r\n var direction = element.data(SLIDE_DIRECTION);\r\n var directionClass = direction == 'next' ? 'left' : 'right';\r\n var removeClassFn = removeClass.bind(this, element,\r\n directionClass + ' ' + direction, done);\r\n element.addClass(direction);\r\n\r\n if ($animateCss) {\r\n $animateCss(element, {addClass: directionClass})\r\n .start()\r\n .done(removeClassFn);\r\n } else {\r\n $animate.addClass(element, directionClass).then(function () {\r\n if (!stopped) {\r\n removeClassFn();\r\n }\r\n done();\r\n });\r\n }\r\n\r\n return function () {\r\n stopped = true;\r\n };\r\n }\r\n done();\r\n },\r\n beforeRemoveClass: function (element, className, done) {\r\n // Due to transclusion, noTransition property is on parent's scope\r\n if (className === 'active' && element.parent() &&\r\n !element.parent().data(NO_TRANSITION)) {\r\n var stopped = false;\r\n var direction = element.data(SLIDE_DIRECTION);\r\n var directionClass = direction == 'next' ? 'left' : 'right';\r\n var removeClassFn = removeClass.bind(this, element, directionClass, done);\r\n\r\n if ($animateCss) {\r\n $animateCss(element, {addClass: directionClass})\r\n .start()\r\n .done(removeClassFn);\r\n } else {\r\n $animate.addClass(element, directionClass).then(function () {\r\n if (!stopped) {\r\n removeClassFn();\r\n }\r\n done();\r\n });\r\n }\r\n return function () {\r\n stopped = true;\r\n };\r\n }\r\n done();\r\n }\r\n };\r\n\r\n}])\r\n\r\n\r\n;\r\n\r\nangular.module('ui.bootstrap.dateparser', [])\r\n\r\n.service('dateParser', ['$log', '$locale', 'orderByFilter', function($log, $locale, orderByFilter) {\r\n // Pulled from https://github.com/mbostock/d3/blob/master/src/format/requote.js\r\n var SPECIAL_CHARACTERS_REGEXP = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\r\n\r\n this.parsers = {};\r\n\r\n var formatCodeToRegex = {\r\n 'yyyy': {\r\n regex: '\\\\d{4}',\r\n apply: function(value) { this.year = +value; }\r\n },\r\n 'yy': {\r\n regex: '\\\\d{2}',\r\n apply: function(value) { this.year = +value + 2000; }\r\n },\r\n 'y': {\r\n regex: '\\\\d{1,4}',\r\n apply: function(value) { this.year = +value; }\r\n },\r\n 'MMMM': {\r\n regex: $locale.DATETIME_FORMATS.MONTH.join('|'),\r\n apply: function(value) { this.month = $locale.DATETIME_FORMATS.MONTH.indexOf(value); }\r\n },\r\n 'MMM': {\r\n regex: $locale.DATETIME_FORMATS.SHORTMONTH.join('|'),\r\n apply: function(value) { this.month = $locale.DATETIME_FORMATS.SHORTMONTH.indexOf(value); }\r\n },\r\n 'MM': {\r\n regex: '0[1-9]|1[0-2]',\r\n apply: function(value) { this.month = value - 1; }\r\n },\r\n 'M': {\r\n regex: '[1-9]|1[0-2]',\r\n apply: function(value) { this.month = value - 1; }\r\n },\r\n 'dd': {\r\n regex: '[0-2][0-9]{1}|3[0-1]{1}',\r\n apply: function(value) { this.date = +value; }\r\n },\r\n 'd': {\r\n regex: '[1-2]?[0-9]{1}|3[0-1]{1}',\r\n apply: function(value) { this.date = +value; }\r\n },\r\n 'EEEE': {\r\n regex: $locale.DATETIME_FORMATS.DAY.join('|')\r\n },\r\n 'EEE': {\r\n regex: $locale.DATETIME_FORMATS.SHORTDAY.join('|')\r\n },\r\n 'HH': {\r\n regex: '(?:0|1)[0-9]|2[0-3]',\r\n apply: function(value) { this.hours = +value; }\r\n },\r\n 'hh': {\r\n regex: '0[0-9]|1[0-2]',\r\n apply: function(value) { this.hours = +value; }\r\n },\r\n 'H': {\r\n regex: '1?[0-9]|2[0-3]',\r\n apply: function(value) { this.hours = +value; }\r\n },\r\n 'h': {\r\n regex: '[0-9]|1[0-2]',\r\n apply: function(value) { this.hours = +value; }\r\n },\r\n 'mm': {\r\n regex: '[0-5][0-9]',\r\n apply: function(value) { this.minutes = +value; }\r\n },\r\n 'm': {\r\n regex: '[0-9]|[1-5][0-9]',\r\n apply: function(value) { this.minutes = +value; }\r\n },\r\n 'sss': {\r\n regex: '[0-9][0-9][0-9]',\r\n apply: function(value) { this.milliseconds = +value; }\r\n },\r\n 'ss': {\r\n regex: '[0-5][0-9]',\r\n apply: function(value) { this.seconds = +value; }\r\n },\r\n 's': {\r\n regex: '[0-9]|[1-5][0-9]',\r\n apply: function(value) { this.seconds = +value; }\r\n },\r\n 'a': {\r\n regex: $locale.DATETIME_FORMATS.AMPMS.join('|'),\r\n apply: function(value) {\r\n if (this.hours === 12) {\r\n this.hours = 0;\r\n }\r\n\r\n if (value === 'PM') {\r\n this.hours += 12;\r\n }\r\n }\r\n }\r\n };\r\n\r\n function createParser(format) {\r\n var map = [], regex = format.split('');\r\n\r\n angular.forEach(formatCodeToRegex, function(data, code) {\r\n var index = format.indexOf(code);\r\n\r\n if (index > -1) {\r\n format = format.split('');\r\n\r\n regex[index] = '(' + data.regex + ')';\r\n format[index] = '$'; // Custom symbol to define consumed part of format\r\n for (var i = index + 1, n = index + code.length; i < n; i++) {\r\n regex[i] = '';\r\n format[i] = '$';\r\n }\r\n format = format.join('');\r\n\r\n map.push({ index: index, apply: data.apply });\r\n }\r\n });\r\n\r\n return {\r\n regex: new RegExp('^' + regex.join('') + '$'),\r\n map: orderByFilter(map, 'index')\r\n };\r\n }\r\n\r\n this.parse = function(input, format, baseDate) {\r\n if (!angular.isString(input) || !format) {\r\n return input;\r\n }\r\n\r\n format = $locale.DATETIME_FORMATS[format] || format;\r\n format = format.replace(SPECIAL_CHARACTERS_REGEXP, '\\\\$&');\r\n\r\n if (!this.parsers[format]) {\r\n this.parsers[format] = createParser(format);\r\n }\r\n\r\n var parser = this.parsers[format],\r\n regex = parser.regex,\r\n map = parser.map,\r\n results = input.match(regex);\r\n\r\n if (results && results.length) {\r\n var fields, dt;\r\n if (angular.isDate(baseDate) && !isNaN(baseDate.getTime())) {\r\n fields = {\r\n year: baseDate.getFullYear(),\r\n month: baseDate.getMonth(),\r\n date: baseDate.getDate(),\r\n hours: baseDate.getHours(),\r\n minutes: baseDate.getMinutes(),\r\n seconds: baseDate.getSeconds(),\r\n milliseconds: baseDate.getMilliseconds()\r\n };\r\n } else {\r\n if (baseDate) {\r\n $log.warn('dateparser:', 'baseDate is not a valid date');\r\n }\r\n fields = { year: 1900, month: 0, date: 1, hours: 0, minutes: 0, seconds: 0, milliseconds: 0 };\r\n }\r\n\r\n for (var i = 1, n = results.length; i < n; i++) {\r\n var mapper = map[i-1];\r\n if (mapper.apply) {\r\n mapper.apply.call(fields, results[i]);\r\n }\r\n }\r\n\r\n if (isValid(fields.year, fields.month, fields.date)) {\r\n dt = new Date(fields.year, fields.month, fields.date,\r\n fields.hours, fields.minutes, fields.seconds,\r\n fields.milliseconds || 0);\r\n }\r\n\r\n return dt;\r\n }\r\n };\r\n\r\n // Check if date is valid for specific month (and year for February).\r\n // Month: 0 = Jan, 1 = Feb, etc\r\n function isValid(year, month, date) {\r\n if (date < 1) {\r\n return false;\r\n }\r\n\r\n if (month === 1 && date > 28) {\r\n return date === 29 && ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0);\r\n }\r\n\r\n if (month === 3 || month === 5 || month === 8 || month === 10) {\r\n return date < 31;\r\n }\r\n\r\n return true;\r\n }\r\n}]);\r\n\r\nangular.module('ui.bootstrap.position', [])\r\n\r\n/**\r\n * A set of utility methods that can be use to retrieve position of DOM elements.\r\n * It is meant to be used where we need to absolute-position DOM elements in\r\n * relation to other, existing elements (this is the case for tooltips, popovers,\r\n * typeahead suggestions etc.).\r\n */\r\n .factory('$position', ['$document', '$window', function($document, $window) {\r\n function getStyle(el, cssprop) {\r\n if (el.currentStyle) { //IE\r\n return el.currentStyle[cssprop];\r\n } else if ($window.getComputedStyle) {\r\n return $window.getComputedStyle(el)[cssprop];\r\n }\r\n // finally try and get inline style\r\n return el.style[cssprop];\r\n }\r\n\r\n /**\r\n * Checks if a given element is statically positioned\r\n * @param element - raw DOM element\r\n */\r\n function isStaticPositioned(element) {\r\n return (getStyle(element, 'position') || 'static' ) === 'static';\r\n }\r\n\r\n /**\r\n * returns the closest, non-statically positioned parentOffset of a given element\r\n * @param element\r\n */\r\n var parentOffsetEl = function(element) {\r\n var docDomEl = $document[0];\r\n var offsetParent = element.offsetParent || docDomEl;\r\n while (offsetParent && offsetParent !== docDomEl && isStaticPositioned(offsetParent) ) {\r\n offsetParent = offsetParent.offsetParent;\r\n }\r\n return offsetParent || docDomEl;\r\n };\r\n\r\n return {\r\n /**\r\n * Provides read-only equivalent of jQuery's position function:\r\n * http://api.jquery.com/position/\r\n */\r\n position: function(element) {\r\n var elBCR = this.offset(element);\r\n var offsetParentBCR = { top: 0, left: 0 };\r\n var offsetParentEl = parentOffsetEl(element[0]);\r\n if (offsetParentEl != $document[0]) {\r\n offsetParentBCR = this.offset(angular.element(offsetParentEl));\r\n offsetParentBCR.top += offsetParentEl.clientTop - offsetParentEl.scrollTop;\r\n offsetParentBCR.left += offsetParentEl.clientLeft - offsetParentEl.scrollLeft;\r\n }\r\n\r\n var boundingClientRect = element[0].getBoundingClientRect();\r\n return {\r\n width: boundingClientRect.width || element.prop('offsetWidth'),\r\n height: boundingClientRect.height || element.prop('offsetHeight'),\r\n top: elBCR.top - offsetParentBCR.top,\r\n left: elBCR.left - offsetParentBCR.left\r\n };\r\n },\r\n\r\n /**\r\n * Provides read-only equivalent of jQuery's offset function:\r\n * http://api.jquery.com/offset/\r\n */\r\n offset: function(element) {\r\n var boundingClientRect = element[0].getBoundingClientRect();\r\n return {\r\n width: boundingClientRect.width || element.prop('offsetWidth'),\r\n height: boundingClientRect.height || element.prop('offsetHeight'),\r\n top: boundingClientRect.top + ($window.pageYOffset || $document[0].documentElement.scrollTop),\r\n left: boundingClientRect.left + ($window.pageXOffset || $document[0].documentElement.scrollLeft)\r\n };\r\n },\r\n\r\n /**\r\n * Provides coordinates for the targetEl in relation to hostEl\r\n */\r\n positionElements: function(hostEl, targetEl, positionStr, appendToBody) {\r\n var positionStrParts = positionStr.split('-');\r\n var pos0 = positionStrParts[0], pos1 = positionStrParts[1] || 'center';\r\n\r\n var hostElPos,\r\n targetElWidth,\r\n targetElHeight,\r\n targetElPos;\r\n\r\n hostElPos = appendToBody ? this.offset(hostEl) : this.position(hostEl);\r\n\r\n targetElWidth = targetEl.prop('offsetWidth');\r\n targetElHeight = targetEl.prop('offsetHeight');\r\n\r\n var shiftWidth = {\r\n center: function() {\r\n return hostElPos.left + hostElPos.width / 2 - targetElWidth / 2;\r\n },\r\n left: function() {\r\n return hostElPos.left;\r\n },\r\n right: function() {\r\n return hostElPos.left + hostElPos.width;\r\n }\r\n };\r\n\r\n var shiftHeight = {\r\n center: function() {\r\n return hostElPos.top + hostElPos.height / 2 - targetElHeight / 2;\r\n },\r\n top: function() {\r\n return hostElPos.top;\r\n },\r\n bottom: function() {\r\n return hostElPos.top + hostElPos.height;\r\n }\r\n };\r\n\r\n switch (pos0) {\r\n case 'right':\r\n targetElPos = {\r\n top: shiftHeight[pos1](),\r\n left: shiftWidth[pos0]()\r\n };\r\n break;\r\n case 'left':\r\n targetElPos = {\r\n top: shiftHeight[pos1](),\r\n left: hostElPos.left - targetElWidth\r\n };\r\n break;\r\n case 'bottom':\r\n targetElPos = {\r\n top: shiftHeight[pos0](),\r\n left: shiftWidth[pos1]()\r\n };\r\n break;\r\n default:\r\n targetElPos = {\r\n top: hostElPos.top - targetElHeight,\r\n left: shiftWidth[pos1]()\r\n };\r\n break;\r\n }\r\n\r\n return targetElPos;\r\n }\r\n };\r\n }]);\r\n\r\nangular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootstrap.position'])\r\n\r\n.value('$datepickerSuppressError', false)\r\n\r\n.constant('datepickerConfig', {\r\n formatDay: 'dd',\r\n formatMonth: 'MMMM',\r\n formatYear: 'yyyy',\r\n formatDayHeader: 'EEE',\r\n formatDayTitle: 'MMMM yyyy',\r\n formatMonthTitle: 'yyyy',\r\n datepickerMode: 'day',\r\n minMode: 'day',\r\n maxMode: 'year',\r\n showWeeks: true,\r\n startingDay: 0,\r\n yearRange: 20,\r\n minDate: null,\r\n maxDate: null,\r\n shortcutPropagation: false\r\n})\r\n\r\n.controller('DatepickerController', ['$scope', '$attrs', '$parse', '$interpolate', '$log', 'dateFilter', 'datepickerConfig', '$datepickerSuppressError', function($scope, $attrs, $parse, $interpolate, $log, dateFilter, datepickerConfig, $datepickerSuppressError) {\r\n var self = this,\r\n ngModelCtrl = { $setViewValue: angular.noop }; // nullModelCtrl;\r\n\r\n // Modes chain\r\n this.modes = ['day', 'month', 'year'];\r\n\r\n // Configuration attributes\r\n angular.forEach(['formatDay', 'formatMonth', 'formatYear', 'formatDayHeader', 'formatDayTitle', 'formatMonthTitle',\r\n 'showWeeks', 'startingDay', 'yearRange', 'shortcutPropagation'], function(key, index) {\r\n self[key] = angular.isDefined($attrs[key]) ? (index < 6 ? $interpolate($attrs[key])($scope.$parent) : $scope.$parent.$eval($attrs[key])) : datepickerConfig[key];\r\n });\r\n\r\n // Watchable date attributes\r\n angular.forEach(['minDate', 'maxDate'], function(key) {\r\n if ($attrs[key]) {\r\n $scope.$parent.$watch($parse($attrs[key]), function(value) {\r\n self[key] = value ? new Date(value) : null;\r\n self.refreshView();\r\n });\r\n } else {\r\n self[key] = datepickerConfig[key] ? new Date(datepickerConfig[key]) : null;\r\n }\r\n });\r\n\r\n angular.forEach(['minMode', 'maxMode'], function(key) {\r\n if ($attrs[key]) {\r\n $scope.$parent.$watch($parse($attrs[key]), function(value) {\r\n self[key] = angular.isDefined(value) ? value : $attrs[key];\r\n $scope[key] = self[key];\r\n if ((key == 'minMode' && self.modes.indexOf($scope.datepickerMode) < self.modes.indexOf(self[key])) || (key == 'maxMode' && self.modes.indexOf($scope.datepickerMode) > self.modes.indexOf(self[key]))) {\r\n $scope.datepickerMode = self[key];\r\n }\r\n });\r\n } else {\r\n self[key] = datepickerConfig[key] || null;\r\n $scope[key] = self[key];\r\n }\r\n });\r\n\r\n $scope.datepickerMode = $scope.datepickerMode || datepickerConfig.datepickerMode;\r\n $scope.uniqueId = 'datepicker-' + $scope.$id + '-' + Math.floor(Math.random() * 10000);\r\n\r\n if (angular.isDefined($attrs.initDate)) {\r\n this.activeDate = $scope.$parent.$eval($attrs.initDate) || new Date();\r\n $scope.$parent.$watch($attrs.initDate, function(initDate) {\r\n if (initDate && (ngModelCtrl.$isEmpty(ngModelCtrl.$modelValue) || ngModelCtrl.$invalid)) {\r\n self.activeDate = initDate;\r\n self.refreshView();\r\n }\r\n });\r\n } else {\r\n this.activeDate = new Date();\r\n }\r\n\r\n $scope.isActive = function(dateObject) {\r\n if (self.compare(dateObject.date, self.activeDate) === 0) {\r\n $scope.activeDateId = dateObject.uid;\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n this.init = function(ngModelCtrl_) {\r\n ngModelCtrl = ngModelCtrl_;\r\n\r\n ngModelCtrl.$render = function() {\r\n self.render();\r\n };\r\n };\r\n\r\n this.render = function() {\r\n if (ngModelCtrl.$viewValue) {\r\n var date = new Date(ngModelCtrl.$viewValue),\r\n isValid = !isNaN(date);\r\n\r\n if (isValid) {\r\n this.activeDate = date;\r\n } else if (!$datepickerSuppressError) {\r\n $log.error('Datepicker directive: \"ng-model\" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.');\r\n }\r\n }\r\n this.refreshView();\r\n };\r\n\r\n this.refreshView = function() {\r\n if (this.element) {\r\n this._refreshView();\r\n\r\n var date = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null;\r\n ngModelCtrl.$setValidity('dateDisabled', !date || (this.element && !this.isDisabled(date)));\r\n }\r\n };\r\n\r\n this.createDateObject = function(date, format) {\r\n var model = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null;\r\n return {\r\n date: date,\r\n label: dateFilter(date, format),\r\n selected: model && this.compare(date, model) === 0,\r\n disabled: this.isDisabled(date),\r\n current: this.compare(date, new Date()) === 0,\r\n customClass: this.customClass(date)\r\n };\r\n };\r\n\r\n this.isDisabled = function(date) {\r\n return ((this.minDate && this.compare(date, this.minDate) < 0) || (this.maxDate && this.compare(date, this.maxDate) > 0) || ($attrs.dateDisabled && $scope.dateDisabled({date: date, mode: $scope.datepickerMode})));\r\n };\r\n\r\n this.customClass = function(date) {\r\n return $scope.customClass({date: date, mode: $scope.datepickerMode});\r\n };\r\n\r\n // Split array into smaller arrays\r\n this.split = function(arr, size) {\r\n var arrays = [];\r\n while (arr.length > 0) {\r\n arrays.push(arr.splice(0, size));\r\n }\r\n return arrays;\r\n };\r\n\r\n // Fix a hard-reprodusible bug with timezones\r\n // The bug depends on OS, browser, current timezone and current date\r\n // i.e.\r\n // var date = new Date(2014, 0, 1);\r\n // console.log(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours());\r\n // can result in \"2013 11 31 23\" because of the bug.\r\n this.fixTimeZone = function(date) {\r\n var hours = date.getHours();\r\n date.setHours(hours === 23 ? hours + 2 : 0);\r\n };\r\n\r\n $scope.select = function(date) {\r\n if ($scope.datepickerMode === self.minMode) {\r\n var dt = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : new Date(0, 0, 0, 0, 0, 0, 0);\r\n dt.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\r\n ngModelCtrl.$setViewValue(dt);\r\n ngModelCtrl.$render();\r\n } else {\r\n self.activeDate = date;\r\n $scope.datepickerMode = self.modes[self.modes.indexOf($scope.datepickerMode) - 1];\r\n }\r\n };\r\n\r\n $scope.move = function(direction) {\r\n var year = self.activeDate.getFullYear() + direction * (self.step.years || 0),\r\n month = self.activeDate.getMonth() + direction * (self.step.months || 0);\r\n self.activeDate.setFullYear(year, month, 1);\r\n self.refreshView();\r\n };\r\n\r\n $scope.toggleMode = function(direction) {\r\n direction = direction || 1;\r\n\r\n if (($scope.datepickerMode === self.maxMode && direction === 1) || ($scope.datepickerMode === self.minMode && direction === -1)) {\r\n return;\r\n }\r\n\r\n $scope.datepickerMode = self.modes[self.modes.indexOf($scope.datepickerMode) + direction];\r\n };\r\n\r\n // Key event mapper\r\n $scope.keys = { 13: 'enter', 32: 'space', 33: 'pageup', 34: 'pagedown', 35: 'end', 36: 'home', 37: 'left', 38: 'up', 39: 'right', 40: 'down' };\r\n\r\n var focusElement = function() {\r\n self.element[0].focus();\r\n };\r\n\r\n // Listen for focus requests from popup directive\r\n $scope.$on('datepicker.focus', focusElement);\r\n\r\n $scope.keydown = function(evt) {\r\n var key = $scope.keys[evt.which];\r\n\r\n if (!key || evt.shiftKey || evt.altKey) {\r\n return;\r\n }\r\n\r\n evt.preventDefault();\r\n if (!self.shortcutPropagation) {\r\n evt.stopPropagation();\r\n }\r\n\r\n if (key === 'enter' || key === 'space') {\r\n if (self.isDisabled(self.activeDate)) {\r\n return; // do nothing\r\n }\r\n $scope.select(self.activeDate);\r\n focusElement();\r\n } else if (evt.ctrlKey && (key === 'up' || key === 'down')) {\r\n $scope.toggleMode(key === 'up' ? 1 : -1);\r\n focusElement();\r\n } else {\r\n self.handleKeyDown(key, evt);\r\n self.refreshView();\r\n }\r\n };\r\n}])\r\n\r\n.directive('datepicker', function() {\r\n return {\r\n restrict: 'EA',\r\n replace: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'template/datepicker/datepicker.html';\r\n },\r\n scope: {\r\n datepickerMode: '=?',\r\n dateDisabled: '&',\r\n customClass: '&',\r\n shortcutPropagation: '&?'\r\n },\r\n require: ['datepicker', '^ngModel'],\r\n controller: 'DatepickerController',\r\n controllerAs: 'datepicker',\r\n link: function(scope, element, attrs, ctrls) {\r\n var datepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n datepickerCtrl.init(ngModelCtrl);\r\n }\r\n };\r\n})\r\n\r\n.directive('daypicker', ['dateFilter', function(dateFilter) {\r\n return {\r\n restrict: 'EA',\r\n replace: true,\r\n templateUrl: 'template/datepicker/day.html',\r\n require: '^datepicker',\r\n link: function(scope, element, attrs, ctrl) {\r\n scope.showWeeks = ctrl.showWeeks;\r\n\r\n ctrl.step = { months: 1 };\r\n ctrl.element = element;\r\n\r\n var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n function getDaysInMonth(year, month) {\r\n return ((month === 1) && (year % 4 === 0) && ((year % 100 !== 0) || (year % 400 === 0))) ? 29 : DAYS_IN_MONTH[month];\r\n }\r\n\r\n function getDates(startDate, n) {\r\n var dates = new Array(n), current = new Date(startDate), i = 0, date;\r\n while (i < n) {\r\n date = new Date(current);\r\n ctrl.fixTimeZone(date);\r\n dates[i++] = date;\r\n current.setDate(current.getDate() + 1);\r\n }\r\n return dates;\r\n }\r\n\r\n ctrl._refreshView = function() {\r\n var year = ctrl.activeDate.getFullYear(),\r\n month = ctrl.activeDate.getMonth(),\r\n firstDayOfMonth = new Date(year, month, 1),\r\n difference = ctrl.startingDay - firstDayOfMonth.getDay(),\r\n numDisplayedFromPreviousMonth = (difference > 0) ? 7 - difference : - difference,\r\n firstDate = new Date(firstDayOfMonth);\r\n\r\n if (numDisplayedFromPreviousMonth > 0) {\r\n firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\r\n }\r\n\r\n // 42 is the number of days on a six-month calendar\r\n var days = getDates(firstDate, 42);\r\n for (var i = 0; i < 42; i ++) {\r\n days[i] = angular.extend(ctrl.createDateObject(days[i], ctrl.formatDay), {\r\n secondary: days[i].getMonth() !== month,\r\n uid: scope.uniqueId + '-' + i\r\n });\r\n }\r\n\r\n scope.labels = new Array(7);\r\n for (var j = 0; j < 7; j++) {\r\n scope.labels[j] = {\r\n abbr: dateFilter(days[j].date, ctrl.formatDayHeader),\r\n full: dateFilter(days[j].date, 'EEEE')\r\n };\r\n }\r\n\r\n scope.title = dateFilter(ctrl.activeDate, ctrl.formatDayTitle);\r\n scope.rows = ctrl.split(days, 7);\r\n\r\n if (scope.showWeeks) {\r\n scope.weekNumbers = [];\r\n var thursdayIndex = (4 + 7 - ctrl.startingDay) % 7,\r\n numWeeks = scope.rows.length;\r\n for (var curWeek = 0; curWeek < numWeeks; curWeek++) {\r\n scope.weekNumbers.push(\r\n getISO8601WeekNumber(scope.rows[curWeek][thursdayIndex].date));\r\n }\r\n }\r\n };\r\n\r\n ctrl.compare = function(date1, date2) {\r\n return (new Date(date1.getFullYear(), date1.getMonth(), date1.getDate()) - new Date(date2.getFullYear(), date2.getMonth(), date2.getDate()));\r\n };\r\n\r\n function getISO8601WeekNumber(date) {\r\n var checkDate = new Date(date);\r\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); // Thursday\r\n var time = checkDate.getTime();\r\n checkDate.setMonth(0); // Compare with Jan 1\r\n checkDate.setDate(1);\r\n return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\r\n }\r\n\r\n ctrl.handleKeyDown = function(key, evt) {\r\n var date = ctrl.activeDate.getDate();\r\n\r\n if (key === 'left') {\r\n date = date - 1; // up\r\n } else if (key === 'up') {\r\n date = date - 7; // down\r\n } else if (key === 'right') {\r\n date = date + 1; // down\r\n } else if (key === 'down') {\r\n date = date + 7;\r\n } else if (key === 'pageup' || key === 'pagedown') {\r\n var month = ctrl.activeDate.getMonth() + (key === 'pageup' ? - 1 : 1);\r\n ctrl.activeDate.setMonth(month, 1);\r\n date = Math.min(getDaysInMonth(ctrl.activeDate.getFullYear(), ctrl.activeDate.getMonth()), date);\r\n } else if (key === 'home') {\r\n date = 1;\r\n } else if (key === 'end') {\r\n date = getDaysInMonth(ctrl.activeDate.getFullYear(), ctrl.activeDate.getMonth());\r\n }\r\n ctrl.activeDate.setDate(date);\r\n };\r\n\r\n ctrl.refreshView();\r\n }\r\n };\r\n}])\r\n\r\n.directive('monthpicker', ['dateFilter', function(dateFilter) {\r\n return {\r\n restrict: 'EA',\r\n replace: true,\r\n templateUrl: 'template/datepicker/month.html',\r\n require: '^datepicker',\r\n link: function(scope, element, attrs, ctrl) {\r\n ctrl.step = { years: 1 };\r\n ctrl.element = element;\r\n\r\n ctrl._refreshView = function() {\r\n var months = new Array(12),\r\n year = ctrl.activeDate.getFullYear(),\r\n date;\r\n\r\n for (var i = 0; i < 12; i++) {\r\n date = new Date(year, i, 1);\r\n ctrl.fixTimeZone(date);\r\n months[i] = angular.extend(ctrl.createDateObject(date, ctrl.formatMonth), {\r\n uid: scope.uniqueId + '-' + i\r\n });\r\n }\r\n\r\n scope.title = dateFilter(ctrl.activeDate, ctrl.formatMonthTitle);\r\n scope.rows = ctrl.split(months, 3);\r\n };\r\n\r\n ctrl.compare = function(date1, date2) {\r\n return new Date(date1.getFullYear(), date1.getMonth()) - new Date(date2.getFullYear(), date2.getMonth());\r\n };\r\n\r\n ctrl.handleKeyDown = function(key, evt) {\r\n var date = ctrl.activeDate.getMonth();\r\n\r\n if (key === 'left') {\r\n date = date - 1; // up\r\n } else if (key === 'up') {\r\n date = date - 3; // down\r\n } else if (key === 'right') {\r\n date = date + 1; // down\r\n } else if (key === 'down') {\r\n date = date + 3;\r\n } else if (key === 'pageup' || key === 'pagedown') {\r\n var year = ctrl.activeDate.getFullYear() + (key === 'pageup' ? - 1 : 1);\r\n ctrl.activeDate.setFullYear(year);\r\n } else if (key === 'home') {\r\n date = 0;\r\n } else if (key === 'end') {\r\n date = 11;\r\n }\r\n ctrl.activeDate.setMonth(date);\r\n };\r\n\r\n ctrl.refreshView();\r\n }\r\n };\r\n}])\r\n\r\n.directive('yearpicker', ['dateFilter', function(dateFilter) {\r\n return {\r\n restrict: 'EA',\r\n replace: true,\r\n templateUrl: 'template/datepicker/year.html',\r\n require: '^datepicker',\r\n link: function(scope, element, attrs, ctrl) {\r\n var range = ctrl.yearRange;\r\n\r\n ctrl.step = { years: range };\r\n ctrl.element = element;\r\n\r\n function getStartingYear( year ) {\r\n return parseInt((year - 1) / range, 10) * range + 1;\r\n }\r\n\r\n ctrl._refreshView = function() {\r\n var years = new Array(range), date;\r\n\r\n for (var i = 0, start = getStartingYear(ctrl.activeDate.getFullYear()); i < range; i++) {\r\n date = new Date(start + i, 0, 1);\r\n ctrl.fixTimeZone(date);\r\n years[i] = angular.extend(ctrl.createDateObject(date, ctrl.formatYear), {\r\n uid: scope.uniqueId + '-' + i\r\n });\r\n }\r\n\r\n scope.title = [years[0].label, years[range - 1].label].join(' - ');\r\n scope.rows = ctrl.split(years, 5);\r\n };\r\n\r\n ctrl.compare = function(date1, date2) {\r\n return date1.getFullYear() - date2.getFullYear();\r\n };\r\n\r\n ctrl.handleKeyDown = function(key, evt) {\r\n var date = ctrl.activeDate.getFullYear();\r\n\r\n if (key === 'left') {\r\n date = date - 1; // up\r\n } else if (key === 'up') {\r\n date = date - 5; // down\r\n } else if (key === 'right') {\r\n date = date + 1; // down\r\n } else if (key === 'down') {\r\n date = date + 5;\r\n } else if (key === 'pageup' || key === 'pagedown') {\r\n date += (key === 'pageup' ? - 1 : 1) * ctrl.step.years;\r\n } else if (key === 'home') {\r\n date = getStartingYear(ctrl.activeDate.getFullYear());\r\n } else if (key === 'end') {\r\n date = getStartingYear(ctrl.activeDate.getFullYear()) + range - 1;\r\n }\r\n ctrl.activeDate.setFullYear(date);\r\n };\r\n\r\n ctrl.refreshView();\r\n }\r\n };\r\n}])\r\n\r\n.constant('datepickerPopupConfig', {\r\n datepickerPopup: 'yyyy-MM-dd',\r\n datepickerPopupTemplateUrl: 'template/datepicker/popup.html',\r\n datepickerTemplateUrl: 'template/datepicker/datepicker.html',\r\n html5Types: {\r\n date: 'yyyy-MM-dd',\r\n 'datetime-local': 'yyyy-MM-ddTHH:mm:ss.sss',\r\n 'month': 'yyyy-MM'\r\n },\r\n currentText: 'Today',\r\n clearText: 'Clear',\r\n closeText: 'Done',\r\n closeOnDateSelection: true,\r\n appendToBody: false,\r\n showButtonBar: true,\r\n onOpenFocus: true\r\n})\r\n\r\n.directive('datepickerPopup', ['$compile', '$parse', '$document', '$rootScope', '$position', 'dateFilter', 'dateParser', 'datepickerPopupConfig', '$timeout',\r\nfunction($compile, $parse, $document, $rootScope, $position, dateFilter, dateParser, datepickerPopupConfig, $timeout) {\r\n return {\r\n restrict: 'EA',\r\n require: 'ngModel',\r\n scope: {\r\n isOpen: '=?',\r\n currentText: '@',\r\n clearText: '@',\r\n closeText: '@',\r\n dateDisabled: '&',\r\n customClass: '&'\r\n },\r\n link: function(scope, element, attrs, ngModel) {\r\n var dateFormat,\r\n closeOnDateSelection = angular.isDefined(attrs.closeOnDateSelection) ? scope.$parent.$eval(attrs.closeOnDateSelection) : datepickerPopupConfig.closeOnDateSelection,\r\n appendToBody = angular.isDefined(attrs.datepickerAppendToBody) ? scope.$parent.$eval(attrs.datepickerAppendToBody) : datepickerPopupConfig.appendToBody,\r\n onOpenFocus = angular.isDefined(attrs.onOpenFocus) ? scope.$parent.$eval(attrs.onOpenFocus) : datepickerPopupConfig.onOpenFocus,\r\n datepickerPopupTemplateUrl = angular.isDefined(attrs.datepickerPopupTemplateUrl) ? attrs.datepickerPopupTemplateUrl : datepickerPopupConfig.datepickerPopupTemplateUrl,\r\n datepickerTemplateUrl = angular.isDefined(attrs.datepickerTemplateUrl) ? attrs.datepickerTemplateUrl : datepickerPopupConfig.datepickerTemplateUrl,\r\n cache = {};\r\n\r\n scope.showButtonBar = angular.isDefined(attrs.showButtonBar) ? scope.$parent.$eval(attrs.showButtonBar) : datepickerPopupConfig.showButtonBar;\r\n\r\n scope.getText = function(key) {\r\n return scope[key + 'Text'] || datepickerPopupConfig[key + 'Text'];\r\n };\r\n\r\n scope.isDisabled = function(date) {\r\n if (date === 'today') {\r\n date = new Date();\r\n }\r\n\r\n return ((scope.watchData.minDate && scope.compare(date, cache.minDate) < 0) ||\r\n (scope.watchData.maxDate && scope.compare(date, cache.maxDate) > 0));\r\n };\r\n\r\n scope.compare = function(date1, date2) {\r\n return (new Date(date1.getFullYear(), date1.getMonth(), date1.getDate()) - new Date(date2.getFullYear(), date2.getMonth(), date2.getDate()));\r\n };\r\n\r\n var isHtml5DateInput = false;\r\n if (datepickerPopupConfig.html5Types[attrs.type]) {\r\n dateFormat = datepickerPopupConfig.html5Types[attrs.type];\r\n isHtml5DateInput = true;\r\n } else {\r\n dateFormat = attrs.datepickerPopup || datepickerPopupConfig.datepickerPopup;\r\n attrs.$observe('datepickerPopup', function(value, oldValue) {\r\n var newDateFormat = value || datepickerPopupConfig.datepickerPopup;\r\n // Invalidate the $modelValue to ensure that formatters re-run\r\n // FIXME: Refactor when PR is merged: https://github.com/angular/angular.js/pull/10764\r\n if (newDateFormat !== dateFormat) {\r\n dateFormat = newDateFormat;\r\n ngModel.$modelValue = null;\r\n\r\n if (!dateFormat) {\r\n throw new Error('datepickerPopup must have a date format specified.');\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (!dateFormat) {\r\n throw new Error('datepickerPopup must have a date format specified.');\r\n }\r\n\r\n if (isHtml5DateInput && attrs.datepickerPopup) {\r\n throw new Error('HTML5 date input types do not support custom formats.');\r\n }\r\n\r\n // popup element used to display calendar\r\n var popupEl = angular.element('
');\r\n popupEl.attr({\r\n 'ng-model': 'date',\r\n 'ng-change': 'dateSelection(date)',\r\n 'template-url': datepickerPopupTemplateUrl\r\n });\r\n\r\n function cameltoDash(string) {\r\n return string.replace(/([A-Z])/g, function($1) { return '-' + $1.toLowerCase(); });\r\n }\r\n\r\n // datepicker element\r\n var datepickerEl = angular.element(popupEl.children()[0]);\r\n datepickerEl.attr('template-url', datepickerTemplateUrl);\r\n\r\n if (isHtml5DateInput) {\r\n if (attrs.type === 'month') {\r\n datepickerEl.attr('datepicker-mode', '\"month\"');\r\n datepickerEl.attr('min-mode', 'month');\r\n }\r\n }\r\n\r\n if (attrs.datepickerOptions) {\r\n var options = scope.$parent.$eval(attrs.datepickerOptions);\r\n if (options && options.initDate) {\r\n scope.initDate = options.initDate;\r\n datepickerEl.attr('init-date', 'initDate');\r\n delete options.initDate;\r\n }\r\n angular.forEach(options, function(value, option) {\r\n datepickerEl.attr( cameltoDash(option), value );\r\n });\r\n }\r\n\r\n scope.watchData = {};\r\n angular.forEach(['minMode', 'maxMode', 'minDate', 'maxDate', 'datepickerMode', 'initDate', 'shortcutPropagation'], function(key) {\r\n if (attrs[key]) {\r\n var getAttribute = $parse(attrs[key]);\r\n scope.$parent.$watch(getAttribute, function(value) {\r\n scope.watchData[key] = value;\r\n if (key === 'minDate' || key === 'maxDate') {\r\n cache[key] = new Date(value);\r\n }\r\n });\r\n datepickerEl.attr(cameltoDash(key), 'watchData.' + key);\r\n\r\n // Propagate changes from datepicker to outside\r\n if (key === 'datepickerMode') {\r\n var setAttribute = getAttribute.assign;\r\n scope.$watch('watchData.' + key, function(value, oldvalue) {\r\n if (angular.isFunction(setAttribute) && value !== oldvalue) {\r\n setAttribute(scope.$parent, value);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n if (attrs.dateDisabled) {\r\n datepickerEl.attr('date-disabled', 'dateDisabled({ date: date, mode: mode })');\r\n }\r\n\r\n if (attrs.showWeeks) {\r\n datepickerEl.attr('show-weeks', attrs.showWeeks);\r\n }\r\n\r\n if (attrs.customClass) {\r\n datepickerEl.attr('custom-class', 'customClass({ date: date, mode: mode })');\r\n }\r\n\r\n function parseDate(viewValue) {\r\n if (angular.isNumber(viewValue)) {\r\n // presumably timestamp to date object\r\n viewValue = new Date(viewValue);\r\n }\r\n\r\n if (!viewValue) {\r\n return null;\r\n } else if (angular.isDate(viewValue) && !isNaN(viewValue)) {\r\n return viewValue;\r\n } else if (angular.isString(viewValue)) {\r\n var date = dateParser.parse(viewValue, dateFormat, scope.date);\r\n if (isNaN(date)) {\r\n return undefined;\r\n } else {\r\n return date;\r\n }\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n\r\n function validator(modelValue, viewValue) {\r\n var value = modelValue || viewValue;\r\n\r\n if (!attrs.ngRequired && !value) {\r\n return true;\r\n }\r\n\r\n if (angular.isNumber(value)) {\r\n value = new Date(value);\r\n }\r\n if (!value) {\r\n return true;\r\n } else if (angular.isDate(value) && !isNaN(value)) {\r\n return true;\r\n } else if (angular.isString(value)) {\r\n var date = dateParser.parse(value, dateFormat);\r\n return !isNaN(date);\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n if (!isHtml5DateInput) {\r\n // Internal API to maintain the correct ng-invalid-[key] class\r\n ngModel.$$parserName = 'date';\r\n ngModel.$validators.date = validator;\r\n ngModel.$parsers.unshift(parseDate);\r\n ngModel.$formatters.push(function(value) {\r\n scope.date = value;\r\n return ngModel.$isEmpty(value) ? value : dateFilter(value, dateFormat);\r\n });\r\n } else {\r\n ngModel.$formatters.push(function(value) {\r\n scope.date = value;\r\n return value;\r\n });\r\n }\r\n\r\n // Inner change\r\n scope.dateSelection = function(dt) {\r\n if (angular.isDefined(dt)) {\r\n scope.date = dt;\r\n }\r\n var date = scope.date ? dateFilter(scope.date, dateFormat) : null; // Setting to NULL is necessary for form validators to function\r\n element.val(date);\r\n ngModel.$setViewValue(date);\r\n\r\n if (closeOnDateSelection) {\r\n scope.isOpen = false;\r\n element[0].focus();\r\n }\r\n };\r\n\r\n // Detect changes in the view from the text box\r\n ngModel.$viewChangeListeners.push(function() {\r\n scope.date = dateParser.parse(ngModel.$viewValue, dateFormat, scope.date);\r\n });\r\n\r\n var documentClickBind = function(event) {\r\n if (scope.isOpen && !(element[0].contains(event.target) || popupEl[0].contains(event.target))) {\r\n scope.$apply(function() {\r\n scope.isOpen = false;\r\n });\r\n }\r\n };\r\n\r\n var inputKeydownBind = function(evt) {\r\n if (evt.which === 27 && scope.isOpen) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n scope.$apply(function() {\r\n scope.isOpen = false;\r\n });\r\n element[0].focus();\r\n } else if (evt.which === 40 && !scope.isOpen) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n scope.$apply(function() {\r\n scope.isOpen = true;\r\n });\r\n }\r\n };\r\n element.bind('keydown', inputKeydownBind);\r\n\r\n scope.keydown = function(evt) {\r\n if (evt.which === 27) {\r\n scope.isOpen = false;\r\n element[0].focus();\r\n }\r\n };\r\n\r\n scope.$watch('isOpen', function(value) {\r\n if (value) {\r\n scope.position = appendToBody ? $position.offset(element) : $position.position(element);\r\n scope.position.top = scope.position.top + element.prop('offsetHeight');\r\n\r\n $timeout(function() {\r\n if (onOpenFocus) {\r\n scope.$broadcast('datepicker.focus');\r\n }\r\n $document.bind('click', documentClickBind);\r\n }, 0, false);\r\n } else {\r\n $document.unbind('click', documentClickBind);\r\n }\r\n });\r\n\r\n scope.select = function(date) {\r\n if (date === 'today') {\r\n var today = new Date();\r\n if (angular.isDate(scope.date)) {\r\n date = new Date(scope.date);\r\n date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());\r\n } else {\r\n date = new Date(today.setHours(0, 0, 0, 0));\r\n }\r\n }\r\n scope.dateSelection(date);\r\n };\r\n\r\n scope.close = function() {\r\n scope.isOpen = false;\r\n element[0].focus();\r\n };\r\n\r\n var $popup = $compile(popupEl)(scope);\r\n // Prevent jQuery cache memory leak (template is now redundant after linking)\r\n popupEl.remove();\r\n\r\n if (appendToBody) {\r\n $document.find('body').append($popup);\r\n } else {\r\n element.after($popup);\r\n }\r\n\r\n scope.$on('$destroy', function() {\r\n if (scope.isOpen === true) {\r\n if (!$rootScope.$$phase) {\r\n scope.$apply(function() {\r\n scope.isOpen = false;\r\n });\r\n }\r\n }\r\n\r\n $popup.remove();\r\n element.unbind('keydown', inputKeydownBind);\r\n $document.unbind('click', documentClickBind);\r\n });\r\n }\r\n };\r\n}])\r\n\r\n.directive('datepickerPopupWrap', function() {\r\n return {\r\n restrict:'EA',\r\n replace: true,\r\n transclude: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'template/datepicker/popup.html';\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.dropdown', ['ui.bootstrap.position'])\r\n\r\n.constant('dropdownConfig', {\r\n openClass: 'open'\r\n})\r\n\r\n.service('dropdownService', ['$document', '$rootScope', function($document, $rootScope) {\r\n var openScope = null;\r\n\r\n this.open = function(dropdownScope) {\r\n if (!openScope) {\r\n $document.bind('click', closeDropdown);\r\n $document.bind('keydown', keybindFilter);\r\n }\r\n\r\n if (openScope && openScope !== dropdownScope) {\r\n openScope.isOpen = false;\r\n }\r\n\r\n openScope = dropdownScope;\r\n };\r\n\r\n this.close = function(dropdownScope) {\r\n if (openScope === dropdownScope) {\r\n openScope = null;\r\n $document.unbind('click', closeDropdown);\r\n $document.unbind('keydown', keybindFilter);\r\n }\r\n };\r\n\r\n var closeDropdown = function(evt) {\r\n // This method may still be called during the same mouse event that\r\n // unbound this event handler. So check openScope before proceeding.\r\n if (!openScope) { return; }\r\n\r\n if (evt && openScope.getAutoClose() === 'disabled') { return ; }\r\n\r\n var toggleElement = openScope.getToggleElement();\r\n if (evt && toggleElement && toggleElement[0].contains(evt.target)) {\r\n return;\r\n }\r\n\r\n var dropdownElement = openScope.getDropdownElement();\r\n if (evt && openScope.getAutoClose() === 'outsideClick' &&\r\n dropdownElement && dropdownElement[0].contains(evt.target)) {\r\n return;\r\n }\r\n\r\n openScope.isOpen = false;\r\n\r\n if (!$rootScope.$$phase) {\r\n openScope.$apply();\r\n }\r\n };\r\n\r\n var keybindFilter = function(evt) {\r\n if (evt.which === 27) {\r\n openScope.focusToggleElement();\r\n closeDropdown();\r\n } else if (openScope.isKeynavEnabled() && /(38|40)/.test(evt.which) && openScope.isOpen) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n openScope.focusDropdownEntry(evt.which);\r\n }\r\n };\r\n}])\r\n\r\n.controller('DropdownController', ['$scope', '$attrs', '$parse', 'dropdownConfig', 'dropdownService', '$animate', '$position', '$document', '$compile', '$templateRequest', function($scope, $attrs, $parse, dropdownConfig, dropdownService, $animate, $position, $document, $compile, $templateRequest) {\r\n var self = this,\r\n scope = $scope.$new(), // create a child scope so we are not polluting original one\r\n templateScope,\r\n openClass = dropdownConfig.openClass,\r\n getIsOpen,\r\n setIsOpen = angular.noop,\r\n toggleInvoker = $attrs.onToggle ? $parse($attrs.onToggle) : angular.noop,\r\n appendToBody = false,\r\n keynavEnabled = false,\r\n selectedOption = null,\r\n body = $document.find('body');\r\n\r\n this.init = function(element) {\r\n self.$element = element;\r\n\r\n if ($attrs.isOpen) {\r\n getIsOpen = $parse($attrs.isOpen);\r\n setIsOpen = getIsOpen.assign;\r\n\r\n $scope.$watch(getIsOpen, function(value) {\r\n scope.isOpen = !!value;\r\n });\r\n }\r\n\r\n appendToBody = angular.isDefined($attrs.dropdownAppendToBody);\r\n keynavEnabled = angular.isDefined($attrs.keyboardNav);\r\n\r\n if (appendToBody && self.dropdownMenu) {\r\n body.append(self.dropdownMenu);\r\n body.addClass('dropdown');\r\n element.on('$destroy', function handleDestroyEvent() {\r\n self.dropdownMenu.remove();\r\n });\r\n }\r\n };\r\n\r\n this.toggle = function(open) {\r\n return scope.isOpen = arguments.length ? !!open : !scope.isOpen;\r\n };\r\n\r\n // Allow other directives to watch status\r\n this.isOpen = function() {\r\n return scope.isOpen;\r\n };\r\n\r\n scope.getToggleElement = function() {\r\n return self.toggleElement;\r\n };\r\n\r\n scope.getAutoClose = function() {\r\n return $attrs.autoClose || 'always'; //or 'outsideClick' or 'disabled'\r\n };\r\n\r\n scope.getElement = function() {\r\n return self.$element;\r\n };\r\n\r\n scope.isKeynavEnabled = function() {\r\n return keynavEnabled;\r\n };\r\n\r\n scope.focusDropdownEntry = function(keyCode) {\r\n var elems = self.dropdownMenu ? //If append to body is used.\r\n (angular.element(self.dropdownMenu).find('a')) :\r\n (angular.element(self.$element).find('ul').eq(0).find('a'));\r\n\r\n switch (keyCode) {\r\n case (40): {\r\n if (!angular.isNumber(self.selectedOption)) {\r\n self.selectedOption = 0;\r\n } else {\r\n self.selectedOption = (self.selectedOption === elems.length -1 ?\r\n self.selectedOption :\r\n self.selectedOption + 1);\r\n }\r\n break;\r\n }\r\n case (38): {\r\n if (!angular.isNumber(self.selectedOption)) {\r\n self.selectedOption = elems.length - 1;\r\n } else {\r\n self.selectedOption = self.selectedOption === 0 ?\r\n 0 : self.selectedOption - 1;\r\n }\r\n break;\r\n }\r\n }\r\n elems[self.selectedOption].focus();\r\n };\r\n\r\n scope.getDropdownElement = function() {\r\n return self.dropdownMenu;\r\n };\r\n\r\n scope.focusToggleElement = function() {\r\n if (self.toggleElement) {\r\n self.toggleElement[0].focus();\r\n }\r\n };\r\n\r\n scope.$watch('isOpen', function(isOpen, wasOpen) {\r\n if (appendToBody && self.dropdownMenu) {\r\n var pos = $position.positionElements(self.$element, self.dropdownMenu, 'bottom-left', true);\r\n var css = {\r\n top: pos.top + 'px',\r\n display: isOpen ? 'block' : 'none'\r\n };\r\n\r\n var rightalign = self.dropdownMenu.hasClass('dropdown-menu-right');\r\n if (!rightalign) {\r\n css.left = pos.left + 'px';\r\n css.right = 'auto';\r\n } else {\r\n css.left = 'auto';\r\n css.right = (window.innerWidth - (pos.left + self.$element.prop('offsetWidth'))) + 'px';\r\n }\r\n\r\n self.dropdownMenu.css(css);\r\n }\r\n\r\n var openContainer = appendToBody ? body : self.$element;\r\n\r\n $animate[isOpen ? 'addClass' : 'removeClass'](openContainer, openClass).then(function() {\r\n if (angular.isDefined(isOpen) && isOpen !== wasOpen) {\r\n toggleInvoker($scope, { open: !!isOpen });\r\n }\r\n });\r\n\r\n if (isOpen) {\r\n if (self.dropdownMenuTemplateUrl) {\r\n $templateRequest(self.dropdownMenuTemplateUrl).then(function(tplContent) {\r\n templateScope = scope.$new();\r\n $compile(tplContent.trim())(templateScope, function(dropdownElement) {\r\n var newEl = dropdownElement;\r\n self.dropdownMenu.replaceWith(newEl);\r\n self.dropdownMenu = newEl;\r\n });\r\n });\r\n }\r\n\r\n scope.focusToggleElement();\r\n dropdownService.open(scope);\r\n } else {\r\n if (self.dropdownMenuTemplateUrl) {\r\n if (templateScope) {\r\n templateScope.$destroy();\r\n }\r\n var newEl = angular.element('
    ');\r\n self.dropdownMenu.replaceWith(newEl);\r\n self.dropdownMenu = newEl;\r\n }\r\n\r\n dropdownService.close(scope);\r\n self.selectedOption = null;\r\n }\r\n\r\n if (angular.isFunction(setIsOpen)) {\r\n setIsOpen($scope, isOpen);\r\n }\r\n });\r\n\r\n $scope.$on('$locationChangeSuccess', function() {\r\n if (scope.getAutoClose() !== 'disabled') {\r\n scope.isOpen = false;\r\n }\r\n });\r\n\r\n var offDestroy = $scope.$on('$destroy', function() {\r\n scope.$destroy();\r\n });\r\n scope.$on('$destroy', offDestroy);\r\n}])\r\n\r\n.directive('dropdown', function() {\r\n return {\r\n controller: 'DropdownController',\r\n link: function(scope, element, attrs, dropdownCtrl) {\r\n dropdownCtrl.init( element );\r\n element.addClass('dropdown');\r\n }\r\n };\r\n})\r\n\r\n.directive('dropdownMenu', function() {\r\n return {\r\n restrict: 'AC',\r\n require: '?^dropdown',\r\n link: function(scope, element, attrs, dropdownCtrl) {\r\n if (!dropdownCtrl) {\r\n return;\r\n }\r\n var tplUrl = attrs.templateUrl;\r\n if (tplUrl) {\r\n dropdownCtrl.dropdownMenuTemplateUrl = tplUrl;\r\n }\r\n if (!dropdownCtrl.dropdownMenu) {\r\n dropdownCtrl.dropdownMenu = element;\r\n }\r\n }\r\n };\r\n})\r\n\r\n.directive('keyboardNav', function() {\r\n return {\r\n restrict: 'A',\r\n require: '?^dropdown',\r\n link: function (scope, element, attrs, dropdownCtrl) {\r\n\r\n element.bind('keydown', function(e) {\r\n if ([38, 40].indexOf(e.which) !== -1) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n var elems = dropdownCtrl.dropdownMenu.find('a');\r\n\r\n switch (e.which) {\r\n case (40): { // Down\r\n if (!angular.isNumber(dropdownCtrl.selectedOption)) {\r\n dropdownCtrl.selectedOption = 0;\r\n } else {\r\n dropdownCtrl.selectedOption = dropdownCtrl.selectedOption === elems.length -1 ?\r\n dropdownCtrl.selectedOption : dropdownCtrl.selectedOption + 1;\r\n }\r\n break;\r\n }\r\n case (38): { // Up\r\n if (!angular.isNumber(dropdownCtrl.selectedOption)) {\r\n dropdownCtrl.selectedOption = elems.length - 1;\r\n } else {\r\n dropdownCtrl.selectedOption = dropdownCtrl.selectedOption === 0 ?\r\n 0 : dropdownCtrl.selectedOption - 1;\r\n }\r\n break;\r\n }\r\n }\r\n elems[dropdownCtrl.selectedOption].focus();\r\n }\r\n });\r\n }\r\n };\r\n})\r\n\r\n.directive('dropdownToggle', function() {\r\n return {\r\n require: '?^dropdown',\r\n link: function(scope, element, attrs, dropdownCtrl) {\r\n if (!dropdownCtrl) {\r\n return;\r\n }\r\n\r\n element.addClass('dropdown-toggle');\r\n\r\n dropdownCtrl.toggleElement = element;\r\n\r\n var toggleDropdown = function(event) {\r\n event.preventDefault();\r\n\r\n if (!element.hasClass('disabled') && !attrs.disabled) {\r\n scope.$apply(function() {\r\n dropdownCtrl.toggle();\r\n });\r\n }\r\n };\r\n\r\n element.bind('click', toggleDropdown);\r\n\r\n // WAI-ARIA\r\n element.attr({ 'aria-haspopup': true, 'aria-expanded': false });\r\n scope.$watch(dropdownCtrl.isOpen, function( isOpen ) {\r\n element.attr('aria-expanded', !!isOpen);\r\n });\r\n\r\n scope.$on('$destroy', function() {\r\n element.unbind('click', toggleDropdown);\r\n });\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.modal', [])\r\n\r\n/**\r\n * A helper, internal data structure that acts as a map but also allows getting / removing\r\n * elements in the LIFO order\r\n */\r\n .factory('$$stackedMap', function() {\r\n return {\r\n createNew: function() {\r\n var stack = [];\r\n\r\n return {\r\n add: function(key, value) {\r\n stack.push({\r\n key: key,\r\n value: value\r\n });\r\n },\r\n get: function(key) {\r\n for (var i = 0; i < stack.length; i++) {\r\n if (key == stack[i].key) {\r\n return stack[i];\r\n }\r\n }\r\n },\r\n keys: function() {\r\n var keys = [];\r\n for (var i = 0; i < stack.length; i++) {\r\n keys.push(stack[i].key);\r\n }\r\n return keys;\r\n },\r\n top: function() {\r\n return stack[stack.length - 1];\r\n },\r\n remove: function(key) {\r\n var idx = -1;\r\n for (var i = 0; i < stack.length; i++) {\r\n if (key == stack[i].key) {\r\n idx = i;\r\n break;\r\n }\r\n }\r\n return stack.splice(idx, 1)[0];\r\n },\r\n removeTop: function() {\r\n return stack.splice(stack.length - 1, 1)[0];\r\n },\r\n length: function() {\r\n return stack.length;\r\n }\r\n };\r\n }\r\n };\r\n })\r\n\r\n/**\r\n * A helper, internal data structure that stores all references attached to key\r\n */\r\n .factory('$$multiMap', function() {\r\n return {\r\n createNew: function() {\r\n var map = {};\r\n\r\n return {\r\n entries: function() {\r\n return Object.keys(map).map(function(key) {\r\n return {\r\n key: key,\r\n value: map[key]\r\n };\r\n });\r\n },\r\n get: function(key) {\r\n return map[key];\r\n },\r\n hasKey: function(key) {\r\n return !!map[key];\r\n },\r\n keys: function() {\r\n return Object.keys(map);\r\n },\r\n put: function(key, value) {\r\n if (!map[key]) {\r\n map[key] = [];\r\n }\r\n\r\n map[key].push(value);\r\n },\r\n remove: function(key, value) {\r\n var values = map[key];\r\n\r\n if (!values) {\r\n return;\r\n }\r\n\r\n var idx = values.indexOf(value);\r\n\r\n if (idx !== -1) {\r\n values.splice(idx, 1);\r\n }\r\n\r\n if (!values.length) {\r\n delete map[key];\r\n }\r\n }\r\n };\r\n }\r\n };\r\n })\r\n\r\n/**\r\n * A helper directive for the $modal service. It creates a backdrop element.\r\n */\r\n .directive('modalBackdrop', [\r\n '$animate', '$injector', '$modalStack',\r\n function($animate , $injector, $modalStack) {\r\n var $animateCss = null;\r\n\r\n if ($injector.has('$animateCss')) {\r\n $animateCss = $injector.get('$animateCss');\r\n }\r\n\r\n return {\r\n restrict: 'EA',\r\n replace: true,\r\n templateUrl: 'template/modal/backdrop.html',\r\n compile: function(tElement, tAttrs) {\r\n tElement.addClass(tAttrs.backdropClass);\r\n return linkFn;\r\n }\r\n };\r\n\r\n function linkFn(scope, element, attrs) {\r\n if (attrs.modalInClass) {\r\n if ($animateCss) {\r\n $animateCss(element, {\r\n addClass: attrs.modalInClass\r\n }).start();\r\n } else {\r\n $animate.addClass(element, attrs.modalInClass);\r\n }\r\n\r\n scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) {\r\n var done = setIsAsync();\r\n if ($animateCss) {\r\n $animateCss(element, {\r\n removeClass: attrs.modalInClass\r\n }).start().then(done);\r\n } else {\r\n $animate.removeClass(element, attrs.modalInClass).then(done);\r\n }\r\n });\r\n }\r\n }\r\n }])\r\n\r\n .directive('modalWindow', [\r\n '$modalStack', '$q', '$animate', '$injector',\r\n function($modalStack , $q , $animate, $injector) {\r\n var $animateCss = null;\r\n\r\n if ($injector.has('$animateCss')) {\r\n $animateCss = $injector.get('$animateCss');\r\n }\r\n\r\n return {\r\n restrict: 'EA',\r\n scope: {\r\n index: '@'\r\n },\r\n replace: true,\r\n transclude: true,\r\n templateUrl: function(tElement, tAttrs) {\r\n return tAttrs.templateUrl || 'template/modal/window.html';\r\n },\r\n link: function(scope, element, attrs) {\r\n element.addClass(attrs.windowClass || '');\r\n scope.size = attrs.size;\r\n\r\n scope.close = function(evt) {\r\n var modal = $modalStack.getTop();\r\n if (modal && modal.value.backdrop && modal.value.backdrop !== 'static' && (evt.target === evt.currentTarget)) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $modalStack.dismiss(modal.key, 'backdrop click');\r\n }\r\n };\r\n\r\n // This property is only added to the scope for the purpose of detecting when this directive is rendered.\r\n // We can detect that by using this property in the template associated with this directive and then use\r\n // {@link Attribute#$observe} on it. For more details please see {@link TableColumnResize}.\r\n scope.$isRendered = true;\r\n\r\n // Deferred object that will be resolved when this modal is render.\r\n var modalRenderDeferObj = $q.defer();\r\n // Observe function will be called on next digest cycle after compilation, ensuring that the DOM is ready.\r\n // In order to use this way of finding whether DOM is ready, we need to observe a scope property used in modal's template.\r\n attrs.$observe('modalRender', function(value) {\r\n if (value == 'true') {\r\n modalRenderDeferObj.resolve();\r\n }\r\n });\r\n\r\n modalRenderDeferObj.promise.then(function() {\r\n var animationPromise = null;\r\n\r\n if (attrs.modalInClass) {\r\n if ($animateCss) {\r\n animationPromise = $animateCss(element, {\r\n addClass: attrs.modalInClass\r\n }).start();\r\n } else {\r\n animationPromise = $animate.addClass(element, attrs.modalInClass);\r\n }\r\n\r\n scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) {\r\n var done = setIsAsync();\r\n if ($animateCss) {\r\n $animateCss(element, {\r\n removeClass: attrs.modalInClass\r\n }).start().then(done);\r\n } else {\r\n $animate.removeClass(element, attrs.modalInClass).then(done);\r\n }\r\n });\r\n }\r\n\r\n\r\n $q.when(animationPromise).then(function() {\r\n var inputsWithAutofocus = element[0].querySelectorAll('[autofocus]');\r\n /**\r\n * Auto-focusing of a freshly-opened modal element causes any child elements\r\n * with the autofocus attribute to lose focus. This is an issue on touch\r\n * based devices which will show and then hide the onscreen keyboard.\r\n * Attempts to refocus the autofocus element via JavaScript will not reopen\r\n * the onscreen keyboard. Fixed by updated the focusing logic to only autofocus\r\n * the modal element if the modal does not contain an autofocus element.\r\n */\r\n if (inputsWithAutofocus.length) {\r\n inputsWithAutofocus[0].focus();\r\n } else {\r\n element[0].focus();\r\n }\r\n });\r\n\r\n // Notify {@link $modalStack} that modal is rendered.\r\n var modal = $modalStack.getTop();\r\n if (modal) {\r\n $modalStack.modalRendered(modal.key);\r\n }\r\n });\r\n }\r\n };\r\n }])\r\n\r\n .directive('modalAnimationClass', [\r\n function () {\r\n return {\r\n compile: function(tElement, tAttrs) {\r\n if (tAttrs.modalAnimation) {\r\n tElement.addClass(tAttrs.modalAnimationClass);\r\n }\r\n }\r\n };\r\n }])\r\n\r\n .directive('modalTransclude', function() {\r\n return {\r\n link: function($scope, $element, $attrs, controller, $transclude) {\r\n $transclude($scope.$parent, function(clone) {\r\n $element.empty();\r\n $element.append(clone);\r\n });\r\n }\r\n };\r\n })\r\n\r\n .factory('$modalStack', [\r\n '$animate', '$timeout', '$document', '$compile', '$rootScope',\r\n '$q',\r\n '$injector',\r\n '$$multiMap',\r\n '$$stackedMap',\r\n function($animate , $timeout , $document , $compile , $rootScope ,\r\n $q,\r\n $injector,\r\n $$multiMap,\r\n $$stackedMap) {\r\n var $animateCss = null;\r\n\r\n if ($injector.has('$animateCss')) {\r\n $animateCss = $injector.get('$animateCss');\r\n }\r\n\r\n var OPENED_MODAL_CLASS = 'modal-open';\r\n\r\n var backdropDomEl, backdropScope;\r\n var openedWindows = $$stackedMap.createNew();\r\n var openedClasses = $$multiMap.createNew();\r\n var $modalStack = {\r\n NOW_CLOSING_EVENT: 'modal.stack.now-closing'\r\n };\r\n\r\n //Modal focus behavior\r\n var focusableElementList;\r\n var focusIndex = 0;\r\n var tababbleSelector = 'a[href], area[href], input:not([disabled]), ' +\r\n 'button:not([disabled]),select:not([disabled]), textarea:not([disabled]), ' +\r\n 'iframe, object, embed, *[tabindex], *[contenteditable=true]';\r\n\r\n function backdropIndex() {\r\n var topBackdropIndex = -1;\r\n var opened = openedWindows.keys();\r\n for (var i = 0; i < opened.length; i++) {\r\n if (openedWindows.get(opened[i]).value.backdrop) {\r\n topBackdropIndex = i;\r\n }\r\n }\r\n return topBackdropIndex;\r\n }\r\n\r\n $rootScope.$watch(backdropIndex, function(newBackdropIndex) {\r\n if (backdropScope) {\r\n backdropScope.index = newBackdropIndex;\r\n }\r\n });\r\n\r\n function removeModalWindow(modalInstance, elementToReceiveFocus) {\r\n var body = $document.find('body').eq(0);\r\n var modalWindow = openedWindows.get(modalInstance).value;\r\n\r\n //clean up the stack\r\n openedWindows.remove(modalInstance);\r\n\r\n removeAfterAnimate(modalWindow.modalDomEl, modalWindow.modalScope, function() {\r\n var modalBodyClass = modalWindow.openedClass || OPENED_MODAL_CLASS;\r\n openedClasses.remove(modalBodyClass, modalInstance);\r\n body.toggleClass(modalBodyClass, openedClasses.hasKey(modalBodyClass));\r\n });\r\n checkRemoveBackdrop();\r\n\r\n //move focus to specified element if available, or else to body\r\n if (elementToReceiveFocus && elementToReceiveFocus.focus) {\r\n elementToReceiveFocus.focus();\r\n } else {\r\n body.focus();\r\n }\r\n }\r\n\r\n function checkRemoveBackdrop() {\r\n //remove backdrop if no longer needed\r\n if (backdropDomEl && backdropIndex() == -1) {\r\n var backdropScopeRef = backdropScope;\r\n removeAfterAnimate(backdropDomEl, backdropScope, function() {\r\n backdropScopeRef = null;\r\n });\r\n backdropDomEl = undefined;\r\n backdropScope = undefined;\r\n }\r\n }\r\n\r\n function removeAfterAnimate(domEl, scope, done) {\r\n var asyncDeferred;\r\n var asyncPromise = null;\r\n var setIsAsync = function() {\r\n if (!asyncDeferred) {\r\n asyncDeferred = $q.defer();\r\n asyncPromise = asyncDeferred.promise;\r\n }\r\n\r\n return function asyncDone() {\r\n asyncDeferred.resolve();\r\n };\r\n };\r\n scope.$broadcast($modalStack.NOW_CLOSING_EVENT, setIsAsync);\r\n\r\n // Note that it's intentional that asyncPromise might be null.\r\n // That's when setIsAsync has not been called during the\r\n // NOW_CLOSING_EVENT broadcast.\r\n return $q.when(asyncPromise).then(afterAnimating);\r\n\r\n function afterAnimating() {\r\n if (afterAnimating.done) {\r\n return;\r\n }\r\n afterAnimating.done = true;\r\n\r\n if ($animateCss) {\r\n $animateCss(domEl, {\r\n event: 'leave'\r\n }).start().then(function() {\r\n domEl.remove();\r\n });\r\n } else {\r\n $animate.leave(domEl);\r\n }\r\n scope.$destroy();\r\n if (done) {\r\n done();\r\n }\r\n }\r\n }\r\n\r\n $document.bind('keydown', function(evt) {\r\n if (evt.isDefaultPrevented()) {\r\n return evt;\r\n }\r\n\r\n var modal = openedWindows.top();\r\n if (modal && modal.value.keyboard) {\r\n switch (evt.which){\r\n case 27: {\r\n evt.preventDefault();\r\n $rootScope.$apply(function() {\r\n $modalStack.dismiss(modal.key, 'escape key press');\r\n });\r\n break;\r\n }\r\n case 9: {\r\n $modalStack.loadFocusElementList(modal);\r\n var focusChanged = false;\r\n if (evt.shiftKey) {\r\n if ($modalStack.isFocusInFirstItem(evt)) {\r\n focusChanged = $modalStack.focusLastFocusableElement();\r\n }\r\n } else {\r\n if ($modalStack.isFocusInLastItem(evt)) {\r\n focusChanged = $modalStack.focusFirstFocusableElement();\r\n }\r\n }\r\n\r\n if (focusChanged) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n\r\n $modalStack.open = function(modalInstance, modal) {\r\n var modalOpener = $document[0].activeElement,\r\n modalBodyClass = modal.openedClass || OPENED_MODAL_CLASS;\r\n\r\n openedWindows.add(modalInstance, {\r\n deferred: modal.deferred,\r\n renderDeferred: modal.renderDeferred,\r\n modalScope: modal.scope,\r\n backdrop: modal.backdrop,\r\n keyboard: modal.keyboard,\r\n openedClass: modal.openedClass\r\n });\r\n\r\n openedClasses.put(modalBodyClass, modalInstance);\r\n\r\n var body = $document.find('body').eq(0),\r\n currBackdropIndex = backdropIndex();\r\n\r\n if (currBackdropIndex >= 0 && !backdropDomEl) {\r\n backdropScope = $rootScope.$new(true);\r\n backdropScope.index = currBackdropIndex;\r\n var angularBackgroundDomEl = angular.element('
    ');\r\n angularBackgroundDomEl.attr('backdrop-class', modal.backdropClass);\r\n if (modal.animation) {\r\n angularBackgroundDomEl.attr('modal-animation', 'true');\r\n }\r\n backdropDomEl = $compile(angularBackgroundDomEl)(backdropScope);\r\n body.append(backdropDomEl);\r\n }\r\n\r\n var angularDomEl = angular.element('
    ');\r\n angularDomEl.attr({\r\n 'template-url': modal.windowTemplateUrl,\r\n 'window-class': modal.windowClass,\r\n 'size': modal.size,\r\n 'index': openedWindows.length() - 1,\r\n 'animate': 'animate'\r\n }).html(modal.content);\r\n if (modal.animation) {\r\n angularDomEl.attr('modal-animation', 'true');\r\n }\r\n\r\n var modalDomEl = $compile(angularDomEl)(modal.scope);\r\n openedWindows.top().value.modalDomEl = modalDomEl;\r\n openedWindows.top().value.modalOpener = modalOpener;\r\n body.append(modalDomEl);\r\n body.addClass(modalBodyClass);\r\n\r\n $modalStack.clearFocusListCache();\r\n };\r\n\r\n function broadcastClosing(modalWindow, resultOrReason, closing) {\r\n return !modalWindow.value.modalScope.$broadcast('modal.closing', resultOrReason, closing).defaultPrevented;\r\n }\r\n\r\n $modalStack.close = function(modalInstance, result) {\r\n var modalWindow = openedWindows.get(modalInstance);\r\n if (modalWindow && broadcastClosing(modalWindow, result, true)) {\r\n modalWindow.value.modalScope.$$uibDestructionScheduled = true;\r\n modalWindow.value.deferred.resolve(result);\r\n removeModalWindow(modalInstance, modalWindow.value.modalOpener);\r\n return true;\r\n }\r\n return !modalWindow;\r\n };\r\n\r\n $modalStack.dismiss = function(modalInstance, reason) {\r\n var modalWindow = openedWindows.get(modalInstance);\r\n if (modalWindow && broadcastClosing(modalWindow, reason, false)) {\r\n modalWindow.value.modalScope.$$uibDestructionScheduled = true;\r\n modalWindow.value.deferred.reject(reason);\r\n removeModalWindow(modalInstance, modalWindow.value.modalOpener);\r\n return true;\r\n }\r\n return !modalWindow;\r\n };\r\n\r\n $modalStack.dismissAll = function(reason) {\r\n var topModal = this.getTop();\r\n while (topModal && this.dismiss(topModal.key, reason)) {\r\n topModal = this.getTop();\r\n }\r\n };\r\n\r\n $modalStack.getTop = function() {\r\n return openedWindows.top();\r\n };\r\n\r\n $modalStack.modalRendered = function(modalInstance) {\r\n var modalWindow = openedWindows.get(modalInstance);\r\n if (modalWindow) {\r\n modalWindow.value.renderDeferred.resolve();\r\n }\r\n };\r\n\r\n $modalStack.focusFirstFocusableElement = function() {\r\n if (focusableElementList.length > 0) {\r\n focusableElementList[0].focus();\r\n return true;\r\n }\r\n return false;\r\n };\r\n $modalStack.focusLastFocusableElement = function() {\r\n if (focusableElementList.length > 0) {\r\n focusableElementList[focusableElementList.length - 1].focus();\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.isFocusInFirstItem = function(evt) {\r\n if (focusableElementList.length > 0) {\r\n return (evt.target || evt.srcElement) == focusableElementList[0];\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.isFocusInLastItem = function(evt) {\r\n if (focusableElementList.length > 0) {\r\n return (evt.target || evt.srcElement) == focusableElementList[focusableElementList.length - 1];\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.clearFocusListCache = function() {\r\n focusableElementList = [];\r\n focusIndex = 0;\r\n };\r\n\r\n $modalStack.loadFocusElementList = function(modalWindow) {\r\n if (focusableElementList === undefined || !focusableElementList.length0) {\r\n if (modalWindow) {\r\n var modalDomE1 = modalWindow.value.modalDomEl;\r\n if (modalDomE1 && modalDomE1.length) {\r\n focusableElementList = modalDomE1[0].querySelectorAll(tababbleSelector);\r\n }\r\n }\r\n }\r\n };\r\n\r\n return $modalStack;\r\n }])\r\n\r\n .provider('$modal', function() {\r\n var $modalProvider = {\r\n options: {\r\n animation: true,\r\n backdrop: true, //can also be false or 'static'\r\n keyboard: true\r\n },\r\n $get: ['$injector', '$rootScope', '$q', '$templateRequest', '$controller', '$modalStack',\r\n function ($injector, $rootScope, $q, $templateRequest, $controller, $modalStack) {\r\n var $modal = {};\r\n\r\n function getTemplatePromise(options) {\r\n return options.template ? $q.when(options.template) :\r\n $templateRequest(angular.isFunction(options.templateUrl) ? (options.templateUrl)() : options.templateUrl);\r\n }\r\n\r\n function getResolvePromises(resolves) {\r\n var promisesArr = [];\r\n angular.forEach(resolves, function(value) {\r\n if (angular.isFunction(value) || angular.isArray(value)) {\r\n promisesArr.push($q.when($injector.invoke(value)));\r\n } else if (angular.isString(value)) {\r\n promisesArr.push($q.when($injector.get(value)));\r\n } else {\r\n promisesArr.push($q.when(value));\r\n }\r\n });\r\n return promisesArr;\r\n }\r\n\r\n var promiseChain = null;\r\n $modal.getPromiseChain = function() {\r\n return promiseChain;\r\n };\r\n\r\n $modal.open = function (modalOptions) {\r\n\r\n var modalResultDeferred = $q.defer();\r\n var modalOpenedDeferred = $q.defer();\r\n var modalRenderDeferred = $q.defer();\r\n\r\n //prepare an instance of a modal to be injected into controllers and returned to a caller\r\n var modalInstance = {\r\n result: modalResultDeferred.promise,\r\n opened: modalOpenedDeferred.promise,\r\n rendered: modalRenderDeferred.promise,\r\n close: function (result) {\r\n return $modalStack.close(modalInstance, result);\r\n },\r\n dismiss: function (reason) {\r\n return $modalStack.dismiss(modalInstance, reason);\r\n }\r\n };\r\n\r\n //merge and clean up options\r\n modalOptions = angular.extend({}, $modalProvider.options, modalOptions);\r\n modalOptions.resolve = modalOptions.resolve || {};\r\n\r\n //verify options\r\n if (!modalOptions.template && !modalOptions.templateUrl) {\r\n throw new Error('One of template or templateUrl options is required.');\r\n }\r\n\r\n var templateAndResolvePromise =\r\n $q.all([getTemplatePromise(modalOptions)].concat(getResolvePromises(modalOptions.resolve)));\r\n\r\n // Wait for the resolution of the existing promise chain.\r\n // Then switch to our own combined promise dependency (regardless of how the previous modal fared).\r\n // Then add to $modalStack and resolve opened.\r\n // Finally clean up the chain variable if no subsequent modal has overwritten it.\r\n var samePromise;\r\n samePromise = promiseChain = $q.all([promiseChain])\r\n .then(function() { return templateAndResolvePromise; }, function() { return templateAndResolvePromise; })\r\n .then(function resolveSuccess(tplAndVars) {\r\n\r\n var modalScope = (modalOptions.scope || $rootScope).$new();\r\n modalScope.$close = modalInstance.close;\r\n modalScope.$dismiss = modalInstance.dismiss;\r\n\r\n modalScope.$on('$destroy', function() {\r\n if (!modalScope.$$uibDestructionScheduled) {\r\n modalScope.$dismiss('$uibUnscheduledDestruction');\r\n }\r\n });\r\n\r\n var ctrlInstance, ctrlLocals = {};\r\n var resolveIter = 1;\r\n\r\n //controllers\r\n if (modalOptions.controller) {\r\n ctrlLocals.$scope = modalScope;\r\n ctrlLocals.$modalInstance = modalInstance;\r\n angular.forEach(modalOptions.resolve, function(value, key) {\r\n ctrlLocals[key] = tplAndVars[resolveIter++];\r\n });\r\n\r\n ctrlInstance = $controller(modalOptions.controller, ctrlLocals);\r\n if (modalOptions.controllerAs) {\r\n if (modalOptions.bindToController) {\r\n angular.extend(ctrlInstance, modalScope);\r\n }\r\n\r\n modalScope[modalOptions.controllerAs] = ctrlInstance;\r\n }\r\n }\r\n\r\n $modalStack.open(modalInstance, {\r\n scope: modalScope,\r\n deferred: modalResultDeferred,\r\n renderDeferred: modalRenderDeferred,\r\n content: tplAndVars[0],\r\n animation: modalOptions.animation,\r\n backdrop: modalOptions.backdrop,\r\n keyboard: modalOptions.keyboard,\r\n backdropClass: modalOptions.backdropClass,\r\n windowClass: modalOptions.windowClass,\r\n windowTemplateUrl: modalOptions.windowTemplateUrl,\r\n size: modalOptions.size,\r\n openedClass: modalOptions.openedClass\r\n });\r\n modalOpenedDeferred.resolve(true);\r\n\r\n }, function resolveError(reason) {\r\n modalOpenedDeferred.reject(reason);\r\n modalResultDeferred.reject(reason);\r\n })\r\n .finally(function() {\r\n if (promiseChain === samePromise) {\r\n promiseChain = null;\r\n }\r\n });\r\n\r\n return modalInstance;\r\n };\r\n\r\n return $modal;\r\n }]\r\n };\r\n\r\n return $modalProvider;\r\n });\r\n\r\nangular.module('ui.bootstrap.pagination', [])\r\n.controller('PaginationController', ['$scope', '$attrs', '$parse', function($scope, $attrs, $parse) {\r\n var self = this,\r\n ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl\r\n setNumPages = $attrs.numPages ? $parse($attrs.numPages).assign : angular.noop;\r\n\r\n this.init = function(ngModelCtrl_, config) {\r\n ngModelCtrl = ngModelCtrl_;\r\n this.config = config;\r\n\r\n ngModelCtrl.$render = function() {\r\n self.render();\r\n };\r\n\r\n if ($attrs.itemsPerPage) {\r\n $scope.$parent.$watch($parse($attrs.itemsPerPage), function(value) {\r\n self.itemsPerPage = parseInt(value, 10);\r\n $scope.totalPages = self.calculateTotalPages();\r\n });\r\n } else {\r\n this.itemsPerPage = config.itemsPerPage;\r\n }\r\n\r\n $scope.$watch('totalItems', function() {\r\n $scope.totalPages = self.calculateTotalPages();\r\n });\r\n\r\n $scope.$watch('totalPages', function(value) {\r\n setNumPages($scope.$parent, value); // Readonly variable\r\n\r\n if ( $scope.page > value ) {\r\n $scope.selectPage(value);\r\n } else {\r\n ngModelCtrl.$render();\r\n }\r\n });\r\n };\r\n\r\n this.calculateTotalPages = function() {\r\n var totalPages = this.itemsPerPage < 1 ? 1 : Math.ceil($scope.totalItems / this.itemsPerPage);\r\n return Math.max(totalPages || 0, 1);\r\n };\r\n\r\n this.render = function() {\r\n $scope.page = parseInt(ngModelCtrl.$viewValue, 10) || 1;\r\n };\r\n\r\n $scope.selectPage = function(page, evt) {\r\n if (evt) {\r\n evt.preventDefault();\r\n }\r\n\r\n var clickAllowed = !$scope.ngDisabled || !evt;\r\n if (clickAllowed && $scope.page !== page && page > 0 && page <= $scope.totalPages) {\r\n if (evt && evt.target) {\r\n evt.target.blur();\r\n }\r\n ngModelCtrl.$setViewValue(page);\r\n ngModelCtrl.$render();\r\n }\r\n };\r\n\r\n $scope.getText = function(key) {\r\n return $scope[key + 'Text'] || self.config[key + 'Text'];\r\n };\r\n\r\n $scope.noPrevious = function() {\r\n return $scope.page === 1;\r\n };\r\n\r\n $scope.noNext = function() {\r\n return $scope.page === $scope.totalPages;\r\n };\r\n}])\r\n\r\n.constant('paginationConfig', {\r\n itemsPerPage: 10,\r\n boundaryLinks: false,\r\n directionLinks: true,\r\n firstText: 'First',\r\n previousText: 'Previous',\r\n nextText: 'Next',\r\n lastText: 'Last',\r\n rotate: true\r\n})\r\n\r\n.directive('pagination', ['$parse', 'paginationConfig', function($parse, paginationConfig) {\r\n return {\r\n restrict: 'EA',\r\n scope: {\r\n totalItems: '=',\r\n firstText: '@',\r\n previousText: '@',\r\n nextText: '@',\r\n lastText: '@',\r\n ngDisabled:'='\r\n },\r\n require: ['pagination', '?ngModel'],\r\n controller: 'PaginationController',\r\n controllerAs: 'pagination',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'template/pagination/pagination.html';\r\n },\r\n replace: true,\r\n link: function(scope, element, attrs, ctrls) {\r\n var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n if (!ngModelCtrl) {\r\n return; // do nothing if no ng-model\r\n }\r\n\r\n // Setup configuration parameters\r\n var maxSize = angular.isDefined(attrs.maxSize) ? scope.$parent.$eval(attrs.maxSize) : paginationConfig.maxSize,\r\n rotate = angular.isDefined(attrs.rotate) ? scope.$parent.$eval(attrs.rotate) : paginationConfig.rotate;\r\n scope.boundaryLinks = angular.isDefined(attrs.boundaryLinks) ? scope.$parent.$eval(attrs.boundaryLinks) : paginationConfig.boundaryLinks;\r\n scope.directionLinks = angular.isDefined(attrs.directionLinks) ? scope.$parent.$eval(attrs.directionLinks) : paginationConfig.directionLinks;\r\n\r\n paginationCtrl.init(ngModelCtrl, paginationConfig);\r\n\r\n if (attrs.maxSize) {\r\n scope.$parent.$watch($parse(attrs.maxSize), function(value) {\r\n maxSize = parseInt(value, 10);\r\n paginationCtrl.render();\r\n });\r\n }\r\n\r\n // Create page object used in template\r\n function makePage(number, text, isActive) {\r\n return {\r\n number: number,\r\n text: text,\r\n active: isActive\r\n };\r\n }\r\n\r\n function getPages(currentPage, totalPages) {\r\n var pages = [];\r\n\r\n // Default page limits\r\n var startPage = 1, endPage = totalPages;\r\n var isMaxSized = angular.isDefined(maxSize) && maxSize < totalPages;\r\n\r\n // recompute if maxSize\r\n if (isMaxSized) {\r\n if (rotate) {\r\n // Current page is displayed in the middle of the visible ones\r\n startPage = Math.max(currentPage - Math.floor(maxSize/2), 1);\r\n endPage = startPage + maxSize - 1;\r\n\r\n // Adjust if limit is exceeded\r\n if (endPage > totalPages) {\r\n endPage = totalPages;\r\n startPage = endPage - maxSize + 1;\r\n }\r\n } else {\r\n // Visible pages are paginated with maxSize\r\n startPage = ((Math.ceil(currentPage / maxSize) - 1) * maxSize) + 1;\r\n\r\n // Adjust last page if limit is exceeded\r\n endPage = Math.min(startPage + maxSize - 1, totalPages);\r\n }\r\n }\r\n\r\n // Add page number links\r\n for (var number = startPage; number <= endPage; number++) {\r\n var page = makePage(number, number, number === currentPage);\r\n pages.push(page);\r\n }\r\n\r\n // Add links to move between page sets\r\n if (isMaxSized && ! rotate) {\r\n if (startPage > 1) {\r\n var previousPageSet = makePage(startPage - 1, '...', false);\r\n pages.unshift(previousPageSet);\r\n }\r\n\r\n if (endPage < totalPages) {\r\n var nextPageSet = makePage(endPage + 1, '...', false);\r\n pages.push(nextPageSet);\r\n }\r\n }\r\n\r\n return pages;\r\n }\r\n\r\n var originalRender = paginationCtrl.render;\r\n paginationCtrl.render = function() {\r\n originalRender();\r\n if (scope.page > 0 && scope.page <= scope.totalPages) {\r\n scope.pages = getPages(scope.page, scope.totalPages);\r\n }\r\n };\r\n }\r\n };\r\n}])\r\n\r\n.constant('pagerConfig', {\r\n itemsPerPage: 10,\r\n previousText: '« Previous',\r\n nextText: 'Next »',\r\n align: true\r\n})\r\n\r\n.directive('pager', ['pagerConfig', function(pagerConfig) {\r\n return {\r\n restrict: 'EA',\r\n scope: {\r\n totalItems: '=',\r\n previousText: '@',\r\n nextText: '@',\r\n ngDisabled: '='\r\n },\r\n require: ['pager', '?ngModel'],\r\n controller: 'PaginationController',\r\n controllerAs: 'pagination',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'template/pagination/pager.html';\r\n },\r\n replace: true,\r\n link: function(scope, element, attrs, ctrls) {\r\n var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n if (!ngModelCtrl) {\r\n return; // do nothing if no ng-model\r\n }\r\n\r\n scope.align = angular.isDefined(attrs.align) ? scope.$parent.$eval(attrs.align) : pagerConfig.align;\r\n paginationCtrl.init(ngModelCtrl, pagerConfig);\r\n }\r\n };\r\n}]);\r\n\r\n/**\r\n * The following features are still outstanding: animation as a\r\n * function, placement as a function, inside, support for more triggers than\r\n * just mouse enter/leave, html tooltips, and selector delegation.\r\n */\r\nangular.module('ui.bootstrap.tooltip', ['ui.bootstrap.position', 'ui.bootstrap.bindHtml'])\r\n\r\n/**\r\n * The $tooltip service creates tooltip- and popover-like directives as well as\r\n * houses global options for them.\r\n */\r\n.provider('$tooltip', function() {\r\n // The default options tooltip and popover.\r\n var defaultOptions = {\r\n placement: 'top',\r\n animation: true,\r\n popupDelay: 0,\r\n useContentExp: false\r\n };\r\n\r\n // Default hide triggers for each show trigger\r\n var triggerMap = {\r\n 'mouseenter': 'mouseleave',\r\n 'click': 'click',\r\n 'focus': 'blur',\r\n 'none': ''\r\n };\r\n\r\n // The options specified to the provider globally.\r\n var globalOptions = {};\r\n\r\n /**\r\n * `options({})` allows global configuration of all tooltips in the\r\n * application.\r\n *\r\n * var app = angular.module( 'App', ['ui.bootstrap.tooltip'], function( $tooltipProvider ) {\r\n * // place tooltips left instead of top by default\r\n * $tooltipProvider.options( { placement: 'left' } );\r\n * });\r\n */\r\n\tthis.options = function(value) {\r\n\t\tangular.extend(globalOptions, value);\r\n\t};\r\n\r\n /**\r\n * This allows you to extend the set of trigger mappings available. E.g.:\r\n *\r\n * $tooltipProvider.setTriggers( 'openTrigger': 'closeTrigger' );\r\n */\r\n this.setTriggers = function setTriggers(triggers) {\r\n angular.extend(triggerMap, triggers);\r\n };\r\n\r\n /**\r\n * This is a helper function for translating camel-case to snake-case.\r\n */\r\n function snake_case(name) {\r\n var regexp = /[A-Z]/g;\r\n var separator = '-';\r\n return name.replace(regexp, function(letter, pos) {\r\n return (pos ? separator : '') + letter.toLowerCase();\r\n });\r\n }\r\n\r\n /**\r\n * Returns the actual instance of the $tooltip service.\r\n * TODO support multiple triggers\r\n */\r\n this.$get = ['$window', '$compile', '$timeout', '$document', '$position', '$interpolate', '$rootScope', '$parse', function($window, $compile, $timeout, $document, $position, $interpolate, $rootScope, $parse) {\r\n return function $tooltip(type, prefix, defaultTriggerShow, options) {\r\n options = angular.extend({}, defaultOptions, globalOptions, options);\r\n\r\n /**\r\n * Returns an object of show and hide triggers.\r\n *\r\n * If a trigger is supplied,\r\n * it is used to show the tooltip; otherwise, it will use the `trigger`\r\n * option passed to the `$tooltipProvider.options` method; else it will\r\n * default to the trigger supplied to this directive factory.\r\n *\r\n * The hide trigger is based on the show trigger. If the `trigger` option\r\n * was passed to the `$tooltipProvider.options` method, it will use the\r\n * mapped trigger from `triggerMap` or the passed trigger if the map is\r\n * undefined; otherwise, it uses the `triggerMap` value of the show\r\n * trigger; else it will just use the show trigger.\r\n */\r\n function getTriggers(trigger) {\r\n var show = (trigger || options.trigger || defaultTriggerShow).split(' ');\r\n var hide = show.map(function(trigger) {\r\n return triggerMap[trigger] || trigger;\r\n });\r\n return {\r\n show: show,\r\n hide: hide\r\n };\r\n }\r\n\r\n var directiveName = snake_case(type);\r\n\r\n var startSym = $interpolate.startSymbol();\r\n var endSym = $interpolate.endSymbol();\r\n var template =\r\n '
    '+\r\n '
    ';\r\n\r\n return {\r\n restrict: 'EA',\r\n compile: function(tElem, tAttrs) {\r\n var tooltipLinker = $compile( template );\r\n\r\n return function link(scope, element, attrs, tooltipCtrl) {\r\n var tooltip;\r\n var tooltipLinkedScope;\r\n var transitionTimeout;\r\n var popupTimeout;\r\n var positionTimeout;\r\n var appendToBody = angular.isDefined(options.appendToBody) ? options.appendToBody : false;\r\n var triggers = getTriggers(undefined);\r\n var hasEnableExp = angular.isDefined(attrs[prefix + 'Enable']);\r\n var ttScope = scope.$new(true);\r\n var repositionScheduled = false;\r\n var isOpenExp = angular.isDefined(attrs[prefix + 'IsOpen']) ? $parse(attrs[prefix + 'IsOpen']) : false;\r\n\r\n var positionTooltip = function() {\r\n if (!tooltip) { return; }\r\n\r\n if (!positionTimeout) {\r\n positionTimeout = $timeout(function() {\r\n // Reset the positioning and box size for correct width and height values.\r\n tooltip.css({ top: 0, left: 0, width: 'auto', height: 'auto' });\r\n\r\n var ttBox = $position.position(tooltip);\r\n var ttCss = $position.positionElements(element, tooltip, ttScope.placement, appendToBody);\r\n ttCss.top += 'px';\r\n ttCss.left += 'px';\r\n\r\n ttCss.width = ttBox.width + 'px';\r\n ttCss.height = ttBox.height + 'px';\r\n\r\n // Now set the calculated positioning and size.\r\n tooltip.css(ttCss);\r\n\r\n positionTimeout = null;\r\n\r\n }, 0, false);\r\n }\r\n };\r\n\r\n // Set up the correct scope to allow transclusion later\r\n ttScope.origScope = scope;\r\n\r\n // By default, the tooltip is not open.\r\n // TODO add ability to start tooltip opened\r\n ttScope.isOpen = false;\r\n\r\n function toggleTooltipBind() {\r\n if (!ttScope.isOpen) {\r\n showTooltipBind();\r\n } else {\r\n hideTooltipBind();\r\n }\r\n }\r\n\r\n // Show the tooltip with delay if specified, otherwise show it immediately\r\n function showTooltipBind() {\r\n if (hasEnableExp && !scope.$eval(attrs[prefix + 'Enable'])) {\r\n return;\r\n }\r\n\r\n prepareTooltip();\r\n\r\n if (ttScope.popupDelay) {\r\n // Do nothing if the tooltip was already scheduled to pop-up.\r\n // This happens if show is triggered multiple times before any hide is triggered.\r\n if (!popupTimeout) {\r\n popupTimeout = $timeout(show, ttScope.popupDelay, false);\r\n }\r\n } else {\r\n show();\r\n }\r\n }\r\n\r\n function hideTooltipBind () {\r\n hide();\r\n if (!$rootScope.$$phase) {\r\n $rootScope.$digest();\r\n }\r\n }\r\n\r\n // Show the tooltip popup element.\r\n function show() {\r\n popupTimeout = null;\r\n\r\n // If there is a pending remove transition, we must cancel it, lest the\r\n // tooltip be mysteriously removed.\r\n if (transitionTimeout) {\r\n $timeout.cancel(transitionTimeout);\r\n transitionTimeout = null;\r\n }\r\n\r\n // Don't show empty tooltips.\r\n if (!(options.useContentExp ? ttScope.contentExp() : ttScope.content)) {\r\n return angular.noop;\r\n }\r\n\r\n createTooltip();\r\n\r\n // And show the tooltip.\r\n ttScope.isOpen = true;\r\n if (isOpenExp) {\r\n isOpenExp.assign(ttScope.origScope, ttScope.isOpen);\r\n }\r\n\r\n if (!$rootScope.$$phase) {\r\n ttScope.$apply(); // digest required as $apply is not called\r\n }\r\n\r\n tooltip.css({ display: 'block' });\r\n\r\n positionTooltip();\r\n }\r\n\r\n // Hide the tooltip popup element.\r\n function hide() {\r\n // First things first: we don't show it anymore.\r\n ttScope.isOpen = false;\r\n if (isOpenExp) {\r\n isOpenExp.assign(ttScope.origScope, ttScope.isOpen);\r\n }\r\n\r\n //if tooltip is going to be shown after delay, we must cancel this\r\n $timeout.cancel(popupTimeout);\r\n popupTimeout = null;\r\n\r\n $timeout.cancel(positionTimeout);\r\n positionTimeout = null;\r\n\r\n // And now we remove it from the DOM. However, if we have animation, we\r\n // need to wait for it to expire beforehand.\r\n // FIXME: this is a placeholder for a port of the transitions library.\r\n if (ttScope.animation) {\r\n if (!transitionTimeout) {\r\n transitionTimeout = $timeout(removeTooltip, 500);\r\n }\r\n } else {\r\n removeTooltip();\r\n }\r\n }\r\n\r\n function createTooltip() {\r\n // There can only be one tooltip element per directive shown at once.\r\n if (tooltip) {\r\n removeTooltip();\r\n }\r\n tooltipLinkedScope = ttScope.$new();\r\n tooltip = tooltipLinker(tooltipLinkedScope, function(tooltip) {\r\n if (appendToBody) {\r\n $document.find('body').append(tooltip);\r\n } else {\r\n element.after(tooltip);\r\n }\r\n });\r\n\r\n if (options.useContentExp) {\r\n tooltipLinkedScope.$watch('contentExp()', function(val) {\r\n if (!val && ttScope.isOpen) {\r\n hide();\r\n }\r\n });\r\n\r\n tooltipLinkedScope.$watch(function() {\r\n if (!repositionScheduled) {\r\n repositionScheduled = true;\r\n tooltipLinkedScope.$$postDigest(function() {\r\n repositionScheduled = false;\r\n if (ttScope.isOpen) {\r\n positionTooltip();\r\n }\r\n });\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n function removeTooltip() {\r\n transitionTimeout = null;\r\n if (tooltip) {\r\n tooltip.remove();\r\n tooltip = null;\r\n }\r\n if (tooltipLinkedScope) {\r\n tooltipLinkedScope.$destroy();\r\n tooltipLinkedScope = null;\r\n }\r\n }\r\n\r\n function prepareTooltip() {\r\n prepPopupClass();\r\n prepPlacement();\r\n prepPopupDelay();\r\n }\r\n\r\n ttScope.contentExp = function() {\r\n return scope.$eval(attrs[type]);\r\n };\r\n\r\n /**\r\n * Observe the relevant attributes.\r\n */\r\n if (!options.useContentExp) {\r\n attrs.$observe(type, function(val) {\r\n ttScope.content = val;\r\n\r\n if (!val && ttScope.isOpen) {\r\n hide();\r\n } else {\r\n positionTooltip();\r\n }\r\n });\r\n }\r\n\r\n attrs.$observe('disabled', function(val) {\r\n if (popupTimeout && val) {\r\n $timeout.cancel(popupTimeout);\r\n popupTimeout = null;\r\n }\r\n\r\n if (val && ttScope.isOpen) {\r\n hide();\r\n }\r\n });\r\n\r\n attrs.$observe(prefix + 'Title', function(val) {\r\n ttScope.title = val;\r\n positionTooltip();\r\n });\r\n\r\n attrs.$observe(prefix + 'Placement', function() {\r\n if (ttScope.isOpen) {\r\n prepPlacement();\r\n positionTooltip();\r\n }\r\n });\r\n\r\n if (isOpenExp) {\r\n scope.$watch(isOpenExp, function(val) {\r\n if (val !== ttScope.isOpen) {\r\n toggleTooltipBind();\r\n }\r\n });\r\n }\r\n\r\n function prepPopupClass() {\r\n ttScope.popupClass = attrs[prefix + 'Class'];\r\n }\r\n\r\n function prepPlacement() {\r\n var val = attrs[prefix + 'Placement'];\r\n ttScope.placement = angular.isDefined(val) ? val : options.placement;\r\n }\r\n\r\n function prepPopupDelay() {\r\n var val = attrs[prefix + 'PopupDelay'];\r\n var delay = parseInt(val, 10);\r\n ttScope.popupDelay = !isNaN(delay) ? delay : options.popupDelay;\r\n }\r\n\r\n var unregisterTriggers = function() {\r\n triggers.show.forEach(function(trigger) {\r\n element.unbind(trigger, showTooltipBind);\r\n });\r\n triggers.hide.forEach(function(trigger) {\r\n element.unbind(trigger, hideTooltipBind);\r\n });\r\n };\r\n\r\n function prepTriggers() {\r\n var val = attrs[prefix + 'Trigger'];\r\n unregisterTriggers();\r\n\r\n triggers = getTriggers(val);\r\n\r\n if (triggers.show !== 'none') {\r\n triggers.show.forEach(function(trigger, idx) {\r\n // Using raw addEventListener due to jqLite/jQuery bug - #4060\r\n if (trigger === triggers.hide[idx]) {\r\n element[0].addEventListener(trigger, toggleTooltipBind);\r\n } else if (trigger) {\r\n element[0].addEventListener(trigger, showTooltipBind);\r\n element[0].addEventListener(triggers.hide[idx], hideTooltipBind);\r\n }\r\n });\r\n }\r\n }\r\n prepTriggers();\r\n\r\n var animation = scope.$eval(attrs[prefix + 'Animation']);\r\n ttScope.animation = angular.isDefined(animation) ? !!animation : options.animation;\r\n\r\n var appendToBodyVal = scope.$eval(attrs[prefix + 'AppendToBody']);\r\n appendToBody = angular.isDefined(appendToBodyVal) ? appendToBodyVal : appendToBody;\r\n\r\n // if a tooltip is attached to we need to remove it on\r\n // location change as its parent scope will probably not be destroyed\r\n // by the change.\r\n if (appendToBody) {\r\n scope.$on('$locationChangeSuccess', function closeTooltipOnLocationChangeSuccess() {\r\n if (ttScope.isOpen) {\r\n hide();\r\n }\r\n });\r\n }\r\n\r\n // Make sure tooltip is destroyed and removed.\r\n scope.$on('$destroy', function onDestroyTooltip() {\r\n $timeout.cancel(transitionTimeout);\r\n $timeout.cancel(popupTimeout);\r\n $timeout.cancel(positionTimeout);\r\n unregisterTriggers();\r\n removeTooltip();\r\n ttScope = null;\r\n });\r\n };\r\n }\r\n };\r\n };\r\n }];\r\n})\r\n\r\n// This is mostly ngInclude code but with a custom scope\r\n.directive('tooltipTemplateTransclude', [\r\n '$animate', '$sce', '$compile', '$templateRequest',\r\nfunction ($animate , $sce , $compile , $templateRequest) {\r\n return {\r\n link: function(scope, elem, attrs) {\r\n var origScope = scope.$eval(attrs.tooltipTemplateTranscludeScope);\r\n\r\n var changeCounter = 0,\r\n currentScope,\r\n previousElement,\r\n currentElement;\r\n\r\n var cleanupLastIncludeContent = function() {\r\n if (previousElement) {\r\n previousElement.remove();\r\n previousElement = null;\r\n }\r\n if (currentScope) {\r\n currentScope.$destroy();\r\n currentScope = null;\r\n }\r\n if (currentElement) {\r\n $animate.leave(currentElement).then(function() {\r\n previousElement = null;\r\n });\r\n previousElement = currentElement;\r\n currentElement = null;\r\n }\r\n };\r\n\r\n scope.$watch($sce.parseAsResourceUrl(attrs.tooltipTemplateTransclude), function(src) {\r\n var thisChangeId = ++changeCounter;\r\n\r\n if (src) {\r\n //set the 2nd param to true to ignore the template request error so that the inner\r\n //contents and scope can be cleaned up.\r\n $templateRequest(src, true).then(function(response) {\r\n if (thisChangeId !== changeCounter) { return; }\r\n var newScope = origScope.$new();\r\n var template = response;\r\n\r\n var clone = $compile(template)(newScope, function(clone) {\r\n cleanupLastIncludeContent();\r\n $animate.enter(clone, elem);\r\n });\r\n\r\n currentScope = newScope;\r\n currentElement = clone;\r\n\r\n currentScope.$emit('$includeContentLoaded', src);\r\n }, function() {\r\n if (thisChangeId === changeCounter) {\r\n cleanupLastIncludeContent();\r\n scope.$emit('$includeContentError', src);\r\n }\r\n });\r\n scope.$emit('$includeContentRequested', src);\r\n } else {\r\n cleanupLastIncludeContent();\r\n }\r\n });\r\n\r\n scope.$on('$destroy', cleanupLastIncludeContent);\r\n }\r\n };\r\n}])\r\n\r\n/**\r\n * Note that it's intentional that these classes are *not* applied through $animate.\r\n * They must not be animated as they're expected to be present on the tooltip on\r\n * initialization.\r\n */\r\n.directive('tooltipClasses', function() {\r\n return {\r\n restrict: 'A',\r\n link: function(scope, element, attrs) {\r\n if (scope.placement) {\r\n element.addClass(scope.placement);\r\n }\r\n if (scope.popupClass) {\r\n element.addClass(scope.popupClass);\r\n }\r\n if (scope.animation()) {\r\n element.addClass(attrs.tooltipAnimationClass);\r\n }\r\n }\r\n };\r\n})\r\n\r\n.directive('tooltipPopup', function() {\r\n return {\r\n restrict: 'EA',\r\n replace: true,\r\n scope: { content: '@', placement: '@', popupClass: '@', animation: '&', isOpen: '&' },\r\n templateUrl: 'template/tooltip/tooltip-popup.html'\r\n };\r\n})\r\n\r\n.directive('tooltip', [ '$tooltip', function($tooltip) {\r\n return $tooltip('tooltip', 'tooltip', 'mouseenter');\r\n}])\r\n\r\n.directive('tooltipTemplatePopup', function() {\r\n return {\r\n restrict: 'EA',\r\n replace: true,\r\n scope: { contentExp: '&', placement: '@', popupClass: '@', animation: '&', isOpen: '&',\r\n originScope: '&' },\r\n templateUrl: 'template/tooltip/tooltip-template-popup.html'\r\n };\r\n})\r\n\r\n.directive('tooltipTemplate', ['$tooltip', function($tooltip) {\r\n return $tooltip('tooltipTemplate', 'tooltip', 'mouseenter', {\r\n useContentExp: true\r\n });\r\n}])\r\n\r\n.directive('tooltipHtmlPopup', function() {\r\n return {\r\n restrict: 'EA',\r\n replace: true,\r\n scope: { contentExp: '&', placement: '@', popupClass: '@', animation: '&', isOpen: '&' },\r\n templateUrl: 'template/tooltip/tooltip-html-popup.html'\r\n };\r\n})\r\n\r\n.directive('tooltipHtml', ['$tooltip', function($tooltip) {\r\n return $tooltip('tooltipHtml', 'tooltip', 'mouseenter', {\r\n useContentExp: true\r\n });\r\n}])\r\n\r\n/*\r\nDeprecated\r\n*/\r\n.directive('tooltipHtmlUnsafePopup', function() {\r\n return {\r\n restrict: 'EA',\r\n replace: true,\r\n scope: { content: '@', placement: '@', popupClass: '@', animation: '&', isOpen: '&' },\r\n templateUrl: 'template/tooltip/tooltip-html-unsafe-popup.html'\r\n };\r\n})\r\n\r\n.value('tooltipHtmlUnsafeSuppressDeprecated', false)\r\n.directive('tooltipHtmlUnsafe', [\r\n '$tooltip', 'tooltipHtmlUnsafeSuppressDeprecated', '$log',\r\nfunction($tooltip , tooltipHtmlUnsafeSuppressDeprecated , $log) {\r\n if (!tooltipHtmlUnsafeSuppressDeprecated) {\r\n $log.warn('tooltip-html-unsafe is now deprecated. Use tooltip-html or tooltip-template instead.');\r\n }\r\n return $tooltip('tooltipHtmlUnsafe', 'tooltip', 'mouseenter');\r\n}]);\r\n\r\n/**\r\n * The following features are still outstanding: popup delay, animation as a\r\n * function, placement as a function, inside, support for more triggers than\r\n * just mouse enter/leave, and selector delegatation.\r\n */\r\nangular.module( 'ui.bootstrap.popover', ['ui.bootstrap.tooltip'])\r\n\r\n.directive('popoverTemplatePopup', function() {\r\n return {\r\n restrict: 'EA',\r\n replace: true,\r\n scope: { title: '@', contentExp: '&', placement: '@', popupClass: '@', animation: '&', isOpen: '&',\r\n originScope: '&' },\r\n templateUrl: 'template/popover/popover-template.html'\r\n };\r\n})\r\n\r\n.directive('popoverTemplate', ['$tooltip', function($tooltip) {\r\n return $tooltip('popoverTemplate', 'popover', 'click', {\r\n useContentExp: true\r\n });\r\n}])\r\n\r\n.directive('popoverHtmlPopup', function() {\r\n return {\r\n restrict: 'EA',\r\n replace: true,\r\n scope: { contentExp: '&', title: '@', placement: '@', popupClass: '@', animation: '&', isOpen: '&' },\r\n templateUrl: 'template/popover/popover-html.html'\r\n };\r\n})\r\n\r\n.directive('popoverHtml', ['$tooltip', function($tooltip) {\r\n return $tooltip( 'popoverHtml', 'popover', 'click', {\r\n useContentExp: true\r\n });\r\n}])\r\n\r\n.directive('popoverPopup', function() {\r\n return {\r\n restrict: 'EA',\r\n replace: true,\r\n scope: { title: '@', content: '@', placement: '@', popupClass: '@', animation: '&', isOpen: '&' },\r\n templateUrl: 'template/popover/popover.html'\r\n };\r\n})\r\n\r\n.directive('popover', ['$tooltip', function($tooltip) {\r\n return $tooltip( 'popover', 'popover', 'click' );\r\n}]);\r\n\r\nangular.module('ui.bootstrap.progressbar', [])\r\n\r\n.constant('progressConfig', {\r\n animate: true,\r\n max: 100\r\n})\r\n\r\n.value('$progressSuppressWarning', false)\r\n\r\n.controller('ProgressController', ['$scope', '$attrs', 'progressConfig', function($scope, $attrs, progressConfig) {\r\n var self = this,\r\n animate = angular.isDefined($attrs.animate) ? $scope.$parent.$eval($attrs.animate) : progressConfig.animate;\r\n\r\n this.bars = [];\r\n $scope.max = angular.isDefined($scope.max) ? $scope.max : progressConfig.max;\r\n\r\n this.addBar = function(bar, element) {\r\n if (!animate) {\r\n element.css({'transition': 'none'});\r\n }\r\n\r\n this.bars.push(bar);\r\n\r\n bar.max = $scope.max;\r\n\r\n bar.$watch('value', function(value) {\r\n bar.recalculatePercentage();\r\n });\r\n\r\n bar.recalculatePercentage = function() {\r\n bar.percent = +(100 * bar.value / bar.max).toFixed(2);\r\n\r\n var totalPercentage = self.bars.reduce(function(total, bar) {\r\n return total + bar.percent;\r\n }, 0);\r\n\r\n if (totalPercentage > 100) {\r\n bar.percent -= totalPercentage - 100;\r\n }\r\n };\r\n\r\n bar.$on('$destroy', function() {\r\n element = null;\r\n self.removeBar(bar);\r\n });\r\n };\r\n\r\n this.removeBar = function(bar) {\r\n this.bars.splice(this.bars.indexOf(bar), 1);\r\n };\r\n\r\n $scope.$watch('max', function(max) {\r\n self.bars.forEach(function(bar) {\r\n bar.max = $scope.max;\r\n bar.recalculatePercentage();\r\n });\r\n });\r\n}])\r\n\r\n.directive('uibProgress', function() {\r\n return {\r\n restrict: 'EA',\r\n replace: true,\r\n transclude: true,\r\n controller: 'ProgressController',\r\n require: 'uibProgress',\r\n scope: {\r\n max: '=?'\r\n },\r\n templateUrl: 'template/progressbar/progress.html'\r\n };\r\n})\r\n\r\n.directive('progress', ['$log', '$progressSuppressWarning', function($log, $progressSuppressWarning) {\r\n return {\r\n restrict: 'EA',\r\n replace: true,\r\n transclude: true,\r\n controller: 'ProgressController',\r\n require: 'progress',\r\n scope: {\r\n max: '=?'\r\n },\r\n templateUrl: 'template/progressbar/progress.html',\r\n link: function() {\r\n if ($progressSuppressWarning) {\r\n $log.warn('progress is now deprecated. Use uib-progress instead');\r\n }\r\n }\r\n };\r\n}])\r\n\r\n.directive('uibBar', function() {\r\n return {\r\n restrict: 'EA',\r\n replace: true,\r\n transclude: true,\r\n require: '^uibProgress',\r\n scope: {\r\n value: '=',\r\n type: '@'\r\n },\r\n templateUrl: 'template/progressbar/bar.html',\r\n link: function(scope, element, attrs, progressCtrl) {\r\n progressCtrl.addBar(scope, element);\r\n }\r\n };\r\n})\r\n\r\n.directive('bar', ['$log', '$progressSuppressWarning', function($log, $progressSuppressWarning) {\r\n return {\r\n restrict: 'EA',\r\n replace: true,\r\n transclude: true,\r\n require: '^progress',\r\n scope: {\r\n value: '=',\r\n type: '@'\r\n },\r\n templateUrl: 'template/progressbar/bar.html',\r\n link: function(scope, element, attrs, progressCtrl) {\r\n if ($progressSuppressWarning) {\r\n $log.warn('bar is now deprecated. Use uib-bar instead');\r\n }\r\n progressCtrl.addBar(scope, element);\r\n }\r\n };\r\n}])\r\n\r\n.directive('progressbar', function() {\r\n return {\r\n restrict: 'EA',\r\n replace: true,\r\n transclude: true,\r\n controller: 'ProgressController',\r\n scope: {\r\n value: '=',\r\n max: '=?',\r\n type: '@'\r\n },\r\n templateUrl: 'template/progressbar/progressbar.html',\r\n link: function(scope, element, attrs, progressCtrl) {\r\n progressCtrl.addBar(scope, angular.element(element.children()[0]));\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.rating', [])\r\n\r\n.constant('ratingConfig', {\r\n max: 5,\r\n stateOn: null,\r\n stateOff: null,\r\n titles : ['one', 'two', 'three', 'four', 'five']\r\n})\r\n\r\n.controller('RatingController', ['$scope', '$attrs', 'ratingConfig', function($scope, $attrs, ratingConfig) {\r\n var ngModelCtrl = { $setViewValue: angular.noop };\r\n\r\n this.init = function(ngModelCtrl_) {\r\n ngModelCtrl = ngModelCtrl_;\r\n ngModelCtrl.$render = this.render;\r\n\r\n ngModelCtrl.$formatters.push(function(value) {\r\n if (angular.isNumber(value) && value << 0 !== value) {\r\n value = Math.round(value);\r\n }\r\n return value;\r\n });\r\n\r\n this.stateOn = angular.isDefined($attrs.stateOn) ? $scope.$parent.$eval($attrs.stateOn) : ratingConfig.stateOn;\r\n this.stateOff = angular.isDefined($attrs.stateOff) ? $scope.$parent.$eval($attrs.stateOff) : ratingConfig.stateOff;\r\n var tmpTitles = angular.isDefined($attrs.titles) ? $scope.$parent.$eval($attrs.titles) : ratingConfig.titles ; \r\n this.titles = angular.isArray(tmpTitles) && tmpTitles.length > 0 ?\r\n tmpTitles : ratingConfig.titles;\r\n \r\n var ratingStates = angular.isDefined($attrs.ratingStates) ?\r\n $scope.$parent.$eval($attrs.ratingStates) :\r\n new Array(angular.isDefined($attrs.max) ? $scope.$parent.$eval($attrs.max) : ratingConfig.max);\r\n $scope.range = this.buildTemplateObjects(ratingStates);\r\n };\r\n\r\n this.buildTemplateObjects = function(states) {\r\n for (var i = 0, n = states.length; i < n; i++) {\r\n states[i] = angular.extend({ index: i }, { stateOn: this.stateOn, stateOff: this.stateOff, title: this.getTitle(i) }, states[i]);\r\n }\r\n return states;\r\n };\r\n \r\n this.getTitle = function(index) {\r\n if (index >= this.titles.length) {\r\n return index + 1;\r\n } else {\r\n return this.titles[index];\r\n }\r\n };\r\n \r\n $scope.rate = function(value) {\r\n if (!$scope.readonly && value >= 0 && value <= $scope.range.length) {\r\n ngModelCtrl.$setViewValue(ngModelCtrl.$viewValue === value ? 0 : value);\r\n ngModelCtrl.$render();\r\n }\r\n };\r\n\r\n $scope.enter = function(value) {\r\n if (!$scope.readonly) {\r\n $scope.value = value;\r\n }\r\n $scope.onHover({value: value});\r\n };\r\n\r\n $scope.reset = function() {\r\n $scope.value = ngModelCtrl.$viewValue;\r\n $scope.onLeave();\r\n };\r\n\r\n $scope.onKeydown = function(evt) {\r\n if (/(37|38|39|40)/.test(evt.which)) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $scope.rate($scope.value + (evt.which === 38 || evt.which === 39 ? 1 : -1));\r\n }\r\n };\r\n\r\n this.render = function() {\r\n $scope.value = ngModelCtrl.$viewValue;\r\n };\r\n}])\r\n\r\n.directive('rating', function() {\r\n return {\r\n restrict: 'EA',\r\n require: ['rating', 'ngModel'],\r\n scope: {\r\n readonly: '=?',\r\n onHover: '&',\r\n onLeave: '&'\r\n },\r\n controller: 'RatingController',\r\n templateUrl: 'template/rating/rating.html',\r\n replace: true,\r\n link: function(scope, element, attrs, ctrls) {\r\n var ratingCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n ratingCtrl.init( ngModelCtrl );\r\n }\r\n };\r\n});\r\n\r\n\r\n/**\r\n * @ngdoc overview\r\n * @name ui.bootstrap.tabs\r\n *\r\n * @description\r\n * AngularJS version of the tabs directive.\r\n */\r\n\r\nangular.module('ui.bootstrap.tabs', [])\r\n\r\n.controller('TabsetController', ['$scope', function TabsetCtrl($scope) {\r\n var ctrl = this,\r\n tabs = ctrl.tabs = $scope.tabs = [];\r\n\r\n ctrl.select = function(selectedTab) {\r\n angular.forEach(tabs, function(tab) {\r\n if (tab.active && tab !== selectedTab) {\r\n tab.active = false;\r\n tab.onDeselect();\r\n selectedTab.selectCalled = false;\r\n }\r\n });\r\n selectedTab.active = true;\r\n // only call select if it has not already been called\r\n if (!selectedTab.selectCalled) {\r\n selectedTab.onSelect();\r\n selectedTab.selectCalled = true;\r\n }\r\n };\r\n\r\n ctrl.addTab = function addTab(tab) {\r\n tabs.push(tab);\r\n // we can't run the select function on the first tab\r\n // since that would select it twice\r\n if (tabs.length === 1 && tab.active !== false) {\r\n tab.active = true;\r\n } else if (tab.active) {\r\n ctrl.select(tab);\r\n } else {\r\n tab.active = false;\r\n }\r\n };\r\n\r\n ctrl.removeTab = function removeTab(tab) {\r\n var index = tabs.indexOf(tab);\r\n //Select a new tab if the tab to be removed is selected and not destroyed\r\n if (tab.active && tabs.length > 1 && !destroyed) {\r\n //If this is the last tab, select the previous tab. else, the next tab.\r\n var newActiveIndex = index == tabs.length - 1 ? index - 1 : index + 1;\r\n ctrl.select(tabs[newActiveIndex]);\r\n }\r\n tabs.splice(index, 1);\r\n };\r\n\r\n var destroyed;\r\n $scope.$on('$destroy', function() {\r\n destroyed = true;\r\n });\r\n}])\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name ui.bootstrap.tabs.directive:tabset\r\n * @restrict EA\r\n *\r\n * @description\r\n * Tabset is the outer container for the tabs directive\r\n *\r\n * @param {boolean=} vertical Whether or not to use vertical styling for the tabs.\r\n * @param {boolean=} justified Whether or not to use justified styling for the tabs.\r\n *\r\n * @example\r\n\r\n \r\n \r\n First Content!\r\n Second Content!\r\n \r\n
    \r\n \r\n First Vertical Content!\r\n Second Vertical Content!\r\n \r\n \r\n First Justified Content!\r\n Second Justified Content!\r\n \r\n
    \r\n
    \r\n */\r\n.directive('tabset', function() {\r\n return {\r\n restrict: 'EA',\r\n transclude: true,\r\n replace: true,\r\n scope: {\r\n type: '@'\r\n },\r\n controller: 'TabsetController',\r\n templateUrl: 'template/tabs/tabset.html',\r\n link: function(scope, element, attrs) {\r\n scope.vertical = angular.isDefined(attrs.vertical) ? scope.$parent.$eval(attrs.vertical) : false;\r\n scope.justified = angular.isDefined(attrs.justified) ? scope.$parent.$eval(attrs.justified) : false;\r\n }\r\n };\r\n})\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name ui.bootstrap.tabs.directive:tab\r\n * @restrict EA\r\n *\r\n * @param {string=} heading The visible heading, or title, of the tab. Set HTML headings with {@link ui.bootstrap.tabs.directive:tabHeading tabHeading}.\r\n * @param {string=} select An expression to evaluate when the tab is selected.\r\n * @param {boolean=} active A binding, telling whether or not this tab is selected.\r\n * @param {boolean=} disabled A binding, telling whether or not this tab is disabled.\r\n *\r\n * @description\r\n * Creates a tab with a heading and content. Must be placed within a {@link ui.bootstrap.tabs.directive:tabset tabset}.\r\n *\r\n * @example\r\n\r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n First Tab\r\n \r\n Alert me!\r\n Second Tab, with alert callback and html heading!\r\n \r\n \r\n {{item.content}}\r\n \r\n \r\n
    \r\n
    \r\n \r\n function TabsDemoCtrl($scope) {\r\n $scope.items = [\r\n { title:\"Dynamic Title 1\", content:\"Dynamic Item 0\" },\r\n { title:\"Dynamic Title 2\", content:\"Dynamic Item 1\", disabled: true }\r\n ];\r\n\r\n $scope.alertMe = function() {\r\n setTimeout(function() {\r\n alert(\"You've selected the alert tab!\");\r\n });\r\n };\r\n };\r\n \r\n
    \r\n */\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name ui.bootstrap.tabs.directive:tabHeading\r\n * @restrict EA\r\n *\r\n * @description\r\n * Creates an HTML heading for a {@link ui.bootstrap.tabs.directive:tab tab}. Must be placed as a child of a tab element.\r\n *\r\n * @example\r\n\r\n \r\n \r\n \r\n HTML in my titles?!\r\n And some content, too!\r\n \r\n \r\n Icon heading?!?\r\n That's right.\r\n \r\n \r\n \r\n\r\n */\r\n.directive('tab', ['$parse', '$log', function($parse, $log) {\r\n return {\r\n require: '^tabset',\r\n restrict: 'EA',\r\n replace: true,\r\n templateUrl: 'template/tabs/tab.html',\r\n transclude: true,\r\n scope: {\r\n active: '=?',\r\n heading: '@',\r\n onSelect: '&select', //This callback is called in contentHeadingTransclude\r\n //once it inserts the tab's content into the dom\r\n onDeselect: '&deselect'\r\n },\r\n controller: function() {\r\n //Empty controller so other directives can require being 'under' a tab\r\n },\r\n link: function(scope, elm, attrs, tabsetCtrl, transclude) {\r\n scope.$watch('active', function(active) {\r\n if (active) {\r\n tabsetCtrl.select(scope);\r\n }\r\n });\r\n\r\n scope.disabled = false;\r\n if (attrs.disable) {\r\n scope.$parent.$watch($parse(attrs.disable), function(value) {\r\n scope.disabled = !! value;\r\n });\r\n }\r\n\r\n // Deprecation support of \"disabled\" parameter\r\n // fix(tab): IE9 disabled attr renders grey text on enabled tab #2677\r\n // This code is duplicated from the lines above to make it easy to remove once\r\n // the feature has been completely deprecated\r\n if (attrs.disabled) {\r\n $log.warn('Use of \"disabled\" attribute has been deprecated, please use \"disable\"');\r\n scope.$parent.$watch($parse(attrs.disabled), function(value) {\r\n scope.disabled = !! value;\r\n });\r\n }\r\n\r\n scope.select = function() {\r\n if (!scope.disabled) {\r\n scope.active = true;\r\n }\r\n };\r\n\r\n tabsetCtrl.addTab(scope);\r\n scope.$on('$destroy', function() {\r\n tabsetCtrl.removeTab(scope);\r\n });\r\n\r\n //We need to transclude later, once the content container is ready.\r\n //when this link happens, we're inside a tab heading.\r\n scope.$transcludeFn = transclude;\r\n }\r\n };\r\n}])\r\n\r\n.directive('tabHeadingTransclude', function() {\r\n return {\r\n restrict: 'A',\r\n require: '^tab',\r\n link: function(scope, elm, attrs, tabCtrl) {\r\n scope.$watch('headingElement', function updateHeadingElement(heading) {\r\n if (heading) {\r\n elm.html('');\r\n elm.append(heading);\r\n }\r\n });\r\n }\r\n };\r\n})\r\n\r\n.directive('tabContentTransclude', function() {\r\n return {\r\n restrict: 'A',\r\n require: '^tabset',\r\n link: function(scope, elm, attrs) {\r\n var tab = scope.$eval(attrs.tabContentTransclude);\r\n\r\n //Now our tab is ready to be transcluded: both the tab heading area\r\n //and the tab content area are loaded. Transclude 'em both.\r\n tab.$transcludeFn(tab.$parent, function(contents) {\r\n angular.forEach(contents, function(node) {\r\n if (isTabHeading(node)) {\r\n //Let tabHeadingTransclude know.\r\n tab.headingElement = node;\r\n } else {\r\n elm.append(node);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n function isTabHeading(node) {\r\n return node.tagName && (\r\n node.hasAttribute('tab-heading') ||\r\n node.hasAttribute('data-tab-heading') ||\r\n node.hasAttribute('x-tab-heading') ||\r\n node.tagName.toLowerCase() === 'tab-heading' ||\r\n node.tagName.toLowerCase() === 'data-tab-heading' ||\r\n node.tagName.toLowerCase() === 'x-tab-heading'\r\n );\r\n }\r\n});\r\n\r\nangular.module('ui.bootstrap.timepicker', [])\r\n\r\n.constant('timepickerConfig', {\r\n hourStep: 1,\r\n minuteStep: 1,\r\n showMeridian: true,\r\n meridians: null,\r\n readonlyInput: false,\r\n mousewheel: true,\r\n arrowkeys: true,\r\n showSpinners: true\r\n})\r\n\r\n.controller('TimepickerController', ['$scope', '$attrs', '$parse', '$log', '$locale', 'timepickerConfig', function($scope, $attrs, $parse, $log, $locale, timepickerConfig) {\r\n var selected = new Date(),\r\n ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl\r\n meridians = angular.isDefined($attrs.meridians) ? $scope.$parent.$eval($attrs.meridians) : timepickerConfig.meridians || $locale.DATETIME_FORMATS.AMPMS;\r\n\r\n this.init = function(ngModelCtrl_, inputs) {\r\n ngModelCtrl = ngModelCtrl_;\r\n ngModelCtrl.$render = this.render;\r\n\r\n ngModelCtrl.$formatters.unshift(function(modelValue) {\r\n return modelValue ? new Date(modelValue) : null;\r\n });\r\n\r\n var hoursInputEl = inputs.eq(0),\r\n minutesInputEl = inputs.eq(1);\r\n\r\n var mousewheel = angular.isDefined($attrs.mousewheel) ? $scope.$parent.$eval($attrs.mousewheel) : timepickerConfig.mousewheel;\r\n if (mousewheel) {\r\n this.setupMousewheelEvents(hoursInputEl, minutesInputEl);\r\n }\r\n\r\n var arrowkeys = angular.isDefined($attrs.arrowkeys) ? $scope.$parent.$eval($attrs.arrowkeys) : timepickerConfig.arrowkeys;\r\n if (arrowkeys) {\r\n this.setupArrowkeyEvents(hoursInputEl, minutesInputEl);\r\n }\r\n\r\n $scope.readonlyInput = angular.isDefined($attrs.readonlyInput) ? $scope.$parent.$eval($attrs.readonlyInput) : timepickerConfig.readonlyInput;\r\n this.setupInputEvents(hoursInputEl, minutesInputEl);\r\n };\r\n\r\n var hourStep = timepickerConfig.hourStep;\r\n if ($attrs.hourStep) {\r\n $scope.$parent.$watch($parse($attrs.hourStep), function(value) {\r\n hourStep = parseInt(value, 10);\r\n });\r\n }\r\n\r\n var minuteStep = timepickerConfig.minuteStep;\r\n if ($attrs.minuteStep) {\r\n $scope.$parent.$watch($parse($attrs.minuteStep), function(value) {\r\n minuteStep = parseInt(value, 10);\r\n });\r\n }\r\n\r\n var min;\r\n $scope.$parent.$watch($parse($attrs.min), function(value) {\r\n var dt = new Date(value);\r\n min = isNaN(dt) ? undefined : dt;\r\n });\r\n\r\n var max;\r\n $scope.$parent.$watch($parse($attrs.max), function(value) {\r\n var dt = new Date(value);\r\n max = isNaN(dt) ? undefined : dt;\r\n });\r\n\r\n $scope.noIncrementHours = function() {\r\n var incrementedSelected = addMinutes(selected, hourStep * 60);\r\n return incrementedSelected > max ||\r\n (incrementedSelected < selected && incrementedSelected < min);\r\n };\r\n\r\n $scope.noDecrementHours = function() {\r\n var decrementedSelected = addMinutes(selected, -hourStep * 60);\r\n return decrementedSelected < min ||\r\n (decrementedSelected > selected && decrementedSelected > max);\r\n };\r\n\r\n $scope.noIncrementMinutes = function() {\r\n var incrementedSelected = addMinutes(selected, minuteStep);\r\n return incrementedSelected > max ||\r\n (incrementedSelected < selected && incrementedSelected < min);\r\n };\r\n\r\n $scope.noDecrementMinutes = function() {\r\n var decrementedSelected = addMinutes(selected, -minuteStep);\r\n return decrementedSelected < min ||\r\n (decrementedSelected > selected && decrementedSelected > max);\r\n };\r\n\r\n $scope.noToggleMeridian = function() {\r\n if (selected.getHours() < 13) {\r\n return addMinutes(selected, 12 * 60) > max;\r\n } else {\r\n return addMinutes(selected, -12 * 60) < min;\r\n }\r\n };\r\n\r\n // 12H / 24H mode\r\n $scope.showMeridian = timepickerConfig.showMeridian;\r\n if ($attrs.showMeridian) {\r\n $scope.$parent.$watch($parse($attrs.showMeridian), function(value) {\r\n $scope.showMeridian = !!value;\r\n\r\n if (ngModelCtrl.$error.time) {\r\n // Evaluate from template\r\n var hours = getHoursFromTemplate(), minutes = getMinutesFromTemplate();\r\n if (angular.isDefined(hours) && angular.isDefined(minutes)) {\r\n selected.setHours(hours);\r\n refresh();\r\n }\r\n } else {\r\n updateTemplate();\r\n }\r\n });\r\n }\r\n\r\n // Get $scope.hours in 24H mode if valid\r\n function getHoursFromTemplate() {\r\n var hours = parseInt($scope.hours, 10);\r\n var valid = $scope.showMeridian ? (hours > 0 && hours < 13) : (hours >= 0 && hours < 24);\r\n if (!valid) {\r\n return undefined;\r\n }\r\n\r\n if ($scope.showMeridian) {\r\n if (hours === 12) {\r\n hours = 0;\r\n }\r\n if ($scope.meridian === meridians[1]) {\r\n hours = hours + 12;\r\n }\r\n }\r\n return hours;\r\n }\r\n\r\n function getMinutesFromTemplate() {\r\n var minutes = parseInt($scope.minutes, 10);\r\n return (minutes >= 0 && minutes < 60) ? minutes : undefined;\r\n }\r\n\r\n function pad(value) {\r\n return (angular.isDefined(value) && value.toString().length < 2) ? '0' + value : value.toString();\r\n }\r\n\r\n // Respond on mousewheel spin\r\n this.setupMousewheelEvents = function(hoursInputEl, minutesInputEl) {\r\n var isScrollingUp = function(e) {\r\n if (e.originalEvent) {\r\n e = e.originalEvent;\r\n }\r\n //pick correct delta variable depending on event\r\n var delta = (e.wheelDelta) ? e.wheelDelta : -e.deltaY;\r\n return (e.detail || delta > 0);\r\n };\r\n\r\n hoursInputEl.bind('mousewheel wheel', function(e) {\r\n $scope.$apply(isScrollingUp(e) ? $scope.incrementHours() : $scope.decrementHours());\r\n e.preventDefault();\r\n });\r\n\r\n minutesInputEl.bind('mousewheel wheel', function(e) {\r\n $scope.$apply(isScrollingUp(e) ? $scope.incrementMinutes() : $scope.decrementMinutes());\r\n e.preventDefault();\r\n });\r\n\r\n };\r\n\r\n // Respond on up/down arrowkeys\r\n this.setupArrowkeyEvents = function(hoursInputEl, minutesInputEl) {\r\n hoursInputEl.bind('keydown', function(e) {\r\n if (e.which === 38) { // up\r\n e.preventDefault();\r\n $scope.incrementHours();\r\n $scope.$apply();\r\n } else if (e.which === 40) { // down\r\n e.preventDefault();\r\n $scope.decrementHours();\r\n $scope.$apply();\r\n }\r\n });\r\n\r\n minutesInputEl.bind('keydown', function(e) {\r\n if (e.which === 38) { // up\r\n e.preventDefault();\r\n $scope.incrementMinutes();\r\n $scope.$apply();\r\n } else if (e.which === 40) { // down\r\n e.preventDefault();\r\n $scope.decrementMinutes();\r\n $scope.$apply();\r\n }\r\n });\r\n };\r\n\r\n this.setupInputEvents = function(hoursInputEl, minutesInputEl) {\r\n if ($scope.readonlyInput) {\r\n $scope.updateHours = angular.noop;\r\n $scope.updateMinutes = angular.noop;\r\n return;\r\n }\r\n\r\n var invalidate = function(invalidHours, invalidMinutes) {\r\n ngModelCtrl.$setViewValue(null);\r\n ngModelCtrl.$setValidity('time', false);\r\n if (angular.isDefined(invalidHours)) {\r\n $scope.invalidHours = invalidHours;\r\n }\r\n if (angular.isDefined(invalidMinutes)) {\r\n $scope.invalidMinutes = invalidMinutes;\r\n }\r\n };\r\n\r\n $scope.updateHours = function() {\r\n var hours = getHoursFromTemplate(),\r\n minutes = getMinutesFromTemplate();\r\n\r\n if (angular.isDefined(hours) && angular.isDefined(minutes)) {\r\n selected.setHours(hours);\r\n if (selected < min || selected > max) {\r\n invalidate(true);\r\n } else {\r\n refresh('h');\r\n }\r\n } else {\r\n invalidate(true);\r\n }\r\n };\r\n\r\n hoursInputEl.bind('blur', function(e) {\r\n if (!$scope.invalidHours && $scope.hours < 10) {\r\n $scope.$apply(function() {\r\n $scope.hours = pad($scope.hours);\r\n });\r\n }\r\n });\r\n\r\n $scope.updateMinutes = function() {\r\n var minutes = getMinutesFromTemplate(),\r\n hours = getHoursFromTemplate();\r\n\r\n if (angular.isDefined(minutes) && angular.isDefined(hours)) {\r\n selected.setMinutes(minutes);\r\n if (selected < min || selected > max) {\r\n invalidate(undefined, true);\r\n } else {\r\n refresh('m');\r\n }\r\n } else {\r\n invalidate(undefined, true);\r\n }\r\n };\r\n\r\n minutesInputEl.bind('blur', function(e) {\r\n if (!$scope.invalidMinutes && $scope.minutes < 10) {\r\n $scope.$apply(function() {\r\n $scope.minutes = pad($scope.minutes);\r\n });\r\n }\r\n });\r\n\r\n };\r\n\r\n this.render = function() {\r\n var date = ngModelCtrl.$viewValue;\r\n\r\n if (isNaN(date)) {\r\n ngModelCtrl.$setValidity('time', false);\r\n $log.error('Timepicker directive: \"ng-model\" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.');\r\n } else {\r\n if (date) {\r\n selected = date;\r\n }\r\n\r\n if (selected < min || selected > max) {\r\n ngModelCtrl.$setValidity('time', false);\r\n $scope.invalidHours = true;\r\n $scope.invalidMinutes = true;\r\n } else {\r\n makeValid();\r\n }\r\n updateTemplate();\r\n }\r\n };\r\n\r\n // Call internally when we know that model is valid.\r\n function refresh(keyboardChange) {\r\n makeValid();\r\n ngModelCtrl.$setViewValue(new Date(selected));\r\n updateTemplate(keyboardChange);\r\n }\r\n\r\n function makeValid() {\r\n ngModelCtrl.$setValidity('time', true);\r\n $scope.invalidHours = false;\r\n $scope.invalidMinutes = false;\r\n }\r\n\r\n function updateTemplate(keyboardChange) {\r\n var hours = selected.getHours(), minutes = selected.getMinutes();\r\n\r\n if ($scope.showMeridian) {\r\n hours = (hours === 0 || hours === 12) ? 12 : hours % 12; // Convert 24 to 12 hour system\r\n }\r\n\r\n $scope.hours = keyboardChange === 'h' ? hours : pad(hours);\r\n if (keyboardChange !== 'm') {\r\n $scope.minutes = pad(minutes);\r\n }\r\n $scope.meridian = selected.getHours() < 12 ? meridians[0] : meridians[1];\r\n }\r\n\r\n function addMinutes(date, minutes) {\r\n var dt = new Date(date.getTime() + minutes * 60000);\r\n var newDate = new Date(date);\r\n newDate.setHours(dt.getHours(), dt.getMinutes());\r\n return newDate;\r\n }\r\n\r\n function addMinutesToSelected(minutes) {\r\n selected = addMinutes(selected, minutes);\r\n refresh();\r\n }\r\n\r\n $scope.showSpinners = angular.isDefined($attrs.showSpinners) ?\r\n $scope.$parent.$eval($attrs.showSpinners) : timepickerConfig.showSpinners;\r\n\r\n $scope.incrementHours = function() {\r\n if (!$scope.noIncrementHours()) {\r\n addMinutesToSelected(hourStep * 60);\r\n }\r\n };\r\n\r\n $scope.decrementHours = function() {\r\n if (!$scope.noDecrementHours()) {\r\n addMinutesToSelected(-hourStep * 60);\r\n }\r\n };\r\n\r\n $scope.incrementMinutes = function() {\r\n if (!$scope.noIncrementMinutes()) {\r\n addMinutesToSelected(minuteStep);\r\n }\r\n };\r\n\r\n $scope.decrementMinutes = function() {\r\n if (!$scope.noDecrementMinutes()) {\r\n addMinutesToSelected(-minuteStep);\r\n }\r\n };\r\n\r\n $scope.toggleMeridian = function() {\r\n if (!$scope.noToggleMeridian()) {\r\n addMinutesToSelected(12 * 60 * (selected.getHours() < 12 ? 1 : -1));\r\n }\r\n };\r\n}])\r\n\r\n.directive('timepicker', function() {\r\n return {\r\n restrict: 'EA',\r\n require: ['timepicker', '?^ngModel'],\r\n controller:'TimepickerController',\r\n controllerAs: 'timepicker',\r\n replace: true,\r\n scope: {},\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'template/timepicker/timepicker.html';\r\n },\r\n link: function(scope, element, attrs, ctrls) {\r\n var timepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n if (ngModelCtrl) {\r\n timepickerCtrl.init(ngModelCtrl, element.find('input'));\r\n }\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.transition', [])\r\n\r\n.value('$transitionSuppressDeprecated', false)\r\n/**\r\n * $transition service provides a consistent interface to trigger CSS 3 transitions and to be informed when they complete.\r\n * @param {DOMElement} element The DOMElement that will be animated.\r\n * @param {string|object|function} trigger The thing that will cause the transition to start:\r\n * - As a string, it represents the css class to be added to the element.\r\n * - As an object, it represents a hash of style attributes to be applied to the element.\r\n * - As a function, it represents a function to be called that will cause the transition to occur.\r\n * @return {Promise} A promise that is resolved when the transition finishes.\r\n */\r\n.factory('$transition', [\r\n '$q', '$timeout', '$rootScope', '$log', '$transitionSuppressDeprecated',\r\nfunction($q , $timeout , $rootScope , $log , $transitionSuppressDeprecated) {\r\n\r\n if (!$transitionSuppressDeprecated) {\r\n $log.warn('$transition is now deprecated. Use $animate from ngAnimate instead.');\r\n }\r\n\r\n var $transition = function(element, trigger, options) {\r\n options = options || {};\r\n var deferred = $q.defer();\r\n var endEventName = $transition[options.animation ? 'animationEndEventName' : 'transitionEndEventName'];\r\n\r\n var transitionEndHandler = function(event) {\r\n $rootScope.$apply(function() {\r\n element.unbind(endEventName, transitionEndHandler);\r\n deferred.resolve(element);\r\n });\r\n };\r\n\r\n if (endEventName) {\r\n element.bind(endEventName, transitionEndHandler);\r\n }\r\n\r\n // Wrap in a timeout to allow the browser time to update the DOM before the transition is to occur\r\n $timeout(function() {\r\n if ( angular.isString(trigger) ) {\r\n element.addClass(trigger);\r\n } else if ( angular.isFunction(trigger) ) {\r\n trigger(element);\r\n } else if ( angular.isObject(trigger) ) {\r\n element.css(trigger);\r\n }\r\n //If browser does not support transitions, instantly resolve\r\n if ( !endEventName ) {\r\n deferred.resolve(element);\r\n }\r\n });\r\n\r\n // Add our custom cancel function to the promise that is returned\r\n // We can call this if we are about to run a new transition, which we know will prevent this transition from ending,\r\n // i.e. it will therefore never raise a transitionEnd event for that transition\r\n deferred.promise.cancel = function() {\r\n if ( endEventName ) {\r\n element.unbind(endEventName, transitionEndHandler);\r\n }\r\n deferred.reject('Transition cancelled');\r\n };\r\n\r\n return deferred.promise;\r\n };\r\n\r\n // Work out the name of the transitionEnd event\r\n var transElement = document.createElement('trans');\r\n var transitionEndEventNames = {\r\n 'WebkitTransition': 'webkitTransitionEnd',\r\n 'MozTransition': 'transitionend',\r\n 'OTransition': 'oTransitionEnd',\r\n 'transition': 'transitionend'\r\n };\r\n var animationEndEventNames = {\r\n 'WebkitTransition': 'webkitAnimationEnd',\r\n 'MozTransition': 'animationend',\r\n 'OTransition': 'oAnimationEnd',\r\n 'transition': 'animationend'\r\n };\r\n function findEndEventName(endEventNames) {\r\n for (var name in endEventNames){\r\n if (transElement.style[name] !== undefined) {\r\n return endEventNames[name];\r\n }\r\n }\r\n }\r\n $transition.transitionEndEventName = findEndEventName(transitionEndEventNames);\r\n $transition.animationEndEventName = findEndEventName(animationEndEventNames);\r\n return $transition;\r\n}]);\r\n\r\nangular.module('ui.bootstrap.typeahead', ['ui.bootstrap.position'])\r\n\r\n/**\r\n * A helper service that can parse typeahead's syntax (string provided by users)\r\n * Extracted to a separate service for ease of unit testing\r\n */\r\n .factory('typeaheadParser', ['$parse', function($parse) {\r\n\r\n // 00000111000000000000022200000000000000003333333333333330000000000044000\r\n var TYPEAHEAD_REGEXP = /^\\s*([\\s\\S]+?)(?:\\s+as\\s+([\\s\\S]+?))?\\s+for\\s+(?:([\\$\\w][\\$\\w\\d]*))\\s+in\\s+([\\s\\S]+?)$/;\r\n\r\n return {\r\n parse: function(input) {\r\n var match = input.match(TYPEAHEAD_REGEXP);\r\n if (!match) {\r\n throw new Error(\r\n 'Expected typeahead specification in form of \"_modelValue_ (as _label_)? for _item_ in _collection_\"' +\r\n ' but got \"' + input + '\".');\r\n }\r\n\r\n return {\r\n itemName:match[3],\r\n source:$parse(match[4]),\r\n viewMapper:$parse(match[2] || match[1]),\r\n modelMapper:$parse(match[1])\r\n };\r\n }\r\n };\r\n}])\r\n\r\n .directive('typeahead', ['$compile', '$parse', '$q', '$timeout', '$document', '$window', '$rootScope', '$position', 'typeaheadParser',\r\n function($compile, $parse, $q, $timeout, $document, $window, $rootScope, $position, typeaheadParser) {\r\n var HOT_KEYS = [9, 13, 27, 38, 40];\r\n var eventDebounceTime = 200;\r\n\r\n return {\r\n require: ['ngModel', '^?ngModelOptions'],\r\n link: function(originalScope, element, attrs, ctrls) {\r\n var modelCtrl = ctrls[0];\r\n var ngModelOptions = ctrls[1];\r\n //SUPPORTED ATTRIBUTES (OPTIONS)\r\n\r\n //minimal no of characters that needs to be entered before typeahead kicks-in\r\n var minLength = originalScope.$eval(attrs.typeaheadMinLength);\r\n if (!minLength && minLength !== 0) {\r\n minLength = 1;\r\n }\r\n\r\n //minimal wait time after last character typed before typeahead kicks-in\r\n var waitTime = originalScope.$eval(attrs.typeaheadWaitMs) || 0;\r\n\r\n //should it restrict model values to the ones selected from the popup only?\r\n var isEditable = originalScope.$eval(attrs.typeaheadEditable) !== false;\r\n\r\n //binding to a variable that indicates if matches are being retrieved asynchronously\r\n var isLoadingSetter = $parse(attrs.typeaheadLoading).assign || angular.noop;\r\n\r\n //a callback executed when a match is selected\r\n var onSelectCallback = $parse(attrs.typeaheadOnSelect);\r\n\r\n //should it select highlighted popup value when losing focus?\r\n var isSelectOnBlur = angular.isDefined(attrs.typeaheadSelectOnBlur) ? originalScope.$eval(attrs.typeaheadSelectOnBlur) : false;\r\n\r\n //binding to a variable that indicates if there were no results after the query is completed\r\n var isNoResultsSetter = $parse(attrs.typeaheadNoResults).assign || angular.noop;\r\n\r\n var inputFormatter = attrs.typeaheadInputFormatter ? $parse(attrs.typeaheadInputFormatter) : undefined;\r\n\r\n var appendToBody = attrs.typeaheadAppendToBody ? originalScope.$eval(attrs.typeaheadAppendToBody) : false;\r\n\r\n var focusFirst = originalScope.$eval(attrs.typeaheadFocusFirst) !== false;\r\n\r\n //If input matches an item of the list exactly, select it automatically\r\n var selectOnExact = attrs.typeaheadSelectOnExact ? originalScope.$eval(attrs.typeaheadSelectOnExact) : false;\r\n\r\n //INTERNAL VARIABLES\r\n\r\n //model setter executed upon match selection\r\n var parsedModel = $parse(attrs.ngModel);\r\n var invokeModelSetter = $parse(attrs.ngModel + '($$$p)');\r\n var $setModelValue = function(scope, newValue) {\r\n if (angular.isFunction(parsedModel(originalScope)) &&\r\n ngModelOptions && ngModelOptions.$options && ngModelOptions.$options.getterSetter) {\r\n return invokeModelSetter(scope, {$$$p: newValue});\r\n } else {\r\n return parsedModel.assign(scope, newValue);\r\n }\r\n };\r\n\r\n //expressions used by typeahead\r\n var parserResult = typeaheadParser.parse(attrs.typeahead);\r\n\r\n var hasFocus;\r\n\r\n //Used to avoid bug in iOS webview where iOS keyboard does not fire\r\n //mousedown & mouseup events\r\n //Issue #3699\r\n var selected;\r\n\r\n //create a child scope for the typeahead directive so we are not polluting original scope\r\n //with typeahead-specific data (matches, query etc.)\r\n var scope = originalScope.$new();\r\n var offDestroy = originalScope.$on('$destroy', function() {\r\n\t\t\t scope.$destroy();\r\n });\r\n scope.$on('$destroy', offDestroy);\r\n\r\n // WAI-ARIA\r\n var popupId = 'typeahead-' + scope.$id + '-' + Math.floor(Math.random() * 10000);\r\n element.attr({\r\n 'aria-autocomplete': 'list',\r\n 'aria-expanded': false,\r\n 'aria-owns': popupId\r\n });\r\n\r\n //pop-up element used to display matches\r\n var popUpEl = angular.element('
    ');\r\n popUpEl.attr({\r\n id: popupId,\r\n matches: 'matches',\r\n active: 'activeIdx',\r\n select: 'select(activeIdx)',\r\n 'move-in-progress': 'moveInProgress',\r\n query: 'query',\r\n position: 'position'\r\n });\r\n //custom item template\r\n if (angular.isDefined(attrs.typeaheadTemplateUrl)) {\r\n popUpEl.attr('template-url', attrs.typeaheadTemplateUrl);\r\n }\r\n\r\n if (angular.isDefined(attrs.typeaheadPopupTemplateUrl)) {\r\n popUpEl.attr('popup-template-url', attrs.typeaheadPopupTemplateUrl);\r\n }\r\n\r\n var resetMatches = function() {\r\n scope.matches = [];\r\n scope.activeIdx = -1;\r\n element.attr('aria-expanded', false);\r\n };\r\n\r\n var getMatchId = function(index) {\r\n return popupId + '-option-' + index;\r\n };\r\n\r\n // Indicate that the specified match is the active (pre-selected) item in the list owned by this typeahead.\r\n // This attribute is added or removed automatically when the `activeIdx` changes.\r\n scope.$watch('activeIdx', function(index) {\r\n if (index < 0) {\r\n element.removeAttr('aria-activedescendant');\r\n } else {\r\n element.attr('aria-activedescendant', getMatchId(index));\r\n }\r\n });\r\n\r\n var inputIsExactMatch = function(inputValue, index) {\r\n if (scope.matches.length > index && inputValue) {\r\n return inputValue.toUpperCase() === scope.matches[index].label.toUpperCase();\r\n }\r\n\r\n return false;\r\n };\r\n\r\n var getMatchesAsync = function(inputValue) {\r\n var locals = {$viewValue: inputValue};\r\n isLoadingSetter(originalScope, true);\r\n isNoResultsSetter(originalScope, false);\r\n $q.when(parserResult.source(originalScope, locals)).then(function(matches) {\r\n //it might happen that several async queries were in progress if a user were typing fast\r\n //but we are interested only in responses that correspond to the current view value\r\n var onCurrentRequest = (inputValue === modelCtrl.$viewValue);\r\n if (onCurrentRequest && hasFocus) {\r\n if (matches && matches.length > 0) {\r\n\r\n scope.activeIdx = focusFirst ? 0 : -1;\r\n isNoResultsSetter(originalScope, false);\r\n scope.matches.length = 0;\r\n\r\n //transform labels\r\n for (var i = 0; i < matches.length; i++) {\r\n locals[parserResult.itemName] = matches[i];\r\n scope.matches.push({\r\n id: getMatchId(i),\r\n label: parserResult.viewMapper(scope, locals),\r\n model: matches[i]\r\n });\r\n }\r\n\r\n scope.query = inputValue;\r\n //position pop-up with matches - we need to re-calculate its position each time we are opening a window\r\n //with matches as a pop-up might be absolute-positioned and position of an input might have changed on a page\r\n //due to other elements being rendered\r\n recalculatePosition();\r\n\r\n element.attr('aria-expanded', true);\r\n\r\n //Select the single remaining option if user input matches\r\n if (selectOnExact && scope.matches.length === 1 && inputIsExactMatch(inputValue, 0)) {\r\n scope.select(0);\r\n }\r\n } else {\r\n resetMatches();\r\n isNoResultsSetter(originalScope, true);\r\n }\r\n }\r\n if (onCurrentRequest) {\r\n isLoadingSetter(originalScope, false);\r\n }\r\n }, function() {\r\n resetMatches();\r\n isLoadingSetter(originalScope, false);\r\n isNoResultsSetter(originalScope, true);\r\n });\r\n };\r\n\r\n // bind events only if appendToBody params exist - performance feature\r\n if (appendToBody) {\r\n angular.element($window).bind('resize', fireRecalculating);\r\n $document.find('body').bind('scroll', fireRecalculating);\r\n }\r\n\r\n // Declare the timeout promise var outside the function scope so that stacked calls can be cancelled later\r\n var timeoutEventPromise;\r\n\r\n // Default progress type\r\n scope.moveInProgress = false;\r\n\r\n function fireRecalculating() {\r\n if (!scope.moveInProgress) {\r\n scope.moveInProgress = true;\r\n scope.$digest();\r\n }\r\n\r\n // Cancel previous timeout\r\n if (timeoutEventPromise) {\r\n $timeout.cancel(timeoutEventPromise);\r\n }\r\n\r\n // Debounced executing recalculate after events fired\r\n timeoutEventPromise = $timeout(function() {\r\n // if popup is visible\r\n if (scope.matches.length) {\r\n recalculatePosition();\r\n }\r\n\r\n scope.moveInProgress = false;\r\n scope.$digest();\r\n }, eventDebounceTime);\r\n }\r\n\r\n // recalculate actual position and set new values to scope\r\n // after digest loop is popup in right position\r\n function recalculatePosition() {\r\n scope.position = appendToBody ? $position.offset(element) : $position.position(element);\r\n scope.position.top += element.prop('offsetHeight');\r\n }\r\n\r\n resetMatches();\r\n\r\n //we need to propagate user's query so we can higlight matches\r\n scope.query = undefined;\r\n\r\n //Declare the timeout promise var outside the function scope so that stacked calls can be cancelled later\r\n var timeoutPromise;\r\n\r\n var scheduleSearchWithTimeout = function(inputValue) {\r\n timeoutPromise = $timeout(function() {\r\n getMatchesAsync(inputValue);\r\n }, waitTime);\r\n };\r\n\r\n var cancelPreviousTimeout = function() {\r\n if (timeoutPromise) {\r\n $timeout.cancel(timeoutPromise);\r\n }\r\n };\r\n\r\n //plug into $parsers pipeline to open a typeahead on view changes initiated from DOM\r\n //$parsers kick-in on all the changes coming from the view as well as manually triggered by $setViewValue\r\n modelCtrl.$parsers.unshift(function(inputValue) {\r\n hasFocus = true;\r\n\r\n if (minLength === 0 || inputValue && inputValue.length >= minLength) {\r\n if (waitTime > 0) {\r\n cancelPreviousTimeout();\r\n scheduleSearchWithTimeout(inputValue);\r\n } else {\r\n getMatchesAsync(inputValue);\r\n }\r\n } else {\r\n isLoadingSetter(originalScope, false);\r\n cancelPreviousTimeout();\r\n resetMatches();\r\n }\r\n\r\n if (isEditable) {\r\n return inputValue;\r\n } else {\r\n if (!inputValue) {\r\n // Reset in case user had typed something previously.\r\n modelCtrl.$setValidity('editable', true);\r\n return null;\r\n } else {\r\n modelCtrl.$setValidity('editable', false);\r\n return undefined;\r\n }\r\n }\r\n });\r\n\r\n modelCtrl.$formatters.push(function(modelValue) {\r\n var candidateViewValue, emptyViewValue;\r\n var locals = {};\r\n\r\n // The validity may be set to false via $parsers (see above) if\r\n // the model is restricted to selected values. If the model\r\n // is set manually it is considered to be valid.\r\n if (!isEditable) {\r\n modelCtrl.$setValidity('editable', true);\r\n }\r\n\r\n if (inputFormatter) {\r\n locals.$model = modelValue;\r\n return inputFormatter(originalScope, locals);\r\n } else {\r\n //it might happen that we don't have enough info to properly render input value\r\n //we need to check for this situation and simply return model value if we can't apply custom formatting\r\n locals[parserResult.itemName] = modelValue;\r\n candidateViewValue = parserResult.viewMapper(originalScope, locals);\r\n locals[parserResult.itemName] = undefined;\r\n emptyViewValue = parserResult.viewMapper(originalScope, locals);\r\n\r\n return candidateViewValue!== emptyViewValue ? candidateViewValue : modelValue;\r\n }\r\n });\r\n\r\n scope.select = function(activeIdx) {\r\n //called from within the $digest() cycle\r\n var locals = {};\r\n var model, item;\r\n\r\n selected = true;\r\n locals[parserResult.itemName] = item = scope.matches[activeIdx].model;\r\n model = parserResult.modelMapper(originalScope, locals);\r\n $setModelValue(originalScope, model);\r\n modelCtrl.$setValidity('editable', true);\r\n modelCtrl.$setValidity('parse', true);\r\n\r\n onSelectCallback(originalScope, {\r\n $item: item,\r\n $model: model,\r\n $label: parserResult.viewMapper(originalScope, locals)\r\n });\r\n\r\n resetMatches();\r\n\r\n //return focus to the input element if a match was selected via a mouse click event\r\n // use timeout to avoid $rootScope:inprog error\r\n if (scope.$eval(attrs.typeaheadFocusOnSelect) !== false) {\r\n $timeout(function() { element[0].focus(); }, 0, false);\r\n }\r\n };\r\n\r\n //bind keyboard events: arrows up(38) / down(40), enter(13) and tab(9), esc(27)\r\n element.bind('keydown', function(evt) {\r\n //typeahead is open and an \"interesting\" key was pressed\r\n if (scope.matches.length === 0 || HOT_KEYS.indexOf(evt.which) === -1) {\r\n return;\r\n }\r\n\r\n // if there's nothing selected (i.e. focusFirst) and enter or tab is hit, clear the results\r\n if (scope.activeIdx === -1 && (evt.which === 9 || evt.which === 13)) {\r\n resetMatches();\r\n scope.$digest();\r\n return;\r\n }\r\n\r\n evt.preventDefault();\r\n\r\n if (evt.which === 40) {\r\n scope.activeIdx = (scope.activeIdx + 1) % scope.matches.length;\r\n scope.$digest();\r\n\r\n } else if (evt.which === 38) {\r\n scope.activeIdx = (scope.activeIdx > 0 ? scope.activeIdx : scope.matches.length) - 1;\r\n scope.$digest();\r\n\r\n } else if (evt.which === 13 || evt.which === 9) {\r\n scope.$apply(function () {\r\n scope.select(scope.activeIdx);\r\n });\r\n\r\n } else if (evt.which === 27) {\r\n evt.stopPropagation();\r\n\r\n resetMatches();\r\n scope.$digest();\r\n }\r\n });\r\n\r\n element.bind('blur', function() {\r\n if (isSelectOnBlur && scope.matches.length && scope.activeIdx !== -1 && !selected) {\r\n selected = true;\r\n scope.$apply(function() {\r\n scope.select(scope.activeIdx);\r\n });\r\n }\r\n hasFocus = false;\r\n selected = false;\r\n });\r\n\r\n // Keep reference to click handler to unbind it.\r\n var dismissClickHandler = function(evt) {\r\n // Issue #3973\r\n // Firefox treats right click as a click on document\r\n if (element[0] !== evt.target && evt.which !== 3 && scope.matches.length !== 0) {\r\n resetMatches();\r\n if (!$rootScope.$$phase) {\r\n scope.$digest();\r\n }\r\n }\r\n };\r\n\r\n $document.bind('click', dismissClickHandler);\r\n\r\n originalScope.$on('$destroy', function() {\r\n $document.unbind('click', dismissClickHandler);\r\n if (appendToBody) {\r\n $popup.remove();\r\n }\r\n // Prevent jQuery cache memory leak\r\n popUpEl.remove();\r\n });\r\n\r\n var $popup = $compile(popUpEl)(scope);\r\n\r\n if (appendToBody) {\r\n $document.find('body').append($popup);\r\n } else {\r\n element.after($popup);\r\n }\r\n }\r\n };\r\n\r\n }])\r\n\r\n .directive('typeaheadPopup', function() {\r\n return {\r\n restrict: 'EA',\r\n scope: {\r\n matches: '=',\r\n query: '=',\r\n active: '=',\r\n position: '&',\r\n moveInProgress: '=',\r\n select: '&'\r\n },\r\n replace: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.popupTemplateUrl || 'template/typeahead/typeahead-popup.html';\r\n },\r\n link: function(scope, element, attrs) {\r\n scope.templateUrl = attrs.templateUrl;\r\n\r\n scope.isOpen = function() {\r\n return scope.matches.length > 0;\r\n };\r\n\r\n scope.isActive = function(matchIdx) {\r\n return scope.active == matchIdx;\r\n };\r\n\r\n scope.selectActive = function(matchIdx) {\r\n scope.active = matchIdx;\r\n };\r\n\r\n scope.selectMatch = function(activeIdx) {\r\n scope.select({activeIdx:activeIdx});\r\n };\r\n }\r\n };\r\n })\r\n\r\n .directive('typeaheadMatch', ['$templateRequest', '$compile', '$parse', function($templateRequest, $compile, $parse) {\r\n return {\r\n restrict: 'EA',\r\n scope: {\r\n index: '=',\r\n match: '=',\r\n query: '='\r\n },\r\n link:function(scope, element, attrs) {\r\n var tplUrl = $parse(attrs.templateUrl)(scope.$parent) || 'template/typeahead/typeahead-match.html';\r\n $templateRequest(tplUrl).then(function(tplContent) {\r\n $compile(tplContent.trim())(scope, function(clonedElement) {\r\n element.replaceWith(clonedElement);\r\n });\r\n });\r\n }\r\n };\r\n }])\r\n\r\n .filter('typeaheadHighlight', ['$sce', '$injector', '$log', function($sce, $injector, $log) {\r\n var isSanitizePresent;\r\n isSanitizePresent = $injector.has('$sanitize');\r\n\r\n function escapeRegexp(queryToEscape) {\r\n // Regex: capture the whole query string and replace it with the string that will be used to match\r\n // the results, for example if the capture is \"a\" the result will be \\a\r\n return queryToEscape.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\r\n }\r\n\r\n function containsHtml(matchItem) {\r\n return /<.*>/g.test(matchItem);\r\n }\r\n\r\n return function(matchItem, query) {\r\n if (!isSanitizePresent && containsHtml(matchItem)) {\r\n $log.warn('Unsafe use of typeahead please use ngSanitize'); // Warn the user about the danger\r\n }\r\n matchItem = query? ('' + matchItem).replace(new RegExp(escapeRegexp(query), 'gi'), '$&') : matchItem; // Replaces the capture string with a the same string inside of a \"strong\" tag\r\n if (!isSanitizePresent) {\r\n matchItem = $sce.trustAsHtml(matchItem); // If $sanitize is not present we pack the string in a $sce object for the ng-bind-html directive\r\n }\r\n return matchItem;\r\n };\r\n }]);\r\n\r\nangular.module(\"template/accordion/accordion-group.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/accordion/accordion-group.html\",\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"

    \\n\" +\r\n \" {{heading}}\\n\" +\r\n \"

    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\t
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/accordion/accordion.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/accordion/accordion.html\",\r\n \"
    \");\r\n}]);\r\n\r\nangular.module(\"template/alert/alert.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/alert/alert.html\",\r\n \"
    \\n\" +\r\n \" \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/carousel/carousel.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/carousel/carousel.html\",\r\n \"
    \\n\" +\r\n \"
      1\\\">\\n\" +\r\n \"
    1. \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \" 1\\\">\\n\" +\r\n \" 1\\\">\\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/carousel/slide.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/carousel/slide.html\",\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/datepicker/datepicker.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/datepicker/datepicker.html\",\r\n \"
    \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \"
    \");\r\n}]);\r\n\r\nangular.module(\"template/datepicker/day.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/datepicker/day.html\",\r\n \"\\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \"
    {{::label.abbr}}
    {{ weekNumbers[$index] }}\\n\" +\r\n \" \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/datepicker/month.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/datepicker/month.html\",\r\n \"\\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \"
    \\n\" +\r\n \" \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/datepicker/popup.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/datepicker/popup.html\",\r\n \"
      \\n\" +\r\n \"\t
    • \\n\" +\r\n \"\t
    • \\n\" +\r\n \"\t\t\\n\" +\r\n \"\t\t\t\\n\" +\r\n \"\t\t\t\\n\" +\r\n \"\t\t\\n\" +\r\n \"\t\t\\n\" +\r\n \"\t
    • \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/datepicker/year.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/datepicker/year.html\",\r\n \"\\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \"
    \\n\" +\r\n \" \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/modal/backdrop.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/modal/backdrop.html\",\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/modal/window.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/modal/window.html\",\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/pagination/pager.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/pagination/pager.html\",\r\n \"\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/pagination/pagination.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/pagination/pagination.html\",\r\n \"\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/tooltip/tooltip-html-popup.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/tooltip/tooltip-html-popup.html\",\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/tooltip/tooltip-html-unsafe-popup.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/tooltip/tooltip-html-unsafe-popup.html\",\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/tooltip/tooltip-popup.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/tooltip/tooltip-popup.html\",\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/tooltip/tooltip-template-popup.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/tooltip/tooltip-template-popup.html\",\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/popover/popover-html.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/popover/popover-html.html\",\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\\n\" +\r\n \"
    \\n\" +\r\n \"

    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/popover/popover-template.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/popover/popover-template.html\",\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\\n\" +\r\n \"
    \\n\" +\r\n \"

    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/popover/popover.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/popover/popover.html\",\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\\n\" +\r\n \"
    \\n\" +\r\n \"

    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/progressbar/bar.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/progressbar/bar.html\",\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/progressbar/progress.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/progressbar/progress.html\",\r\n \"
    \");\r\n}]);\r\n\r\nangular.module(\"template/progressbar/progressbar.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/progressbar/progressbar.html\",\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/rating/rating.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/rating/rating.html\",\r\n \"\\n\" +\r\n \" ({{ $index < value ? '*' : ' ' }})\\n\" +\r\n \" \\n\" +\r\n \"\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/tabs/tab.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/tabs/tab.html\",\r\n \"
  • \\n\" +\r\n \" {{heading}}\\n\" +\r\n \"
  • \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/tabs/tabset.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/tabs/tabset.html\",\r\n \"
    \\n\" +\r\n \"
      \\n\" +\r\n \"
      \\n\" +\r\n \"
      \\n\" +\r\n \"
      \\n\" +\r\n \"
      \\n\" +\r\n \"
      \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/timepicker/timepicker.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/timepicker/timepicker.html\",\r\n \"\\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \"
       
      \\n\" +\r\n \" \\n\" +\r\n \" :\\n\" +\r\n \" \\n\" +\r\n \"
       
      \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/typeahead/typeahead-match.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/typeahead/typeahead-match.html\",\r\n \"\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"template/typeahead/typeahead-popup.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"template/typeahead/typeahead-popup.html\",\r\n \"
        \\n\" +\r\n \"
      • \\n\" +\r\n \"
        \\n\" +\r\n \"
      • \\n\" +\r\n \"
      \\n\" +\r\n \"\");\r\n}]);\r\n!angular.$$csp() && angular.element(document).find('head').prepend('');\r\n})(angular);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./loaders/iifeloader.js!./bower_components/angular-bootstrap/ui-bootstrap-tpls.js\n ** module id = 6\n ** module chunks = 0\n **/","(function(angular) {\r\n/*\r\n * angular-ui-bootstrap\r\n * http://angular-ui.github.io/bootstrap/\r\n\r\n * Version: 0.13.4 - 2015-09-03\r\n * License: MIT\r\n */\r\nangular.module(\"ui.bootstrap\",[\"ui.bootstrap.collapse\",\"ui.bootstrap.accordion\",\"ui.bootstrap.alert\",\"ui.bootstrap.bindHtml\",\"ui.bootstrap.buttons\",\"ui.bootstrap.carousel\",\"ui.bootstrap.dateparser\",\"ui.bootstrap.position\",\"ui.bootstrap.datepicker\",\"ui.bootstrap.dropdown\",\"ui.bootstrap.modal\",\"ui.bootstrap.pagination\",\"ui.bootstrap.tooltip\",\"ui.bootstrap.popover\",\"ui.bootstrap.progressbar\",\"ui.bootstrap.rating\",\"ui.bootstrap.tabs\",\"ui.bootstrap.timepicker\",\"ui.bootstrap.transition\",\"ui.bootstrap.typeahead\"]),angular.module(\"ui.bootstrap.collapse\",[]).directive(\"collapse\",[\"$animate\",function(a){return{link:function(b,c,d){function e(){c.removeClass(\"collapse\").addClass(\"collapsing\").attr(\"aria-expanded\",!0).attr(\"aria-hidden\",!1),a.addClass(c,\"in\",{to:{height:c[0].scrollHeight+\"px\"}}).then(f)}function f(){c.removeClass(\"collapsing\"),c.css({height:\"auto\"})}function g(){return c.hasClass(\"collapse\")||c.hasClass(\"in\")?(c.css({height:c[0].scrollHeight+\"px\"}).removeClass(\"collapse\").addClass(\"collapsing\").attr(\"aria-expanded\",!1).attr(\"aria-hidden\",!0),void a.removeClass(c,\"in\",{to:{height:\"0\"}}).then(h)):h()}function h(){c.css({height:\"0\"}),c.removeClass(\"collapsing\"),c.addClass(\"collapse\")}b.$watch(d.collapse,function(a){a?g():e()})}}}]),angular.module(\"ui.bootstrap.accordion\",[\"ui.bootstrap.collapse\"]).constant(\"accordionConfig\",{closeOthers:!0}).controller(\"AccordionController\",[\"$scope\",\"$attrs\",\"accordionConfig\",function(a,b,c){this.groups=[],this.closeOthers=function(d){var e=angular.isDefined(b.closeOthers)?a.$eval(b.closeOthers):c.closeOthers;e&&angular.forEach(this.groups,function(a){a!==d&&(a.isOpen=!1)})},this.addGroup=function(a){var b=this;this.groups.push(a),a.$on(\"$destroy\",function(c){b.removeGroup(a)})},this.removeGroup=function(a){var b=this.groups.indexOf(a);-1!==b&&this.groups.splice(b,1)}}]).directive(\"accordion\",function(){return{restrict:\"EA\",controller:\"AccordionController\",controllerAs:\"accordion\",transclude:!0,replace:!1,templateUrl:function(a,b){return b.templateUrl||\"template/accordion/accordion.html\"}}}).directive(\"accordionGroup\",function(){return{require:\"^accordion\",restrict:\"EA\",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||\"template/accordion/accordion-group.html\"},scope:{heading:\"@\",isOpen:\"=?\",isDisabled:\"=?\"},controller:function(){this.setHeading=function(a){this.heading=a}},link:function(a,b,c,d){d.addGroup(a),a.openClass=c.openClass||\"panel-open\",a.panelClass=c.panelClass,a.$watch(\"isOpen\",function(c){b.toggleClass(a.openClass,c),c&&d.closeOthers(a)}),a.toggleOpen=function(b){a.isDisabled||b&&32!==b.which||(a.isOpen=!a.isOpen)}}}}).directive(\"accordionHeading\",function(){return{restrict:\"EA\",transclude:!0,template:\"\",replace:!0,require:\"^accordionGroup\",link:function(a,b,c,d,e){d.setHeading(e(a,angular.noop))}}}).directive(\"accordionTransclude\",function(){return{require:\"^accordionGroup\",link:function(a,b,c,d){a.$watch(function(){return d[c.accordionTransclude]},function(a){a&&(b.find(\"span\").html(\"\"),b.find(\"span\").append(a))})}}}),angular.module(\"ui.bootstrap.alert\",[]).controller(\"AlertController\",[\"$scope\",\"$attrs\",function(a,b){a.closeable=!!b.close,this.close=a.close}]).directive(\"alert\",function(){return{controller:\"AlertController\",controllerAs:\"alert\",templateUrl:function(a,b){return b.templateUrl||\"template/alert/alert.html\"},transclude:!0,replace:!0,scope:{type:\"@\",close:\"&\"}}}).directive(\"dismissOnTimeout\",[\"$timeout\",function(a){return{require:\"alert\",link:function(b,c,d,e){a(function(){e.close()},parseInt(d.dismissOnTimeout,10))}}}]),angular.module(\"ui.bootstrap.bindHtml\",[]).value(\"$bindHtmlUnsafeSuppressDeprecated\",!1).directive(\"bindHtmlUnsafe\",[\"$log\",\"$bindHtmlUnsafeSuppressDeprecated\",function(a,b){return function(c,d,e){b||a.warn(\"bindHtmlUnsafe is now deprecated. Use ngBindHtml instead\"),d.addClass(\"ng-binding\").data(\"$binding\",e.bindHtmlUnsafe),c.$watch(e.bindHtmlUnsafe,function(a){d.html(a||\"\")})}}]),angular.module(\"ui.bootstrap.buttons\",[]).constant(\"buttonConfig\",{activeClass:\"active\",toggleEvent:\"click\"}).controller(\"ButtonsController\",[\"buttonConfig\",function(a){this.activeClass=a.activeClass||\"active\",this.toggleEvent=a.toggleEvent||\"click\"}]).directive(\"btnRadio\",function(){return{require:[\"btnRadio\",\"ngModel\"],controller:\"ButtonsController\",controllerAs:\"buttons\",link:function(a,b,c,d){var e=d[0],f=d[1];b.find(\"input\").css({display:\"none\"}),f.$render=function(){b.toggleClass(e.activeClass,angular.equals(f.$modelValue,a.$eval(c.btnRadio)))},b.bind(e.toggleEvent,function(){if(!c.disabled){var d=b.hasClass(e.activeClass);(!d||angular.isDefined(c.uncheckable))&&a.$apply(function(){f.$setViewValue(d?null:a.$eval(c.btnRadio)),f.$render()})}})}}}).directive(\"btnCheckbox\",[\"$document\",function(a){return{require:[\"btnCheckbox\",\"ngModel\"],controller:\"ButtonsController\",controllerAs:\"button\",link:function(b,c,d,e){function f(){return h(d.btnCheckboxTrue,!0)}function g(){return h(d.btnCheckboxFalse,!1)}function h(a,c){var d=b.$eval(a);return angular.isDefined(d)?d:c}var i=e[0],j=e[1];c.find(\"input\").css({display:\"none\"}),j.$render=function(){c.toggleClass(i.activeClass,angular.equals(j.$modelValue,f()))},c.bind(i.toggleEvent,function(){d.disabled||b.$apply(function(){j.$setViewValue(c.hasClass(i.activeClass)?g():f()),j.$render()})}),c.on(\"keypress\",function(e){d.disabled||32!==e.which||a[0].activeElement!==c[0]||b.$apply(function(){j.$setViewValue(c.hasClass(i.activeClass)?g():f()),j.$render()})})}}}]),angular.module(\"ui.bootstrap.carousel\",[]).controller(\"CarouselController\",[\"$scope\",\"$element\",\"$interval\",\"$animate\",function(a,b,c,d){function e(b,c,e){r||(angular.extend(b,{direction:e,active:!0}),angular.extend(l.currentSlide||{},{direction:e,active:!1}),d.enabled()&&!a.noTransition&&!a.$currentTransition&&b.$element&&l.slides.length>1&&(b.$element.data(p,b.direction),l.currentSlide&&l.currentSlide.$element&&l.currentSlide.$element.data(p,b.direction),a.$currentTransition=!0,n?d.on(\"addClass\",b.$element,function(b,c){\"close\"===c&&(a.$currentTransition=null,d.off(\"addClass\",b))}):b.$element.one(\"$animate:close\",function(){a.$currentTransition=null})),l.currentSlide=b,q=c,g())}function f(a){if(angular.isUndefined(m[a].index))return m[a];var b;m.length;for(b=0;b0&&(j=c(i,b))}function h(){j&&(c.cancel(j),j=null)}function i(){var b=+a.interval;k&&!isNaN(b)&&b>0&&m.length?a.next():a.pause()}var j,k,l=this,m=l.slides=a.slides=[],n=angular.version.minor>=4,o=\"uib-noTransition\",p=\"uib-slideDirection\",q=-1;l.currentSlide=null;var r=!1;l.select=a.select=function(b,c){var d=a.indexOfSlide(b);void 0===c&&(c=d>l.getCurrentIndex()?\"next\":\"prev\"),b&&b!==l.currentSlide&&!a.$currentTransition&&e(b,d,c)},a.$on(\"$destroy\",function(){r=!0}),l.getCurrentIndex=function(){return l.currentSlide&&angular.isDefined(l.currentSlide.index)?+l.currentSlide.index:q},a.indexOfSlide=function(a){return angular.isDefined(a.index)?+a.index:m.indexOf(a)},a.next=function(){var b=(l.getCurrentIndex()+1)%m.length;return 0===b&&a.noWrap()?void a.pause():l.select(f(b),\"next\")},a.prev=function(){var b=l.getCurrentIndex()-1<0?m.length-1:l.getCurrentIndex()-1;return a.noWrap()&&b===m.length-1?void a.pause():l.select(f(b),\"prev\")},a.isActive=function(a){return l.currentSlide===a},a.$watch(\"interval\",g),a.$on(\"$destroy\",h),a.play=function(){k||(k=!0,g())},a.pause=function(){a.noPause||(k=!1,h())},l.addSlide=function(b,c){b.$element=c,m.push(b),1===m.length||b.active?(l.select(m[m.length-1]),1==m.length&&a.play()):b.active=!1},l.removeSlide=function(a){angular.isDefined(a.index)&&m.sort(function(a,b){return+a.index>+b.index});var b=m.indexOf(a);m.splice(b,1),m.length>0&&a.active?b>=m.length?l.select(m[b-1]):l.select(m[b]):q>b&&q--,0===m.length&&(l.currentSlide=null)},a.$watch(\"noTransition\",function(a){b.data(o,a)})}]).directive(\"carousel\",[function(){return{restrict:\"EA\",transclude:!0,replace:!0,controller:\"CarouselController\",controllerAs:\"carousel\",require:\"carousel\",templateUrl:function(a,b){return b.templateUrl||\"template/carousel/carousel.html\"},scope:{interval:\"=\",noTransition:\"=\",noPause:\"=\",noWrap:\"&\"}}}]).directive(\"slide\",function(){return{require:\"^carousel\",restrict:\"EA\",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||\"template/carousel/slide.html\"},scope:{active:\"=?\",actual:\"=?\",index:\"=?\"},link:function(a,b,c,d){d.addSlide(a,b),a.$on(\"$destroy\",function(){d.removeSlide(a)}),a.$watch(\"active\",function(b){b&&d.select(a)})}}}).animation(\".item\",[\"$injector\",\"$animate\",function(a,b){function c(a,b,c){a.removeClass(b),c&&c()}var d=\"uib-noTransition\",e=\"uib-slideDirection\",f=null;return a.has(\"$animateCss\")&&(f=a.get(\"$animateCss\")),{beforeAddClass:function(a,g,h){if(\"active\"==g&&a.parent()&&!a.parent().data(d)){var i=!1,j=a.data(e),k=\"next\"==j?\"left\":\"right\",l=c.bind(this,a,k+\" \"+j,h);return a.addClass(j),f?f(a,{addClass:k}).start().done(l):b.addClass(a,k).then(function(){i||l(),h()}),function(){i=!0}}h()},beforeRemoveClass:function(a,g,h){if(\"active\"===g&&a.parent()&&!a.parent().data(d)){var i=!1,j=a.data(e),k=\"next\"==j?\"left\":\"right\",l=c.bind(this,a,k,h);return f?f(a,{addClass:k}).start().done(l):b.addClass(a,k).then(function(){i||l(),h()}),function(){i=!0}}h()}}}]),angular.module(\"ui.bootstrap.dateparser\",[]).service(\"dateParser\",[\"$log\",\"$locale\",\"orderByFilter\",function(a,b,c){function d(a){var b=[],d=a.split(\"\");return angular.forEach(g,function(c,e){var f=a.indexOf(e);if(f>-1){a=a.split(\"\"),d[f]=\"(\"+c.regex+\")\",a[f]=\"$\";for(var g=f+1,h=f+e.length;h>g;g++)d[g]=\"\",a[g]=\"$\";a=a.join(\"\"),b.push({index:f,apply:c.apply})}}),{regex:new RegExp(\"^\"+d.join(\"\")+\"$\"),map:c(b,\"index\")}}function e(a,b,c){return 1>c?!1:1===b&&c>28?29===c&&(a%4===0&&a%100!==0||a%400===0):3===b||5===b||8===b||10===b?31>c:!0}var f=/[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;this.parsers={};var g={yyyy:{regex:\"\\\\d{4}\",apply:function(a){this.year=+a}},yy:{regex:\"\\\\d{2}\",apply:function(a){this.year=+a+2e3}},y:{regex:\"\\\\d{1,4}\",apply:function(a){this.year=+a}},MMMM:{regex:b.DATETIME_FORMATS.MONTH.join(\"|\"),apply:function(a){this.month=b.DATETIME_FORMATS.MONTH.indexOf(a)}},MMM:{regex:b.DATETIME_FORMATS.SHORTMONTH.join(\"|\"),apply:function(a){this.month=b.DATETIME_FORMATS.SHORTMONTH.indexOf(a)}},MM:{regex:\"0[1-9]|1[0-2]\",apply:function(a){this.month=a-1}},M:{regex:\"[1-9]|1[0-2]\",apply:function(a){this.month=a-1}},dd:{regex:\"[0-2][0-9]{1}|3[0-1]{1}\",apply:function(a){this.date=+a}},d:{regex:\"[1-2]?[0-9]{1}|3[0-1]{1}\",apply:function(a){this.date=+a}},EEEE:{regex:b.DATETIME_FORMATS.DAY.join(\"|\")},EEE:{regex:b.DATETIME_FORMATS.SHORTDAY.join(\"|\")},HH:{regex:\"(?:0|1)[0-9]|2[0-3]\",apply:function(a){this.hours=+a}},hh:{regex:\"0[0-9]|1[0-2]\",apply:function(a){this.hours=+a}},H:{regex:\"1?[0-9]|2[0-3]\",apply:function(a){this.hours=+a}},h:{regex:\"[0-9]|1[0-2]\",apply:function(a){this.hours=+a}},mm:{regex:\"[0-5][0-9]\",apply:function(a){this.minutes=+a}},m:{regex:\"[0-9]|[1-5][0-9]\",apply:function(a){this.minutes=+a}},sss:{regex:\"[0-9][0-9][0-9]\",apply:function(a){this.milliseconds=+a}},ss:{regex:\"[0-5][0-9]\",apply:function(a){this.seconds=+a}},s:{regex:\"[0-9]|[1-5][0-9]\",apply:function(a){this.seconds=+a}},a:{regex:b.DATETIME_FORMATS.AMPMS.join(\"|\"),apply:function(a){12===this.hours&&(this.hours=0),\"PM\"===a&&(this.hours+=12)}}};this.parse=function(c,g,h){if(!angular.isString(c)||!g)return c;g=b.DATETIME_FORMATS[g]||g,g=g.replace(f,\"\\\\$&\"),this.parsers[g]||(this.parsers[g]=d(g));var i=this.parsers[g],j=i.regex,k=i.map,l=c.match(j);if(l&&l.length){var m,n;angular.isDate(h)&&!isNaN(h.getTime())?m={year:h.getFullYear(),month:h.getMonth(),date:h.getDate(),hours:h.getHours(),minutes:h.getMinutes(),seconds:h.getSeconds(),milliseconds:h.getMilliseconds()}:(h&&a.warn(\"dateparser:\",\"baseDate is not a valid date\"),m={year:1900,month:0,date:1,hours:0,minutes:0,seconds:0,milliseconds:0});for(var o=1,p=l.length;p>o;o++){var q=k[o-1];q.apply&&q.apply.call(m,l[o])}return e(m.year,m.month,m.date)&&(n=new Date(m.year,m.month,m.date,m.hours,m.minutes,m.seconds,m.milliseconds||0)),n}}}]),angular.module(\"ui.bootstrap.position\",[]).factory(\"$position\",[\"$document\",\"$window\",function(a,b){function c(a,c){return a.currentStyle?a.currentStyle[c]:b.getComputedStyle?b.getComputedStyle(a)[c]:a.style[c]}function d(a){return\"static\"===(c(a,\"position\")||\"static\")}var e=function(b){for(var c=a[0],e=b.offsetParent||c;e&&e!==c&&d(e);)e=e.offsetParent;return e||c};return{position:function(b){var c=this.offset(b),d={top:0,left:0},f=e(b[0]);f!=a[0]&&(d=this.offset(angular.element(f)),d.top+=f.clientTop-f.scrollTop,d.left+=f.clientLeft-f.scrollLeft);var g=b[0].getBoundingClientRect();return{width:g.width||b.prop(\"offsetWidth\"),height:g.height||b.prop(\"offsetHeight\"),top:c.top-d.top,left:c.left-d.left}},offset:function(c){var d=c[0].getBoundingClientRect();return{width:d.width||c.prop(\"offsetWidth\"),height:d.height||c.prop(\"offsetHeight\"),top:d.top+(b.pageYOffset||a[0].documentElement.scrollTop),left:d.left+(b.pageXOffset||a[0].documentElement.scrollLeft)}},positionElements:function(a,b,c,d){var e,f,g,h,i=c.split(\"-\"),j=i[0],k=i[1]||\"center\";e=d?this.offset(a):this.position(a),f=b.prop(\"offsetWidth\"),g=b.prop(\"offsetHeight\");var l={center:function(){return e.left+e.width/2-f/2},left:function(){return e.left},right:function(){return e.left+e.width}},m={center:function(){return e.top+e.height/2-g/2},top:function(){return e.top},bottom:function(){return e.top+e.height}};switch(j){case\"right\":h={top:m[k](),left:l[j]()};break;case\"left\":h={top:m[k](),left:e.left-f};break;case\"bottom\":h={top:m[j](),left:l[k]()};break;default:h={top:e.top-g,left:l[k]()}}return h}}}]),angular.module(\"ui.bootstrap.datepicker\",[\"ui.bootstrap.dateparser\",\"ui.bootstrap.position\"]).value(\"$datepickerSuppressError\",!1).constant(\"datepickerConfig\",{formatDay:\"dd\",formatMonth:\"MMMM\",formatYear:\"yyyy\",formatDayHeader:\"EEE\",formatDayTitle:\"MMMM yyyy\",formatMonthTitle:\"yyyy\",datepickerMode:\"day\",minMode:\"day\",maxMode:\"year\",showWeeks:!0,startingDay:0,yearRange:20,minDate:null,maxDate:null,shortcutPropagation:!1}).controller(\"DatepickerController\",[\"$scope\",\"$attrs\",\"$parse\",\"$interpolate\",\"$log\",\"dateFilter\",\"datepickerConfig\",\"$datepickerSuppressError\",function(a,b,c,d,e,f,g,h){var i=this,j={$setViewValue:angular.noop};this.modes=[\"day\",\"month\",\"year\"],angular.forEach([\"formatDay\",\"formatMonth\",\"formatYear\",\"formatDayHeader\",\"formatDayTitle\",\"formatMonthTitle\",\"showWeeks\",\"startingDay\",\"yearRange\",\"shortcutPropagation\"],function(c,e){i[c]=angular.isDefined(b[c])?6>e?d(b[c])(a.$parent):a.$parent.$eval(b[c]):g[c]}),angular.forEach([\"minDate\",\"maxDate\"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(a){i[d]=a?new Date(a):null,i.refreshView()}):i[d]=g[d]?new Date(g[d]):null}),angular.forEach([\"minMode\",\"maxMode\"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(c){i[d]=angular.isDefined(c)?c:b[d],a[d]=i[d],(\"minMode\"==d&&i.modes.indexOf(a.datepickerMode)i.modes.indexOf(i[d]))&&(a.datepickerMode=i[d])}):(i[d]=g[d]||null,a[d]=i[d])}),a.datepickerMode=a.datepickerMode||g.datepickerMode,a.uniqueId=\"datepicker-\"+a.$id+\"-\"+Math.floor(1e4*Math.random()),angular.isDefined(b.initDate)?(this.activeDate=a.$parent.$eval(b.initDate)||new Date,a.$parent.$watch(b.initDate,function(a){a&&(j.$isEmpty(j.$modelValue)||j.$invalid)&&(i.activeDate=a,i.refreshView())})):this.activeDate=new Date,a.isActive=function(b){return 0===i.compare(b.date,i.activeDate)?(a.activeDateId=b.uid,!0):!1},this.init=function(a){j=a,j.$render=function(){i.render()}},this.render=function(){if(j.$viewValue){var a=new Date(j.$viewValue),b=!isNaN(a);b?this.activeDate=a:h||e.error('Datepicker directive: \"ng-model\" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')}this.refreshView()},this.refreshView=function(){if(this.element){this._refreshView();var a=j.$viewValue?new Date(j.$viewValue):null;j.$setValidity(\"dateDisabled\",!a||this.element&&!this.isDisabled(a))}},this.createDateObject=function(a,b){var c=j.$viewValue?new Date(j.$viewValue):null;return{date:a,label:f(a,b),selected:c&&0===this.compare(a,c),disabled:this.isDisabled(a),current:0===this.compare(a,new Date),customClass:this.customClass(a)}},this.isDisabled=function(c){return this.minDate&&this.compare(c,this.minDate)<0||this.maxDate&&this.compare(c,this.maxDate)>0||b.dateDisabled&&a.dateDisabled({date:c,mode:a.datepickerMode})},this.customClass=function(b){return a.customClass({date:b,mode:a.datepickerMode})},this.split=function(a,b){for(var c=[];a.length>0;)c.push(a.splice(0,b));return c},this.fixTimeZone=function(a){var b=a.getHours();a.setHours(23===b?b+2:0)},a.select=function(b){if(a.datepickerMode===i.minMode){var c=j.$viewValue?new Date(j.$viewValue):new Date(0,0,0,0,0,0,0);c.setFullYear(b.getFullYear(),b.getMonth(),b.getDate()),j.$setViewValue(c),j.$render()}else i.activeDate=b,a.datepickerMode=i.modes[i.modes.indexOf(a.datepickerMode)-1]},a.move=function(a){var b=i.activeDate.getFullYear()+a*(i.step.years||0),c=i.activeDate.getMonth()+a*(i.step.months||0);i.activeDate.setFullYear(b,c,1),i.refreshView()},a.toggleMode=function(b){b=b||1,a.datepickerMode===i.maxMode&&1===b||a.datepickerMode===i.minMode&&-1===b||(a.datepickerMode=i.modes[i.modes.indexOf(a.datepickerMode)+b])},a.keys={13:\"enter\",32:\"space\",33:\"pageup\",34:\"pagedown\",35:\"end\",36:\"home\",37:\"left\",38:\"up\",39:\"right\",40:\"down\"};var k=function(){i.element[0].focus()};a.$on(\"datepicker.focus\",k),a.keydown=function(b){var c=a.keys[b.which];if(c&&!b.shiftKey&&!b.altKey)if(b.preventDefault(),i.shortcutPropagation||b.stopPropagation(),\"enter\"===c||\"space\"===c){if(i.isDisabled(i.activeDate))return;a.select(i.activeDate),k()}else!b.ctrlKey||\"up\"!==c&&\"down\"!==c?(i.handleKeyDown(c,b),i.refreshView()):(a.toggleMode(\"up\"===c?1:-1),k())}}]).directive(\"datepicker\",function(){return{restrict:\"EA\",replace:!0,templateUrl:function(a,b){return b.templateUrl||\"template/datepicker/datepicker.html\"},scope:{datepickerMode:\"=?\",dateDisabled:\"&\",customClass:\"&\",shortcutPropagation:\"&?\"},require:[\"datepicker\",\"^ngModel\"],controller:\"DatepickerController\",controllerAs:\"datepicker\",link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}).directive(\"daypicker\",[\"dateFilter\",function(a){return{restrict:\"EA\",replace:!0,templateUrl:\"template/datepicker/day.html\",require:\"^datepicker\",link:function(b,c,d,e){function f(a,b){return 1!==b||a%4!==0||a%100===0&&a%400!==0?i[b]:29}function g(a,b){for(var c,d=new Array(b),f=new Date(a),g=0;b>g;)c=new Date(f),e.fixTimeZone(c),d[g++]=c,f.setDate(f.getDate()+1);return d}function h(a){var b=new Date(a);b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();return b.setMonth(0),b.setDate(1),Math.floor(Math.round((c-b)/864e5)/7)+1}b.showWeeks=e.showWeeks,e.step={months:1},e.element=c;var i=[31,28,31,30,31,30,31,31,30,31,30,31];e._refreshView=function(){var c=e.activeDate.getFullYear(),d=e.activeDate.getMonth(),f=new Date(c,d,1),i=e.startingDay-f.getDay(),j=i>0?7-i:-i,k=new Date(f);j>0&&k.setDate(-j+1);for(var l=g(k,42),m=0;42>m;m++)l[m]=angular.extend(e.createDateObject(l[m],e.formatDay),{secondary:l[m].getMonth()!==d,uid:b.uniqueId+\"-\"+m});b.labels=new Array(7);for(var n=0;7>n;n++)b.labels[n]={abbr:a(l[n].date,e.formatDayHeader),full:a(l[n].date,\"EEEE\")};if(b.title=a(e.activeDate,e.formatDayTitle),b.rows=e.split(l,7),b.showWeeks){b.weekNumbers=[];for(var o=(11-e.startingDay)%7,p=b.rows.length,q=0;p>q;q++)b.weekNumbers.push(h(b.rows[q][o].date))}},e.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate())-new Date(b.getFullYear(),b.getMonth(),b.getDate())},e.handleKeyDown=function(a,b){var c=e.activeDate.getDate();if(\"left\"===a)c-=1;else if(\"up\"===a)c-=7;else if(\"right\"===a)c+=1;else if(\"down\"===a)c+=7;else if(\"pageup\"===a||\"pagedown\"===a){var d=e.activeDate.getMonth()+(\"pageup\"===a?-1:1);e.activeDate.setMonth(d,1),c=Math.min(f(e.activeDate.getFullYear(),e.activeDate.getMonth()),c)}else\"home\"===a?c=1:\"end\"===a&&(c=f(e.activeDate.getFullYear(),e.activeDate.getMonth()));e.activeDate.setDate(c)},e.refreshView()}}}]).directive(\"monthpicker\",[\"dateFilter\",function(a){return{restrict:\"EA\",replace:!0,templateUrl:\"template/datepicker/month.html\",require:\"^datepicker\",link:function(b,c,d,e){e.step={years:1},e.element=c,e._refreshView=function(){for(var c,d=new Array(12),f=e.activeDate.getFullYear(),g=0;12>g;g++)c=new Date(f,g,1),e.fixTimeZone(c),d[g]=angular.extend(e.createDateObject(c,e.formatMonth),{uid:b.uniqueId+\"-\"+g});b.title=a(e.activeDate,e.formatMonthTitle),b.rows=e.split(d,3)},e.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth())-new Date(b.getFullYear(),b.getMonth())},e.handleKeyDown=function(a,b){var c=e.activeDate.getMonth();if(\"left\"===a)c-=1;else if(\"up\"===a)c-=3;else if(\"right\"===a)c+=1;else if(\"down\"===a)c+=3;else if(\"pageup\"===a||\"pagedown\"===a){var d=e.activeDate.getFullYear()+(\"pageup\"===a?-1:1);e.activeDate.setFullYear(d)}else\"home\"===a?c=0:\"end\"===a&&(c=11);e.activeDate.setMonth(c)},e.refreshView()}}}]).directive(\"yearpicker\",[\"dateFilter\",function(a){return{restrict:\"EA\",replace:!0,templateUrl:\"template/datepicker/year.html\",require:\"^datepicker\",link:function(a,b,c,d){function e(a){return parseInt((a-1)/f,10)*f+1}var f=d.yearRange;d.step={years:f},d.element=b,d._refreshView=function(){for(var b,c=new Array(f),g=0,h=e(d.activeDate.getFullYear());f>g;g++)b=new Date(h+g,0,1),d.fixTimeZone(b),c[g]=angular.extend(d.createDateObject(b,d.formatYear),{uid:a.uniqueId+\"-\"+g});a.title=[c[0].label,c[f-1].label].join(\" - \"),a.rows=d.split(c,5)},d.compare=function(a,b){return a.getFullYear()-b.getFullYear()},d.handleKeyDown=function(a,b){var c=d.activeDate.getFullYear();\"left\"===a?c-=1:\"up\"===a?c-=5:\"right\"===a?c+=1:\"down\"===a?c+=5:\"pageup\"===a||\"pagedown\"===a?c+=(\"pageup\"===a?-1:1)*d.step.years:\"home\"===a?c=e(d.activeDate.getFullYear()):\"end\"===a&&(c=e(d.activeDate.getFullYear())+f-1),d.activeDate.setFullYear(c)},d.refreshView()}}}]).constant(\"datepickerPopupConfig\",{datepickerPopup:\"yyyy-MM-dd\",datepickerPopupTemplateUrl:\"template/datepicker/popup.html\",datepickerTemplateUrl:\"template/datepicker/datepicker.html\",html5Types:{date:\"yyyy-MM-dd\",\"datetime-local\":\"yyyy-MM-ddTHH:mm:ss.sss\",month:\"yyyy-MM\"},currentText:\"Today\",clearText:\"Clear\",closeText:\"Done\",closeOnDateSelection:!0,appendToBody:!1,showButtonBar:!0,onOpenFocus:!0}).directive(\"datepickerPopup\",[\"$compile\",\"$parse\",\"$document\",\"$rootScope\",\"$position\",\"dateFilter\",\"dateParser\",\"datepickerPopupConfig\",\"$timeout\",function(a,b,c,d,e,f,g,h,i){return{restrict:\"EA\",require:\"ngModel\",scope:{isOpen:\"=?\",currentText:\"@\",clearText:\"@\",closeText:\"@\",dateDisabled:\"&\",customClass:\"&\"},link:function(j,k,l,m){function n(a){return a.replace(/([A-Z])/g,function(a){return\"-\"+a.toLowerCase()})}function o(a){if(angular.isNumber(a)&&(a=new Date(a)),a){if(angular.isDate(a)&&!isNaN(a))return a;if(angular.isString(a)){var b=g.parse(a,q,j.date);return isNaN(b)?void 0:b}return void 0}return null}function p(a,b){var c=a||b;if(!l.ngRequired&&!c)return!0;if(angular.isNumber(c)&&(c=new Date(c)),c){if(angular.isDate(c)&&!isNaN(c))return!0;if(angular.isString(c)){var d=g.parse(c,q);return!isNaN(d)}return!1}return!0}var q,r=angular.isDefined(l.closeOnDateSelection)?j.$parent.$eval(l.closeOnDateSelection):h.closeOnDateSelection,s=angular.isDefined(l.datepickerAppendToBody)?j.$parent.$eval(l.datepickerAppendToBody):h.appendToBody,t=angular.isDefined(l.onOpenFocus)?j.$parent.$eval(l.onOpenFocus):h.onOpenFocus,u=angular.isDefined(l.datepickerPopupTemplateUrl)?l.datepickerPopupTemplateUrl:h.datepickerPopupTemplateUrl,v=angular.isDefined(l.datepickerTemplateUrl)?l.datepickerTemplateUrl:h.datepickerTemplateUrl,w={};j.showButtonBar=angular.isDefined(l.showButtonBar)?j.$parent.$eval(l.showButtonBar):h.showButtonBar,j.getText=function(a){return j[a+\"Text\"]||h[a+\"Text\"]},j.isDisabled=function(a){return\"today\"===a&&(a=new Date),j.watchData.minDate&&j.compare(a,w.minDate)<0||j.watchData.maxDate&&j.compare(a,w.maxDate)>0},j.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate())-new Date(b.getFullYear(),b.getMonth(),b.getDate())};var x=!1;if(h.html5Types[l.type]?(q=h.html5Types[l.type],x=!0):(q=l.datepickerPopup||h.datepickerPopup,l.$observe(\"datepickerPopup\",function(a,b){var c=a||h.datepickerPopup;if(c!==q&&(q=c,m.$modelValue=null,!q))throw new Error(\"datepickerPopup must have a date format specified.\")})),!q)throw new Error(\"datepickerPopup must have a date format specified.\");if(x&&l.datepickerPopup)throw new Error(\"HTML5 date input types do not support custom formats.\");var y=angular.element(\"
      \");y.attr({\"ng-model\":\"date\",\"ng-change\":\"dateSelection(date)\",\"template-url\":u});var z=angular.element(y.children()[0]);if(z.attr(\"template-url\",v),x&&\"month\"===l.type&&(z.attr(\"datepicker-mode\",'\"month\"'),z.attr(\"min-mode\",\"month\")),l.datepickerOptions){var A=j.$parent.$eval(l.datepickerOptions);A&&A.initDate&&(j.initDate=A.initDate,z.attr(\"init-date\",\"initDate\"),delete A.initDate),angular.forEach(A,function(a,b){z.attr(n(b),a)})}j.watchData={},angular.forEach([\"minMode\",\"maxMode\",\"minDate\",\"maxDate\",\"datepickerMode\",\"initDate\",\"shortcutPropagation\"],function(a){if(l[a]){var c=b(l[a]);if(j.$parent.$watch(c,function(b){j.watchData[a]=b,(\"minDate\"===a||\"maxDate\"===a)&&(w[a]=new Date(b))}),z.attr(n(a),\"watchData.\"+a),\"datepickerMode\"===a){var d=c.assign;j.$watch(\"watchData.\"+a,function(a,b){angular.isFunction(d)&&a!==b&&d(j.$parent,a)})}}}),l.dateDisabled&&z.attr(\"date-disabled\",\"dateDisabled({ date: date, mode: mode })\"),l.showWeeks&&z.attr(\"show-weeks\",l.showWeeks),l.customClass&&z.attr(\"custom-class\",\"customClass({ date: date, mode: mode })\"),x?m.$formatters.push(function(a){return j.date=a,a}):(m.$$parserName=\"date\",m.$validators.date=p,m.$parsers.unshift(o),m.$formatters.push(function(a){return j.date=a,m.$isEmpty(a)?a:f(a,q)})),j.dateSelection=function(a){angular.isDefined(a)&&(j.date=a);var b=j.date?f(j.date,q):null;k.val(b),m.$setViewValue(b),r&&(j.isOpen=!1,k[0].focus())},m.$viewChangeListeners.push(function(){j.date=g.parse(m.$viewValue,q,j.date)});var B=function(a){!j.isOpen||k[0].contains(a.target)||y[0].contains(a.target)||j.$apply(function(){j.isOpen=!1})},C=function(a){27===a.which&&j.isOpen?(a.preventDefault(),a.stopPropagation(),j.$apply(function(){j.isOpen=!1}),k[0].focus()):40!==a.which||j.isOpen||(a.preventDefault(),a.stopPropagation(),j.$apply(function(){j.isOpen=!0}))};k.bind(\"keydown\",C),j.keydown=function(a){27===a.which&&(j.isOpen=!1,k[0].focus())},j.$watch(\"isOpen\",function(a){a?(j.position=s?e.offset(k):e.position(k),j.position.top=j.position.top+k.prop(\"offsetHeight\"),i(function(){t&&j.$broadcast(\"datepicker.focus\"),c.bind(\"click\",B)},0,!1)):c.unbind(\"click\",B)}),j.select=function(a){if(\"today\"===a){var b=new Date;angular.isDate(j.date)?(a=new Date(j.date),a.setFullYear(b.getFullYear(),b.getMonth(),b.getDate())):a=new Date(b.setHours(0,0,0,0))}j.dateSelection(a)},j.close=function(){j.isOpen=!1,k[0].focus()};var D=a(y)(j);y.remove(),s?c.find(\"body\").append(D):k.after(D),j.$on(\"$destroy\",function(){j.isOpen===!0&&(d.$$phase||j.$apply(function(){j.isOpen=!1})),D.remove(),k.unbind(\"keydown\",C),c.unbind(\"click\",B)})}}}]).directive(\"datepickerPopupWrap\",function(){return{restrict:\"EA\",replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||\"template/datepicker/popup.html\"}}}),angular.module(\"ui.bootstrap.dropdown\",[\"ui.bootstrap.position\"]).constant(\"dropdownConfig\",{openClass:\"open\"}).service(\"dropdownService\",[\"$document\",\"$rootScope\",function(a,b){var c=null;this.open=function(b){c||(a.bind(\"click\",d),a.bind(\"keydown\",e)),c&&c!==b&&(c.isOpen=!1),c=b},this.close=function(b){c===b&&(c=null,a.unbind(\"click\",d),a.unbind(\"keydown\",e))};var d=function(a){if(c&&(!a||\"disabled\"!==c.getAutoClose())){var d=c.getToggleElement();if(!(a&&d&&d[0].contains(a.target))){var e=c.getDropdownElement();a&&\"outsideClick\"===c.getAutoClose()&&e&&e[0].contains(a.target)||(c.isOpen=!1,b.$$phase||c.$apply())}}},e=function(a){27===a.which?(c.focusToggleElement(),d()):c.isKeynavEnabled()&&/(38|40)/.test(a.which)&&c.isOpen&&(a.preventDefault(),a.stopPropagation(),c.focusDropdownEntry(a.which))}}]).controller(\"DropdownController\",[\"$scope\",\"$attrs\",\"$parse\",\"dropdownConfig\",\"dropdownService\",\"$animate\",\"$position\",\"$document\",\"$compile\",\"$templateRequest\",function(a,b,c,d,e,f,g,h,i,j){var k,l,m=this,n=a.$new(),o=d.openClass,p=angular.noop,q=b.onToggle?c(b.onToggle):angular.noop,r=!1,s=!1,t=h.find(\"body\");this.init=function(d){m.$element=d,b.isOpen&&(l=c(b.isOpen),p=l.assign,a.$watch(l,function(a){n.isOpen=!!a})),r=angular.isDefined(b.dropdownAppendToBody),s=angular.isDefined(b.keyboardNav),r&&m.dropdownMenu&&(t.append(m.dropdownMenu),t.addClass(\"dropdown\"),d.on(\"$destroy\",function(){m.dropdownMenu.remove()}))},this.toggle=function(a){return n.isOpen=arguments.length?!!a:!n.isOpen},this.isOpen=function(){return n.isOpen},n.getToggleElement=function(){return m.toggleElement},n.getAutoClose=function(){return b.autoClose||\"always\"},n.getElement=function(){return m.$element},n.isKeynavEnabled=function(){return s},n.focusDropdownEntry=function(a){var b=m.dropdownMenu?angular.element(m.dropdownMenu).find(\"a\"):angular.element(m.$element).find(\"ul\").eq(0).find(\"a\");switch(a){case 40:angular.isNumber(m.selectedOption)?m.selectedOption=m.selectedOption===b.length-1?m.selectedOption:m.selectedOption+1:m.selectedOption=0;break;case 38:angular.isNumber(m.selectedOption)?m.selectedOption=0===m.selectedOption?0:m.selectedOption-1:m.selectedOption=b.length-1}b[m.selectedOption].focus()},n.getDropdownElement=function(){return m.dropdownMenu},n.focusToggleElement=function(){m.toggleElement&&m.toggleElement[0].focus()},n.$watch(\"isOpen\",function(b,c){if(r&&m.dropdownMenu){var d=g.positionElements(m.$element,m.dropdownMenu,\"bottom-left\",!0),h={top:d.top+\"px\",display:b?\"block\":\"none\"},l=m.dropdownMenu.hasClass(\"dropdown-menu-right\");l?(h.left=\"auto\",h.right=window.innerWidth-(d.left+m.$element.prop(\"offsetWidth\"))+\"px\"):(h.left=d.left+\"px\",h.right=\"auto\"),m.dropdownMenu.css(h)}var s=r?t:m.$element;if(f[b?\"addClass\":\"removeClass\"](s,o).then(function(){angular.isDefined(b)&&b!==c&&q(a,{open:!!b})}),b)m.dropdownMenuTemplateUrl&&j(m.dropdownMenuTemplateUrl).then(function(a){k=n.$new(),i(a.trim())(k,function(a){var b=a;m.dropdownMenu.replaceWith(b),m.dropdownMenu=b})}),n.focusToggleElement(),e.open(n);else{if(m.dropdownMenuTemplateUrl){k&&k.$destroy();var u=angular.element('
        ');m.dropdownMenu.replaceWith(u),m.dropdownMenu=u}e.close(n),m.selectedOption=null}angular.isFunction(p)&&p(a,b)}),a.$on(\"$locationChangeSuccess\",function(){\"disabled\"!==n.getAutoClose()&&(n.isOpen=!1)});var u=a.$on(\"$destroy\",function(){n.$destroy()});n.$on(\"$destroy\",u)}]).directive(\"dropdown\",function(){return{controller:\"DropdownController\",link:function(a,b,c,d){d.init(b),b.addClass(\"dropdown\")}}}).directive(\"dropdownMenu\",function(){return{restrict:\"AC\",require:\"?^dropdown\",link:function(a,b,c,d){if(d){var e=c.templateUrl;e&&(d.dropdownMenuTemplateUrl=e),d.dropdownMenu||(d.dropdownMenu=b)}}}}).directive(\"keyboardNav\",function(){return{restrict:\"A\",require:\"?^dropdown\",link:function(a,b,c,d){b.bind(\"keydown\",function(a){if(-1!==[38,40].indexOf(a.which)){a.preventDefault(),a.stopPropagation();var b=d.dropdownMenu.find(\"a\");switch(a.which){case 40:angular.isNumber(d.selectedOption)?d.selectedOption=d.selectedOption===b.length-1?d.selectedOption:d.selectedOption+1:d.selectedOption=0;break;case 38:angular.isNumber(d.selectedOption)?d.selectedOption=0===d.selectedOption?0:d.selectedOption-1:d.selectedOption=b.length-1}b[d.selectedOption].focus()}})}}}).directive(\"dropdownToggle\",function(){return{require:\"?^dropdown\",link:function(a,b,c,d){if(d){b.addClass(\"dropdown-toggle\"),d.toggleElement=b;var e=function(e){e.preventDefault(),\r\nb.hasClass(\"disabled\")||c.disabled||a.$apply(function(){d.toggle()})};b.bind(\"click\",e),b.attr({\"aria-haspopup\":!0,\"aria-expanded\":!1}),a.$watch(d.isOpen,function(a){b.attr(\"aria-expanded\",!!a)}),a.$on(\"$destroy\",function(){b.unbind(\"click\",e)})}}}}),angular.module(\"ui.bootstrap.modal\",[]).factory(\"$$stackedMap\",function(){return{createNew:function(){var a=[];return{add:function(b,c){a.push({key:b,value:c})},get:function(b){for(var c=0;c=0&&!p){q=e.$new(!0),q.index=i;var k=angular.element('
        ');k.attr(\"backdrop-class\",b.backdropClass),b.animation&&k.attr(\"modal-animation\",\"true\"),p=d(k)(q),h.append(p)}var l=angular.element('
        ');l.attr({\"template-url\":b.windowTemplateUrl,\"window-class\":b.windowClass,size:b.size,index:t.length()-1,animate:\"animate\"}).html(b.content),b.animation&&l.attr(\"modal-animation\",\"true\");var m=d(l)(b.scope);t.top().value.modalDomEl=m,t.top().value.modalOpener=f,h.append(m),h.addClass(g),v.clearFocusListCache()},v.close=function(a,b){var c=t.get(a);return c&&n(c,b,!0)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.resolve(b),k(a,c.value.modalOpener),!0):!c},v.dismiss=function(a,b){var c=t.get(a);return c&&n(c,b,!1)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.reject(b),k(a,c.value.modalOpener),!0):!c},v.dismissAll=function(a){for(var b=this.getTop();b&&this.dismiss(b.key,a);)b=this.getTop()},v.getTop=function(){return t.top()},v.modalRendered=function(a){var b=t.get(a);b&&b.value.renderDeferred.resolve()},v.focusFirstFocusableElement=function(){return r.length>0?(r[0].focus(),!0):!1},v.focusLastFocusableElement=function(){return r.length>0?(r[r.length-1].focus(),!0):!1},v.isFocusInFirstItem=function(a){return r.length>0?(a.target||a.srcElement)==r[0]:!1},v.isFocusInLastItem=function(a){return r.length>0?(a.target||a.srcElement)==r[r.length-1]:!1},v.clearFocusListCache=function(){r=[],w=0},v.loadFocusElementList=function(a){if((void 0===r||!r.length0)&&a){var b=a.value.modalDomEl;b&&b.length&&(r=b[0].querySelectorAll(x))}},v}]).provider(\"$modal\",function(){var a={options:{animation:!0,backdrop:!0,keyboard:!0},$get:[\"$injector\",\"$rootScope\",\"$q\",\"$templateRequest\",\"$controller\",\"$modalStack\",function(b,c,d,e,f,g){function h(a){return a.template?d.when(a.template):e(angular.isFunction(a.templateUrl)?a.templateUrl():a.templateUrl)}function i(a){var c=[];return angular.forEach(a,function(a){angular.isFunction(a)||angular.isArray(a)?c.push(d.when(b.invoke(a))):angular.isString(a)?c.push(d.when(b.get(a))):c.push(d.when(a))}),c}var j={},k=null;return j.getPromiseChain=function(){return k},j.open=function(b){var e=d.defer(),j=d.defer(),l=d.defer(),m={result:e.promise,opened:j.promise,rendered:l.promise,close:function(a){return g.close(m,a)},dismiss:function(a){return g.dismiss(m,a)}};if(b=angular.extend({},a.options,b),b.resolve=b.resolve||{},!b.template&&!b.templateUrl)throw new Error(\"One of template or templateUrl options is required.\");var n,o=d.all([h(b)].concat(i(b.resolve)));return n=k=d.all([k]).then(function(){return o},function(){return o}).then(function(a){var d=(b.scope||c).$new();d.$close=m.close,d.$dismiss=m.dismiss,d.$on(\"$destroy\",function(){d.$$uibDestructionScheduled||d.$dismiss(\"$uibUnscheduledDestruction\")});var h,i={},k=1;b.controller&&(i.$scope=d,i.$modalInstance=m,angular.forEach(b.resolve,function(b,c){i[c]=a[k++]}),h=f(b.controller,i),b.controllerAs&&(b.bindToController&&angular.extend(h,d),d[b.controllerAs]=h)),g.open(m,{scope:d,deferred:e,renderDeferred:l,content:a[0],animation:b.animation,backdrop:b.backdrop,keyboard:b.keyboard,backdropClass:b.backdropClass,windowClass:b.windowClass,windowTemplateUrl:b.windowTemplateUrl,size:b.size,openedClass:b.openedClass}),j.resolve(!0)},function(a){j.reject(a),e.reject(a)})[\"finally\"](function(){k===n&&(k=null)}),m},j}]};return a}),angular.module(\"ui.bootstrap.pagination\",[]).controller(\"PaginationController\",[\"$scope\",\"$attrs\",\"$parse\",function(a,b,c){var d=this,e={$setViewValue:angular.noop},f=b.numPages?c(b.numPages).assign:angular.noop;this.init=function(g,h){e=g,this.config=h,e.$render=function(){d.render()},b.itemsPerPage?a.$parent.$watch(c(b.itemsPerPage),function(b){d.itemsPerPage=parseInt(b,10),a.totalPages=d.calculateTotalPages()}):this.itemsPerPage=h.itemsPerPage,a.$watch(\"totalItems\",function(){a.totalPages=d.calculateTotalPages()}),a.$watch(\"totalPages\",function(b){f(a.$parent,b),a.page>b?a.selectPage(b):e.$render()})},this.calculateTotalPages=function(){var b=this.itemsPerPage<1?1:Math.ceil(a.totalItems/this.itemsPerPage);return Math.max(b||0,1)},this.render=function(){a.page=parseInt(e.$viewValue,10)||1},a.selectPage=function(b,c){c&&c.preventDefault();var d=!a.ngDisabled||!c;d&&a.page!==b&&b>0&&b<=a.totalPages&&(c&&c.target&&c.target.blur(),e.$setViewValue(b),e.$render())},a.getText=function(b){return a[b+\"Text\"]||d.config[b+\"Text\"]},a.noPrevious=function(){return 1===a.page},a.noNext=function(){return a.page===a.totalPages}}]).constant(\"paginationConfig\",{itemsPerPage:10,boundaryLinks:!1,directionLinks:!0,firstText:\"First\",previousText:\"Previous\",nextText:\"Next\",lastText:\"Last\",rotate:!0}).directive(\"pagination\",[\"$parse\",\"paginationConfig\",function(a,b){return{restrict:\"EA\",scope:{totalItems:\"=\",firstText:\"@\",previousText:\"@\",nextText:\"@\",lastText:\"@\",ngDisabled:\"=\"},require:[\"pagination\",\"?ngModel\"],controller:\"PaginationController\",controllerAs:\"pagination\",templateUrl:function(a,b){return b.templateUrl||\"template/pagination/pagination.html\"},replace:!0,link:function(c,d,e,f){function g(a,b,c){return{number:a,text:b,active:c}}function h(a,b){var c=[],d=1,e=b,f=angular.isDefined(k)&&b>k;f&&(l?(d=Math.max(a-Math.floor(k/2),1),e=d+k-1,e>b&&(e=b,d=e-k+1)):(d=(Math.ceil(a/k)-1)*k+1,e=Math.min(d+k-1,b)));for(var h=d;e>=h;h++){var i=g(h,h,h===a);c.push(i)}if(f&&!l){if(d>1){var j=g(d-1,\"...\",!1);c.unshift(j)}if(b>e){var m=g(e+1,\"...\",!1);c.push(m)}}return c}var i=f[0],j=f[1];if(j){var k=angular.isDefined(e.maxSize)?c.$parent.$eval(e.maxSize):b.maxSize,l=angular.isDefined(e.rotate)?c.$parent.$eval(e.rotate):b.rotate;c.boundaryLinks=angular.isDefined(e.boundaryLinks)?c.$parent.$eval(e.boundaryLinks):b.boundaryLinks,c.directionLinks=angular.isDefined(e.directionLinks)?c.$parent.$eval(e.directionLinks):b.directionLinks,i.init(j,b),e.maxSize&&c.$parent.$watch(a(e.maxSize),function(a){k=parseInt(a,10),i.render()});var m=i.render;i.render=function(){m(),c.page>0&&c.page<=c.totalPages&&(c.pages=h(c.page,c.totalPages))}}}}}]).constant(\"pagerConfig\",{itemsPerPage:10,previousText:\"« Previous\",nextText:\"Next »\",align:!0}).directive(\"pager\",[\"pagerConfig\",function(a){return{restrict:\"EA\",scope:{totalItems:\"=\",previousText:\"@\",nextText:\"@\",ngDisabled:\"=\"},require:[\"pager\",\"?ngModel\"],controller:\"PaginationController\",controllerAs:\"pagination\",templateUrl:function(a,b){return b.templateUrl||\"template/pagination/pager.html\"},replace:!0,link:function(b,c,d,e){var f=e[0],g=e[1];g&&(b.align=angular.isDefined(d.align)?b.$parent.$eval(d.align):a.align,f.init(g,a))}}}]),angular.module(\"ui.bootstrap.tooltip\",[\"ui.bootstrap.position\",\"ui.bootstrap.bindHtml\"]).provider(\"$tooltip\",function(){function a(a){var b=/[A-Z]/g,c=\"-\";return a.replace(b,function(a,b){return(b?c:\"\")+a.toLowerCase()})}var b={placement:\"top\",animation:!0,popupDelay:0,useContentExp:!1},c={mouseenter:\"mouseleave\",click:\"click\",focus:\"blur\",none:\"\"},d={};this.options=function(a){angular.extend(d,a)},this.setTriggers=function(a){angular.extend(c,a)},this.$get=[\"$window\",\"$compile\",\"$timeout\",\"$document\",\"$position\",\"$interpolate\",\"$rootScope\",\"$parse\",function(e,f,g,h,i,j,k,l){return function(e,m,n,o){function p(a){var b=(a||o.trigger||n).split(\" \"),d=b.map(function(a){return c[a]||a});return{show:b,hide:d}}o=angular.extend({},b,d,o);var q=a(e),r=j.startSymbol(),s=j.endSymbol(),t=\"
        ';return{restrict:\"EA\",compile:function(a,b){var c=f(t);return function(a,b,d,f){function j(){I.isOpen?q():n()}function n(){(!H||a.$eval(d[m+\"Enable\"]))&&(v(),I.popupDelay?D||(D=g(r,I.popupDelay,!1)):r())}function q(){s(),k.$$phase||k.$digest()}function r(){return D=null,C&&(g.cancel(C),C=null),(o.useContentExp?I.contentExp():I.content)?(t(),I.isOpen=!0,K&&K.assign(I.origScope,I.isOpen),k.$$phase||I.$apply(),A.css({display:\"block\"}),void L()):angular.noop}function s(){I.isOpen=!1,K&&K.assign(I.origScope,I.isOpen),g.cancel(D),D=null,g.cancel(E),E=null,I.animation?C||(C=g(u,500)):u()}function t(){A&&u(),B=I.$new(),A=c(B,function(a){F?h.find(\"body\").append(a):b.after(a)}),o.useContentExp&&(B.$watch(\"contentExp()\",function(a){!a&&I.isOpen&&s()}),B.$watch(function(){J||(J=!0,B.$$postDigest(function(){J=!1,I.isOpen&&L()}))}))}function u(){C=null,A&&(A.remove(),A=null),B&&(B.$destroy(),B=null)}function v(){w(),x(),y()}function w(){I.popupClass=d[m+\"Class\"]}function x(){var a=d[m+\"Placement\"];I.placement=angular.isDefined(a)?a:o.placement}function y(){var a=d[m+\"PopupDelay\"],b=parseInt(a,10);I.popupDelay=isNaN(b)?o.popupDelay:b}function z(){var a=d[m+\"Trigger\"];M(),G=p(a),\"none\"!==G.show&&G.show.forEach(function(a,c){a===G.hide[c]?b[0].addEventListener(a,j):a&&(b[0].addEventListener(a,n),b[0].addEventListener(G.hide[c],q))})}var A,B,C,D,E,F=angular.isDefined(o.appendToBody)?o.appendToBody:!1,G=p(void 0),H=angular.isDefined(d[m+\"Enable\"]),I=a.$new(!0),J=!1,K=angular.isDefined(d[m+\"IsOpen\"])?l(d[m+\"IsOpen\"]):!1,L=function(){A&&(E||(E=g(function(){A.css({top:0,left:0,width:\"auto\",height:\"auto\"});var a=i.position(A),c=i.positionElements(b,A,I.placement,F);c.top+=\"px\",c.left+=\"px\",c.width=a.width+\"px\",c.height=a.height+\"px\",A.css(c),E=null},0,!1)))};I.origScope=a,I.isOpen=!1,I.contentExp=function(){return a.$eval(d[e])},o.useContentExp||d.$observe(e,function(a){I.content=a,!a&&I.isOpen?s():L()}),d.$observe(\"disabled\",function(a){D&&a&&(g.cancel(D),D=null),a&&I.isOpen&&s()}),d.$observe(m+\"Title\",function(a){I.title=a,L()}),d.$observe(m+\"Placement\",function(){I.isOpen&&(x(),L())}),K&&a.$watch(K,function(a){a!==I.isOpen&&j()});var M=function(){G.show.forEach(function(a){b.unbind(a,n)}),G.hide.forEach(function(a){b.unbind(a,q)})};z();var N=a.$eval(d[m+\"Animation\"]);I.animation=angular.isDefined(N)?!!N:o.animation;var O=a.$eval(d[m+\"AppendToBody\"]);F=angular.isDefined(O)?O:F,F&&a.$on(\"$locationChangeSuccess\",function(){I.isOpen&&s()}),a.$on(\"$destroy\",function(){g.cancel(C),g.cancel(D),g.cancel(E),M(),u(),I=null})}}}}}]}).directive(\"tooltipTemplateTransclude\",[\"$animate\",\"$sce\",\"$compile\",\"$templateRequest\",function(a,b,c,d){return{link:function(e,f,g){var h,i,j,k=e.$eval(g.tooltipTemplateTranscludeScope),l=0,m=function(){i&&(i.remove(),i=null),h&&(h.$destroy(),h=null),j&&(a.leave(j).then(function(){i=null}),i=j,j=null)};e.$watch(b.parseAsResourceUrl(g.tooltipTemplateTransclude),function(b){var g=++l;b?(d(b,!0).then(function(d){if(g===l){var e=k.$new(),i=d,n=c(i)(e,function(b){m(),a.enter(b,f)});h=e,j=n,h.$emit(\"$includeContentLoaded\",b)}},function(){g===l&&(m(),e.$emit(\"$includeContentError\",b))}),e.$emit(\"$includeContentRequested\",b)):m()}),e.$on(\"$destroy\",m)}}}]).directive(\"tooltipClasses\",function(){return{restrict:\"A\",link:function(a,b,c){a.placement&&b.addClass(a.placement),a.popupClass&&b.addClass(a.popupClass),a.animation()&&b.addClass(c.tooltipAnimationClass)}}}).directive(\"tooltipPopup\",function(){return{restrict:\"EA\",replace:!0,scope:{content:\"@\",placement:\"@\",popupClass:\"@\",animation:\"&\",isOpen:\"&\"},templateUrl:\"template/tooltip/tooltip-popup.html\"}}).directive(\"tooltip\",[\"$tooltip\",function(a){return a(\"tooltip\",\"tooltip\",\"mouseenter\")}]).directive(\"tooltipTemplatePopup\",function(){return{restrict:\"EA\",replace:!0,scope:{contentExp:\"&\",placement:\"@\",popupClass:\"@\",animation:\"&\",isOpen:\"&\",originScope:\"&\"},templateUrl:\"template/tooltip/tooltip-template-popup.html\"}}).directive(\"tooltipTemplate\",[\"$tooltip\",function(a){return a(\"tooltipTemplate\",\"tooltip\",\"mouseenter\",{useContentExp:!0})}]).directive(\"tooltipHtmlPopup\",function(){return{restrict:\"EA\",replace:!0,scope:{contentExp:\"&\",placement:\"@\",popupClass:\"@\",animation:\"&\",isOpen:\"&\"},templateUrl:\"template/tooltip/tooltip-html-popup.html\"}}).directive(\"tooltipHtml\",[\"$tooltip\",function(a){return a(\"tooltipHtml\",\"tooltip\",\"mouseenter\",{useContentExp:!0})}]).directive(\"tooltipHtmlUnsafePopup\",function(){return{restrict:\"EA\",replace:!0,scope:{content:\"@\",placement:\"@\",popupClass:\"@\",animation:\"&\",isOpen:\"&\"},templateUrl:\"template/tooltip/tooltip-html-unsafe-popup.html\"}}).value(\"tooltipHtmlUnsafeSuppressDeprecated\",!1).directive(\"tooltipHtmlUnsafe\",[\"$tooltip\",\"tooltipHtmlUnsafeSuppressDeprecated\",\"$log\",function(a,b,c){return b||c.warn(\"tooltip-html-unsafe is now deprecated. Use tooltip-html or tooltip-template instead.\"),a(\"tooltipHtmlUnsafe\",\"tooltip\",\"mouseenter\")}]),angular.module(\"ui.bootstrap.popover\",[\"ui.bootstrap.tooltip\"]).directive(\"popoverTemplatePopup\",function(){return{restrict:\"EA\",replace:!0,scope:{title:\"@\",contentExp:\"&\",placement:\"@\",popupClass:\"@\",animation:\"&\",isOpen:\"&\",originScope:\"&\"},templateUrl:\"template/popover/popover-template.html\"}}).directive(\"popoverTemplate\",[\"$tooltip\",function(a){return a(\"popoverTemplate\",\"popover\",\"click\",{useContentExp:!0})}]).directive(\"popoverHtmlPopup\",function(){return{restrict:\"EA\",replace:!0,scope:{contentExp:\"&\",title:\"@\",placement:\"@\",popupClass:\"@\",animation:\"&\",isOpen:\"&\"},templateUrl:\"template/popover/popover-html.html\"}}).directive(\"popoverHtml\",[\"$tooltip\",function(a){return a(\"popoverHtml\",\"popover\",\"click\",{useContentExp:!0})}]).directive(\"popoverPopup\",function(){return{restrict:\"EA\",replace:!0,scope:{title:\"@\",content:\"@\",placement:\"@\",popupClass:\"@\",animation:\"&\",isOpen:\"&\"},templateUrl:\"template/popover/popover.html\"}}).directive(\"popover\",[\"$tooltip\",function(a){return a(\"popover\",\"popover\",\"click\")}]),angular.module(\"ui.bootstrap.progressbar\",[]).constant(\"progressConfig\",{animate:!0,max:100}).value(\"$progressSuppressWarning\",!1).controller(\"ProgressController\",[\"$scope\",\"$attrs\",\"progressConfig\",function(a,b,c){var d=this,e=angular.isDefined(b.animate)?a.$parent.$eval(b.animate):c.animate;this.bars=[],a.max=angular.isDefined(a.max)?a.max:c.max,this.addBar=function(b,c){e||c.css({transition:\"none\"}),this.bars.push(b),b.max=a.max,b.$watch(\"value\",function(a){b.recalculatePercentage()}),b.recalculatePercentage=function(){b.percent=+(100*b.value/b.max).toFixed(2);var a=d.bars.reduce(function(a,b){return a+b.percent},0);a>100&&(b.percent-=a-100)},b.$on(\"$destroy\",function(){c=null,d.removeBar(b)})},this.removeBar=function(a){this.bars.splice(this.bars.indexOf(a),1)},a.$watch(\"max\",function(b){d.bars.forEach(function(b){b.max=a.max,b.recalculatePercentage()})})}]).directive(\"uibProgress\",function(){return{restrict:\"EA\",replace:!0,transclude:!0,controller:\"ProgressController\",require:\"uibProgress\",scope:{max:\"=?\"},templateUrl:\"template/progressbar/progress.html\"}}).directive(\"progress\",[\"$log\",\"$progressSuppressWarning\",function(a,b){return{restrict:\"EA\",replace:!0,transclude:!0,controller:\"ProgressController\",require:\"progress\",scope:{max:\"=?\"},templateUrl:\"template/progressbar/progress.html\",link:function(){b&&a.warn(\"progress is now deprecated. Use uib-progress instead\")}}}]).directive(\"uibBar\",function(){return{restrict:\"EA\",replace:!0,transclude:!0,require:\"^uibProgress\",scope:{value:\"=\",type:\"@\"},templateUrl:\"template/progressbar/bar.html\",link:function(a,b,c,d){d.addBar(a,b)}}}).directive(\"bar\",[\"$log\",\"$progressSuppressWarning\",function(a,b){return{restrict:\"EA\",replace:!0,transclude:!0,require:\"^progress\",scope:{value:\"=\",type:\"@\"},templateUrl:\"template/progressbar/bar.html\",link:function(c,d,e,f){b&&a.warn(\"bar is now deprecated. Use uib-bar instead\"),f.addBar(c,d)}}}]).directive(\"progressbar\",function(){return{restrict:\"EA\",replace:!0,transclude:!0,controller:\"ProgressController\",scope:{value:\"=\",max:\"=?\",type:\"@\"},templateUrl:\"template/progressbar/progressbar.html\",link:function(a,b,c,d){d.addBar(a,angular.element(b.children()[0]))}}}),angular.module(\"ui.bootstrap.rating\",[]).constant(\"ratingConfig\",{max:5,stateOn:null,stateOff:null,titles:[\"one\",\"two\",\"three\",\"four\",\"five\"]}).controller(\"RatingController\",[\"$scope\",\"$attrs\",\"ratingConfig\",function(a,b,c){var d={$setViewValue:angular.noop};this.init=function(e){d=e,d.$render=this.render,d.$formatters.push(function(a){return angular.isNumber(a)&&a<<0!==a&&(a=Math.round(a)),a}),this.stateOn=angular.isDefined(b.stateOn)?a.$parent.$eval(b.stateOn):c.stateOn,this.stateOff=angular.isDefined(b.stateOff)?a.$parent.$eval(b.stateOff):c.stateOff;var f=angular.isDefined(b.titles)?a.$parent.$eval(b.titles):c.titles;this.titles=angular.isArray(f)&&f.length>0?f:c.titles;var g=angular.isDefined(b.ratingStates)?a.$parent.$eval(b.ratingStates):new Array(angular.isDefined(b.max)?a.$parent.$eval(b.max):c.max);a.range=this.buildTemplateObjects(g)},this.buildTemplateObjects=function(a){for(var b=0,c=a.length;c>b;b++)a[b]=angular.extend({index:b},{stateOn:this.stateOn,stateOff:this.stateOff,title:this.getTitle(b)},a[b]);return a},this.getTitle=function(a){return a>=this.titles.length?a+1:this.titles[a]},a.rate=function(b){!a.readonly&&b>=0&&b<=a.range.length&&(d.$setViewValue(d.$viewValue===b?0:b),d.$render())},a.enter=function(b){a.readonly||(a.value=b),a.onHover({value:b})},a.reset=function(){a.value=d.$viewValue,a.onLeave()},a.onKeydown=function(b){/(37|38|39|40)/.test(b.which)&&(b.preventDefault(),b.stopPropagation(),a.rate(a.value+(38===b.which||39===b.which?1:-1)))},this.render=function(){a.value=d.$viewValue}}]).directive(\"rating\",function(){return{restrict:\"EA\",require:[\"rating\",\"ngModel\"],scope:{readonly:\"=?\",onHover:\"&\",onLeave:\"&\"},controller:\"RatingController\",templateUrl:\"template/rating/rating.html\",replace:!0,link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}),angular.module(\"ui.bootstrap.tabs\",[]).controller(\"TabsetController\",[\"$scope\",function(a){var b=this,c=b.tabs=a.tabs=[];b.select=function(a){angular.forEach(c,function(b){b.active&&b!==a&&(b.active=!1,b.onDeselect(),a.selectCalled=!1)}),a.active=!0,a.selectCalled||(a.onSelect(),a.selectCalled=!0)},b.addTab=function(a){c.push(a),1===c.length&&a.active!==!1?a.active=!0:a.active?b.select(a):a.active=!1},b.removeTab=function(a){var e=c.indexOf(a);if(a.active&&c.length>1&&!d){var f=e==c.length-1?e-1:e+1;b.select(c[f])}c.splice(e,1)};var d;a.$on(\"$destroy\",function(){d=!0})}]).directive(\"tabset\",function(){return{restrict:\"EA\",transclude:!0,replace:!0,scope:{type:\"@\"},controller:\"TabsetController\",templateUrl:\"template/tabs/tabset.html\",link:function(a,b,c){a.vertical=angular.isDefined(c.vertical)?a.$parent.$eval(c.vertical):!1,a.justified=angular.isDefined(c.justified)?a.$parent.$eval(c.justified):!1}}}).directive(\"tab\",[\"$parse\",\"$log\",function(a,b){return{require:\"^tabset\",restrict:\"EA\",replace:!0,templateUrl:\"template/tabs/tab.html\",transclude:!0,scope:{active:\"=?\",heading:\"@\",onSelect:\"&select\",onDeselect:\"&deselect\"},controller:function(){},link:function(c,d,e,f,g){c.$watch(\"active\",function(a){a&&f.select(c)}),c.disabled=!1,e.disable&&c.$parent.$watch(a(e.disable),function(a){c.disabled=!!a}),e.disabled&&(b.warn('Use of \"disabled\" attribute has been deprecated, please use \"disable\"'),c.$parent.$watch(a(e.disabled),function(a){c.disabled=!!a})),c.select=function(){c.disabled||(c.active=!0)},f.addTab(c),c.$on(\"$destroy\",function(){f.removeTab(c)}),c.$transcludeFn=g}}}]).directive(\"tabHeadingTransclude\",function(){return{restrict:\"A\",require:\"^tab\",link:function(a,b,c,d){a.$watch(\"headingElement\",function(a){a&&(b.html(\"\"),b.append(a))})}}}).directive(\"tabContentTransclude\",function(){function a(a){return a.tagName&&(a.hasAttribute(\"tab-heading\")||a.hasAttribute(\"data-tab-heading\")||a.hasAttribute(\"x-tab-heading\")||\"tab-heading\"===a.tagName.toLowerCase()||\"data-tab-heading\"===a.tagName.toLowerCase()||\"x-tab-heading\"===a.tagName.toLowerCase())}return{restrict:\"A\",require:\"^tabset\",link:function(b,c,d){var e=b.$eval(d.tabContentTransclude);e.$transcludeFn(e.$parent,function(b){angular.forEach(b,function(b){a(b)?e.headingElement=b:c.append(b)})})}}}),angular.module(\"ui.bootstrap.timepicker\",[]).constant(\"timepickerConfig\",{hourStep:1,minuteStep:1,showMeridian:!0,meridians:null,readonlyInput:!1,mousewheel:!0,arrowkeys:!0,showSpinners:!0}).controller(\"TimepickerController\",[\"$scope\",\"$attrs\",\"$parse\",\"$log\",\"$locale\",\"timepickerConfig\",function(a,b,c,d,e,f){function g(){var b=parseInt(a.hours,10),c=a.showMeridian?b>0&&13>b:b>=0&&24>b;return c?(a.showMeridian&&(12===b&&(b=0),a.meridian===q[1]&&(b+=12)),b):void 0}function h(){var b=parseInt(a.minutes,10);return b>=0&&60>b?b:void 0}function i(a){return angular.isDefined(a)&&a.toString().length<2?\"0\"+a:a.toString()}function j(a){k(),p.$setViewValue(new Date(o)),l(a)}function k(){p.$setValidity(\"time\",!0),a.invalidHours=!1,a.invalidMinutes=!1}function l(b){var c=o.getHours(),d=o.getMinutes();a.showMeridian&&(c=0===c||12===c?12:c%12),a.hours=\"h\"===b?c:i(c),\"m\"!==b&&(a.minutes=i(d)),a.meridian=o.getHours()<12?q[0]:q[1]}function m(a,b){var c=new Date(a.getTime()+6e4*b),d=new Date(a);return d.setHours(c.getHours(),c.getMinutes()),d}function n(a){o=m(o,a),j()}var o=new Date,p={$setViewValue:angular.noop},q=angular.isDefined(b.meridians)?a.$parent.$eval(b.meridians):f.meridians||e.DATETIME_FORMATS.AMPMS;this.init=function(c,d){p=c,p.$render=this.render,p.$formatters.unshift(function(a){return a?new Date(a):null});var e=d.eq(0),g=d.eq(1),h=angular.isDefined(b.mousewheel)?a.$parent.$eval(b.mousewheel):f.mousewheel;h&&this.setupMousewheelEvents(e,g);var i=angular.isDefined(b.arrowkeys)?a.$parent.$eval(b.arrowkeys):f.arrowkeys;i&&this.setupArrowkeyEvents(e,g),a.readonlyInput=angular.isDefined(b.readonlyInput)?a.$parent.$eval(b.readonlyInput):f.readonlyInput,this.setupInputEvents(e,g)};var r=f.hourStep;b.hourStep&&a.$parent.$watch(c(b.hourStep),function(a){r=parseInt(a,10)});var s=f.minuteStep;b.minuteStep&&a.$parent.$watch(c(b.minuteStep),function(a){s=parseInt(a,10)});var t;a.$parent.$watch(c(b.min),function(a){var b=new Date(a);t=isNaN(b)?void 0:b});var u;a.$parent.$watch(c(b.max),function(a){var b=new Date(a);u=isNaN(b)?void 0:b}),a.noIncrementHours=function(){var a=m(o,60*r);return a>u||o>a&&t>a},a.noDecrementHours=function(){var a=m(o,60*-r);return t>a||a>o&&a>u},a.noIncrementMinutes=function(){var a=m(o,s);return a>u||o>a&&t>a},a.noDecrementMinutes=function(){var a=m(o,-s);return t>a||a>o&&a>u},a.noToggleMeridian=function(){return o.getHours()<13?m(o,720)>u:m(o,-720)0};b.bind(\"mousewheel wheel\",function(b){a.$apply(d(b)?a.incrementHours():a.decrementHours()),b.preventDefault()}),c.bind(\"mousewheel wheel\",function(b){a.$apply(d(b)?a.incrementMinutes():a.decrementMinutes()),b.preventDefault()})},this.setupArrowkeyEvents=function(b,c){b.bind(\"keydown\",function(b){38===b.which?(b.preventDefault(),a.incrementHours(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementHours(),a.$apply())}),c.bind(\"keydown\",function(b){38===b.which?(b.preventDefault(),a.incrementMinutes(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementMinutes(),a.$apply())})},this.setupInputEvents=function(b,c){if(a.readonlyInput)return a.updateHours=angular.noop,void(a.updateMinutes=angular.noop);var d=function(b,c){p.$setViewValue(null),p.$setValidity(\"time\",!1),angular.isDefined(b)&&(a.invalidHours=b),angular.isDefined(c)&&(a.invalidMinutes=c)};a.updateHours=function(){var a=g(),b=h();angular.isDefined(a)&&angular.isDefined(b)?(o.setHours(a),t>o||o>u?d(!0):j(\"h\")):d(!0)},b.bind(\"blur\",function(b){!a.invalidHours&&a.hours<10&&a.$apply(function(){a.hours=i(a.hours)})}),a.updateMinutes=function(){var a=h(),b=g();angular.isDefined(a)&&angular.isDefined(b)?(o.setMinutes(a),t>o||o>u?d(void 0,!0):j(\"m\")):d(void 0,!0)},c.bind(\"blur\",function(b){!a.invalidMinutes&&a.minutes<10&&a.$apply(function(){a.minutes=i(a.minutes)})})},this.render=function(){var b=p.$viewValue;isNaN(b)?(p.$setValidity(\"time\",!1),d.error('Timepicker directive: \"ng-model\" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')):(b&&(o=b),t>o||o>u?(p.$setValidity(\"time\",!1),a.invalidHours=!0,a.invalidMinutes=!0):k(),l())},a.showSpinners=angular.isDefined(b.showSpinners)?a.$parent.$eval(b.showSpinners):f.showSpinners,a.incrementHours=function(){a.noIncrementHours()||n(60*r)},a.decrementHours=function(){a.noDecrementHours()||n(60*-r)},a.incrementMinutes=function(){a.noIncrementMinutes()||n(s)},a.decrementMinutes=function(){a.noDecrementMinutes()||n(-s)},a.toggleMeridian=function(){a.noToggleMeridian()||n(720*(o.getHours()<12?1:-1))}}]).directive(\"timepicker\",function(){return{restrict:\"EA\",require:[\"timepicker\",\"?^ngModel\"],controller:\"TimepickerController\",controllerAs:\"timepicker\",replace:!0,scope:{},templateUrl:function(a,b){return b.templateUrl||\"template/timepicker/timepicker.html\"},link:function(a,b,c,d){var e=d[0],f=d[1];f&&e.init(f,b.find(\"input\"))}}}),angular.module(\"ui.bootstrap.transition\",[]).value(\"$transitionSuppressDeprecated\",!1).factory(\"$transition\",[\"$q\",\"$timeout\",\"$rootScope\",\"$log\",\"$transitionSuppressDeprecated\",function(a,b,c,d,e){function f(a){for(var b in a)if(void 0!==h.style[b])return a[b]}e||d.warn(\"$transition is now deprecated. Use $animate from ngAnimate instead.\");var g=function(d,e,f){f=f||{};var h=a.defer(),i=g[f.animation?\"animationEndEventName\":\"transitionEndEventName\"],j=function(a){c.$apply(function(){d.unbind(i,j),h.resolve(d)})};return i&&d.bind(i,j),b(function(){angular.isString(e)?d.addClass(e):angular.isFunction(e)?e(d):angular.isObject(e)&&d.css(e),i||h.resolve(d)}),h.promise.cancel=function(){i&&d.unbind(i,j),h.reject(\"Transition cancelled\")},h.promise},h=document.createElement(\"trans\"),i={WebkitTransition:\"webkitTransitionEnd\",MozTransition:\"transitionend\",OTransition:\"oTransitionEnd\",transition:\"transitionend\"},j={WebkitTransition:\"webkitAnimationEnd\",MozTransition:\"animationend\",OTransition:\"oAnimationEnd\",transition:\"animationend\"};return g.transitionEndEventName=f(i),g.animationEndEventName=f(j),g}]),angular.module(\"ui.bootstrap.typeahead\",[\"ui.bootstrap.position\"]).factory(\"typeaheadParser\",[\"$parse\",function(a){var b=/^\\s*([\\s\\S]+?)(?:\\s+as\\s+([\\s\\S]+?))?\\s+for\\s+(?:([\\$\\w][\\$\\w\\d]*))\\s+in\\s+([\\s\\S]+?)$/;return{parse:function(c){var d=c.match(b);if(!d)throw new Error('Expected typeahead specification in form of \"_modelValue_ (as _label_)? for _item_ in _collection_\" but got \"'+c+'\".');return{itemName:d[3],source:a(d[4]),viewMapper:a(d[2]||d[1]),modelMapper:a(d[1])}}}}]).directive(\"typeahead\",[\"$compile\",\"$parse\",\"$q\",\"$timeout\",\"$document\",\"$window\",\"$rootScope\",\"$position\",\"typeaheadParser\",function(a,b,c,d,e,f,g,h,i){var j=[9,13,27,38,40],k=200;return{require:[\"ngModel\",\"^?ngModelOptions\"],\r\nlink:function(l,m,n,o){function p(){K.moveInProgress||(K.moveInProgress=!0,K.$digest()),S&&d.cancel(S),S=d(function(){K.matches.length&&q(),K.moveInProgress=!1,K.$digest()},k)}function q(){K.position=D?h.offset(m):h.position(m),K.position.top+=m.prop(\"offsetHeight\")}var r=o[0],s=o[1],t=l.$eval(n.typeaheadMinLength);t||0===t||(t=1);var u,v,w=l.$eval(n.typeaheadWaitMs)||0,x=l.$eval(n.typeaheadEditable)!==!1,y=b(n.typeaheadLoading).assign||angular.noop,z=b(n.typeaheadOnSelect),A=angular.isDefined(n.typeaheadSelectOnBlur)?l.$eval(n.typeaheadSelectOnBlur):!1,B=b(n.typeaheadNoResults).assign||angular.noop,C=n.typeaheadInputFormatter?b(n.typeaheadInputFormatter):void 0,D=n.typeaheadAppendToBody?l.$eval(n.typeaheadAppendToBody):!1,E=l.$eval(n.typeaheadFocusFirst)!==!1,F=n.typeaheadSelectOnExact?l.$eval(n.typeaheadSelectOnExact):!1,G=b(n.ngModel),H=b(n.ngModel+\"($$$p)\"),I=function(a,b){return angular.isFunction(G(l))&&s&&s.$options&&s.$options.getterSetter?H(a,{$$$p:b}):G.assign(a,b)},J=i.parse(n.typeahead),K=l.$new(),L=l.$on(\"$destroy\",function(){K.$destroy()});K.$on(\"$destroy\",L);var M=\"typeahead-\"+K.$id+\"-\"+Math.floor(1e4*Math.random());m.attr({\"aria-autocomplete\":\"list\",\"aria-expanded\":!1,\"aria-owns\":M});var N=angular.element(\"
        \");N.attr({id:M,matches:\"matches\",active:\"activeIdx\",select:\"select(activeIdx)\",\"move-in-progress\":\"moveInProgress\",query:\"query\",position:\"position\"}),angular.isDefined(n.typeaheadTemplateUrl)&&N.attr(\"template-url\",n.typeaheadTemplateUrl),angular.isDefined(n.typeaheadPopupTemplateUrl)&&N.attr(\"popup-template-url\",n.typeaheadPopupTemplateUrl);var O=function(){K.matches=[],K.activeIdx=-1,m.attr(\"aria-expanded\",!1)},P=function(a){return M+\"-option-\"+a};K.$watch(\"activeIdx\",function(a){0>a?m.removeAttr(\"aria-activedescendant\"):m.attr(\"aria-activedescendant\",P(a))});var Q=function(a,b){return K.matches.length>b&&a?a.toUpperCase()===K.matches[b].label.toUpperCase():!1},R=function(a){var b={$viewValue:a};y(l,!0),B(l,!1),c.when(J.source(l,b)).then(function(c){var d=a===r.$viewValue;if(d&&u)if(c&&c.length>0){K.activeIdx=E?0:-1,B(l,!1),K.matches.length=0;for(var e=0;e=t?w>0?(V(),U(a)):R(a):(y(l,!1),V(),O()),x?a:a?void r.$setValidity(\"editable\",!1):(r.$setValidity(\"editable\",!0),null)}),r.$formatters.push(function(a){var b,c,d={};return x||r.$setValidity(\"editable\",!0),C?(d.$model=a,C(l,d)):(d[J.itemName]=a,b=J.viewMapper(l,d),d[J.itemName]=void 0,c=J.viewMapper(l,d),b!==c?b:a)}),K.select=function(a){var b,c,e={};v=!0,e[J.itemName]=c=K.matches[a].model,b=J.modelMapper(l,e),I(l,b),r.$setValidity(\"editable\",!0),r.$setValidity(\"parse\",!0),z(l,{$item:c,$model:b,$label:J.viewMapper(l,e)}),O(),K.$eval(n.typeaheadFocusOnSelect)!==!1&&d(function(){m[0].focus()},0,!1)},m.bind(\"keydown\",function(a){if(0!==K.matches.length&&-1!==j.indexOf(a.which)){if(-1===K.activeIdx&&(9===a.which||13===a.which))return O(),void K.$digest();a.preventDefault(),40===a.which?(K.activeIdx=(K.activeIdx+1)%K.matches.length,K.$digest()):38===a.which?(K.activeIdx=(K.activeIdx>0?K.activeIdx:K.matches.length)-1,K.$digest()):13===a.which||9===a.which?K.$apply(function(){K.select(K.activeIdx)}):27===a.which&&(a.stopPropagation(),O(),K.$digest())}}),m.bind(\"blur\",function(){A&&K.matches.length&&-1!==K.activeIdx&&!v&&(v=!0,K.$apply(function(){K.select(K.activeIdx)})),u=!1,v=!1});var W=function(a){m[0]!==a.target&&3!==a.which&&0!==K.matches.length&&(O(),g.$$phase||K.$digest())};e.bind(\"click\",W),l.$on(\"$destroy\",function(){e.unbind(\"click\",W),D&&X.remove(),N.remove()});var X=a(N)(K);D?e.find(\"body\").append(X):m.after(X)}}}]).directive(\"typeaheadPopup\",function(){return{restrict:\"EA\",scope:{matches:\"=\",query:\"=\",active:\"=\",position:\"&\",moveInProgress:\"=\",select:\"&\"},replace:!0,templateUrl:function(a,b){return b.popupTemplateUrl||\"template/typeahead/typeahead-popup.html\"},link:function(a,b,c){a.templateUrl=c.templateUrl,a.isOpen=function(){return a.matches.length>0},a.isActive=function(b){return a.active==b},a.selectActive=function(b){a.active=b},a.selectMatch=function(b){a.select({activeIdx:b})}}}}).directive(\"typeaheadMatch\",[\"$templateRequest\",\"$compile\",\"$parse\",function(a,b,c){return{restrict:\"EA\",scope:{index:\"=\",match:\"=\",query:\"=\"},link:function(d,e,f){var g=c(f.templateUrl)(d.$parent)||\"template/typeahead/typeahead-match.html\";a(g).then(function(a){b(a.trim())(d,function(a){e.replaceWith(a)})})}}}]).filter(\"typeaheadHighlight\",[\"$sce\",\"$injector\",\"$log\",function(a,b,c){function d(a){return a.replace(/([.?*+^$[\\]\\\\(){}|-])/g,\"\\\\$1\")}function e(a){return/<.*>/g.test(a)}var f;return f=b.has(\"$sanitize\"),function(b,g){return!f&&e(b)&&c.warn(\"Unsafe use of typeahead please use ngSanitize\"),b=g?(\"\"+b).replace(new RegExp(d(g),\"gi\"),\"$&\"):b,f||(b=a.trustAsHtml(b)),b}}]),!angular.$$csp()&&angular.element(document).find(\"head\").prepend('');\r\n})(angular);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./loaders/iifeloader.js!./bower_components/angular-bootstrap/ui-bootstrap.min.js\n ** module id = 7\n ** module chunks = 0\n **/","require(\"!!E:\\\\Jenkins\\\\jobs\\\\UGC_Client_Prod\\\\workspace\\\\Source\\\\UGC_Contest\\\\ContestClient\\\\TL.Contest.WebUI\\\\LoginWidget\\\\node_modules\\\\script-loader\\\\addScript.js\")(require(\"!!E:\\\\Jenkins\\\\jobs\\\\UGC_Client_Prod\\\\workspace\\\\Source\\\\UGC_Contest\\\\ContestClient\\\\TL.Contest.WebUI\\\\LoginWidget\\\\node_modules\\\\script-loader\\\\node_modules\\\\raw-loader\\\\index.js!E:\\\\Jenkins\\\\jobs\\\\UGC_Client_Prod\\\\workspace\\\\Source\\\\UGC_Contest\\\\ContestClient\\\\TL.Contest.WebUI\\\\LoginWidget\\\\src\\\\components\\\\utf8base64.js\")+\"\\n\\n// SCRIPT-LOADER FOOTER\\n//# sourceURL=script:///E:/Jenkins/jobs/UGC_Client_Prod/workspace/Source/UGC_Contest/ContestClient/TL.Contest.WebUI/LoginWidget/src/components/utf8base64.js\")\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/script-loader!./src/components/utf8base64.js\n ** module id = 8\n ** module chunks = 0\n **/","/*\r\n\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\tAuthor Tobias Koppers @sokra\r\n*/\r\nmodule.exports = function(src) {\r\n\tif (typeof execScript === \"function\")\r\n\t\texecScript(src);\r\n\telse\r\n\t\teval.call(null, src);\r\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/script-loader/addScript.js\n ** module id = 9\n ** module chunks = 0\n **/","module.exports = \"window.digitalIvy = window.digitalIvy || {};\\r\\n\\r\\n$.extend(true, window.digitalIvy, {\\r\\n // UTF8 Module\\r\\n //\\r\\n // Cleaner and modularized utf-8 encoding and decoding library for javascript.\\r\\n //\\r\\n // copyright: MIT\\r\\n // author: Nijiko Yonskai, @nijikokun, nijikokun@gmail.com\\r\\n utf8Encode: function (string) {\\r\\n if (typeof string !== 'string') return string;\\r\\n else string = string.replace(/\\\\r\\\\n/g, \\\"\\\\n\\\");\\r\\n var output = \\\"\\\", i = 0, charCode;\\r\\n\\r\\n for (i; i < string.length; i++) {\\r\\n charCode = string.charCodeAt(i);\\r\\n\\r\\n if (charCode < 128)\\r\\n output += String.fromCharCode(charCode);\\r\\n else if ((charCode > 127) && (charCode < 2048))\\r\\n output += String.fromCharCode((charCode >> 6) | 192),\\r\\n output += String.fromCharCode((charCode & 63) | 128);\\r\\n else\\r\\n output += String.fromCharCode((charCode >> 12) | 224),\\r\\n output += String.fromCharCode(((charCode >> 6) & 63) | 128),\\r\\n output += String.fromCharCode((charCode & 63) | 128);\\r\\n }\\r\\n\\r\\n return output;\\r\\n },\\r\\n\\r\\n utf8Decode: function (string) {\\r\\n if (typeof string !== 'string') return string;\\r\\n var output = \\\"\\\", i = 0, charCode = 0;\\r\\n\\r\\n while (i < string.length) {\\r\\n charCode = string.charCodeAt(i);\\r\\n\\r\\n if (charCode < 128)\\r\\n output += String.fromCharCode(charCode),\\r\\n i++;\\r\\n else if ((charCode > 191) && (charCode < 224))\\r\\n output += String.fromCharCode(((charCode & 31) << 6) | (string.charCodeAt(i + 1) & 63)),\\r\\n i += 2;\\r\\n else\\r\\n output += String.fromCharCode(((charCode & 15) << 12) | ((string.charCodeAt(i + 1) & 63) << 6) | (string.charCodeAt(i + 2) & 63)),\\r\\n i += 3;\\r\\n }\\r\\n\\r\\n return output;\\r\\n },\\r\\n\\r\\n\\r\\n // Base64 Module\\r\\n //\\r\\n // Cleaner, modularized and properly scoped base64 encoding and decoding module for strings.\\r\\n //\\r\\n // copyright: MIT\\r\\n // author: Nijiko Yonskai, @nijikokun, nijikokun@gmail.com\\r\\n charMap: \\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\\",\\r\\n\\r\\n base64Encode: function (input) {\\r\\n if (typeof input !== 'string')\\r\\n return input;\\r\\n else\\r\\n input = this.utf8Encode(input);\\r\\n var output = \\\"\\\", a, b, c, d, e, f, g, i = 0;\\r\\n\\r\\n while (i < input.length) {\\r\\n a = input.charCodeAt(i++);\\r\\n b = input.charCodeAt(i++);\\r\\n c = input.charCodeAt(i++);\\r\\n d = a >> 2;\\r\\n e = ((a & 3) << 4) | (b >> 4);\\r\\n f = ((b & 15) << 2) | (c >> 6);\\r\\n g = c & 63;\\r\\n\\r\\n if (isNaN(b)) f = g = 64;\\r\\n else if (isNaN(c)) g = 64;\\r\\n\\r\\n output += this.charMap.charAt(d) + this.charMap.charAt(e) + this.charMap.charAt(f) + this.charMap.charAt(g);\\r\\n }\\r\\n\\r\\n return output;\\r\\n },\\r\\n\\r\\n base64Decode: function (input) {\\r\\n if (typeof input !== 'string')\\r\\n return input;\\r\\n else\\r\\n input.replace(/[^A-Za-z0-9\\\\+\\\\/\\\\=]/g, \\\"\\\");\\r\\n var output = \\\"\\\", a, b, c, d, e, f, g, i = 0;\\r\\n\\r\\n while (i < input.length) {\\r\\n d = this.charMap.indexOf(input.charAt(i++));\\r\\n e = this.charMap.indexOf(input.charAt(i++));\\r\\n f = this.charMap.indexOf(input.charAt(i++));\\r\\n g = this.charMap.indexOf(input.charAt(i++));\\r\\n\\r\\n a = (d << 2) | (e >> 4);\\r\\n b = ((e & 15) << 4) | (f >> 2);\\r\\n c = ((f & 3) << 6) | g;\\r\\n\\r\\n output += String.fromCharCode(a);\\r\\n if (f != 64) output += String.fromCharCode(b);\\r\\n if (g != 64) output += String.fromCharCode(c);\\r\\n }\\r\\n\\r\\n return this.utf8Decode(output);\\r\\n }\\r\\n});\"\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/script-loader/~/raw-loader!./src/components/utf8base64.js\n ** module id = 10\n ** module chunks = 0\n **/","(function(angular) {\r\n/**\r\n * Created by brad.davis on 9/3/2015.\r\n */\r\n\r\nangular.module('LoginWidget').constant('widgetConfig', (function () {\r\n \"use strict\";\r\n\r\n function getConfig() {\r\n\r\n var thisScript = document.querySelector('script[config]');\r\n if (!thisScript) {\r\n throw new Error('could not find loginwidget script with widget-config attribute!');\r\n }\r\n\r\n var widgetConfig = thisScript.getAttribute('config');\r\n if (!widgetConfig) {\r\n throw new Error('could not find widget-config attribute on loginwidget script!');\r\n }\r\n\r\n var config = JSON.parse(window.digitalIvy.base64Decode(widgetConfig));\r\n\r\n console.dir(config);\r\n\r\n return config;\r\n }\r\n\r\n return getConfig();\r\n\r\n})());\r\n})(angular);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./loaders/iifeloader.js!./src/config/config.js\n ** module id = 11\n ** module chunks = 0\n **/","(function(angular) {\r\n/* global angular */\r\n\r\nangular.module('LoginWidget').provider('thirdPartyHooks', [function () {\r\n \"use strict\";\r\n\r\n var $log = angular.injector(['ng']).get('$log'),\r\n hooks = null,\r\n defaultHooks = null,\r\n that = this;\r\n\r\n if (window.digitalIvy && window.digitalIvy.loginWidget && window.digitalIvy.loginWidget.events) {\r\n $log.debug(\"third-party script hooks found...\");\r\n hooks = window.digitalIvy.loginWidget.events;\r\n } else {\r\n $log.debug(\"no third-party script hooks found...\");\r\n }\r\n\r\n if (window.digitalIvy && window.digitalIvy.loginWidget && window.digitalIvy.loginWidget.eventDefaults) {\r\n $log.debug(\"default script hooks found...\");\r\n defaultHooks = window.digitalIvy.loginWidget.eventDefaults;\r\n } else {\r\n $log.debug(\"no default script hooks found...\");\r\n }\r\n\r\n this.emptyHook = function(){\r\n $log.debug(\"no default hook present, called emptyHook()\");\r\n };\r\n\r\n //check for override / mutate config object\r\n this.configure = function (config) {\r\n if (hooks && hooks.configuration) {\r\n hooks.configuration(config, function (id, labelOverride) {\r\n if (config.labels.hasOwnProperty(id)) {\r\n config.labels[id] = labelOverride;\r\n }\r\n }, (defaultHooks && defaultHooks.configuration) ? defaultHooks.configuration : this.emptyHook);\r\n } else if (defaultHooks && defaultHooks.configuration) {\r\n defaultHooks.configuration(config, function (id, labelOverride) {\r\n if (config.labels.hasOwnProperty(id)) {\r\n config.labels[id] = labelOverride;\r\n }\r\n });\r\n }\r\n };\r\n\r\n this.$get = ['$timeout', function ($timeout) {\r\n return {\r\n onPreLogin: function (userProfile) {\r\n if (hooks && hooks.onPreLogin) {\r\n return hooks.onPreLogin(userProfile, (defaultHooks && defaultHooks.onPreLogin) ? defaultHooks.onPreLogin : that.emptyHook);\r\n } else if (defaultHooks && defaultHooks.onPreLogin) {\r\n return defaultHooks.onPreLogin(userProfile);\r\n } else {\r\n return true;\r\n }\r\n },\r\n onPostLogin: function (res, redirectUrl) {\r\n // Timeout to let angular processing finish up\r\n // There will be a redirect in here\r\n $timeout(function () {\r\n if (hooks && hooks.onPostLogin) {\r\n return hooks.onPostLogin(res, redirectUrl, (defaultHooks && defaultHooks.onPostLogin) ? defaultHooks.onPostLogin : that.emptyHook);\r\n } else if (defaultHooks && defaultHooks.onPostLogin) {\r\n return defaultHooks.onPostLogin(res, redirectUrl);\r\n } else {\r\n return true;\r\n }\r\n }, 0);\r\n },\r\n onRenderComplete: function () {\r\n if (hooks && hooks.onRenderComplete) {\r\n hooks.onRenderComplete((defaultHooks && defaultHooks.onRenderComplete) ? defaultHooks.onRenderComplete : that.emptyHook);\r\n } else if (defaultHooks && defaultHooks.onRenderComplete) {\r\n defaultHooks.onRenderComplete();\r\n }\r\n },\r\n onStart: function () {\r\n if (hooks && hooks.onStart) {\r\n hooks.onStart((defaultHooks && defaultHooks.onStart) ? defaultHooks.onStart : that.emptyHook);\r\n } else if (defaultHooks && defaultHooks.onStart) {\r\n defaultHooks.onStart();\r\n }\r\n },\r\n onClick: function (ev, msg) {\r\n if (hooks && hooks.onClick) {\r\n hooks.onClick(ev, msg, (defaultHooks && defaultHooks.onClick) ? defaultHooks.onClick : that.emptyHook);\r\n } else if (defaultHooks && defaultHooks.onClick) {\r\n defaultHooks.onClick(ev, msg);\r\n }\r\n }\r\n };\r\n }];\r\n}]);\r\n\r\n})(angular);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./loaders/iifeloader.js!./src/components/services/thirdPartyHooks.js\n ** module id = 12\n ** module chunks = 0\n **/","(function(angular) {\r\n/**\r\n * Created by brad.davis on 9/23/2015.\r\n */\r\n\r\n/* global angular */\r\n\r\nangular.module(\"LoginWidget\").factory(\"utilsService\", function (widgetConfig, $window) {\r\n \"use strict\";\r\n\r\n function checkHasStringVal(val) {\r\n if (typeof val === 'undefined' || val === null) {\r\n return false;\r\n }\r\n\r\n return val.length > 0;\r\n }\r\n\r\n function base64DecodeUrl(str, td) {\r\n // URL Decode first\r\n str = str.replace(/-/g, '+').replace(/_/g, '/');\r\n\r\n if (td) {\r\n var numberOfPaddingCharacters = str.slice(-1);\r\n\r\n // The Base64 string is the token without the last character.\r\n str = str.slice(0, -1);\r\n\r\n for (var i = 0; i < numberOfPaddingCharacters; i++) {\r\n str += \"=\";\r\n }\r\n } else {\r\n // pad str to be divisible by 4 for facebook\r\n while (str.length % 4 !== 0) {\r\n str += \"=\";\r\n }\r\n }\r\n\r\n // now base 64 decode\r\n return window.digitalIvy.base64Decode(str);\r\n }\r\n\r\n function getHostUrl(url) {\r\n var parser = document.createElement('a');\r\n parser.href = url;\r\n\r\n // localhost needs the port (host) to succeed\r\n // IE needs hostname (without port) to succeed\r\n if (parser.host.indexOf(\"localhost\") > -1) {\r\n return parser.protocol + '//' + parser.host;\r\n } else {\r\n return parser.protocol + '//' + parser.hostname;\r\n }\r\n }\r\n\r\n function getQueryVariable(variable) {\r\n var query = window.location.search.substring(1);\r\n var vars = query.split('&');\r\n for (var i = 0; i < vars.length; i++) {\r\n var pair = vars[i].split('=');\r\n if (decodeURIComponent(pair[0]) == variable) {\r\n return decodeURIComponent(pair[1]);\r\n }\r\n }\r\n console.log('Query variable %s not found', variable);\r\n }\r\n\r\n function determineSocialNetwork(url) {\r\n if (/(\\/fb\\/|\\/tdfb\\/)/i.test($window.location.href)) {\r\n return \"facebook\";\r\n }\r\n\r\n //if we get here, NO social network\r\n return null;\r\n }\r\n\r\n function isInFrame() {\r\n return ($window.self !== $window.top);\r\n }\r\n\r\n function isFrameOnSameDomain() {\r\n var parentHost;\r\n\r\n try {\r\n // Chrome will not throw an exception here, even though it's supposed to - it will simply return\r\n // undefined.\r\n parentHost = $window.parent.location.host;\r\n } catch (e) {\r\n // Any browser meeting the HTML specifications should hit this catch block when trying to access\r\n // a frame not on the same domain\r\n return false;\r\n }\r\n\r\n // Chrome, meanwhile, will not throw the exception, it will just throw an exception when you try to access\r\n // any property of \"parentHost\" because it simply returned undefined from the try block above.\r\n if (parentHost === undefined) {\r\n return false;\r\n }\r\n\r\n // If neither of the above if statements were entered, then we know we're on the same domain.\r\n return true;\r\n }\r\n\r\n function isLoyalty(url) {\r\n // app2 in the url indicates loyalty\r\n var res = /(\\/app2\\/|colformat)/i.exec(url);\r\n\r\n if (res && res[0]) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function isNullOrUndef(val) {\r\n return typeof (val) === \"undefined\" || val === null;\r\n }\r\n\r\n function isMobile() {\r\n if ($window.navigator.userAgent.match(/Android/i)\r\n || $window.navigator.userAgent.match(/webOS/i)\r\n || $window.navigator.userAgent.match(/iPhone/i)\r\n || $window.navigator.userAgent.match(/iPad/i)\r\n || $window.navigator.userAgent.match(/iPod/i)\r\n || $window.navigator.userAgent.match(/BlackBerry/i)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n function modifyUrl(originalUrl, addToUrl, arrAddToQString) {\r\n var urlSplit = originalUrl.split(\"?\"),\r\n baseUrl = urlSplit[0],\r\n arrQString = [];\r\n\r\n if (urlSplit.length > 1) {\r\n arrQString = urlSplit[1].split(\"&\");\r\n }\r\n\r\n // for removing special social login querystring when\r\n // in FB APP on IOS or Android\r\n var indexToRemove = -1;\r\n angular.forEach(arrQString, function (val, key) {\r\n if (val.toLowerCase().indexOf(\"socialloginresult\") !== -1) {\r\n indexToRemove = key;\r\n }\r\n });\r\n\r\n if (indexToRemove !== -1) {\r\n arrQString.splice(indexToRemove, 1);\r\n }\r\n\r\n if (arrAddToQString && arrAddToQString.length > 0) {\r\n arrQString = arrQString.concat(arrAddToQString);\r\n }\r\n\r\n if (addToUrl) {\r\n // add ending / if not there\r\n if (baseUrl.indexOf('/', baseUrl.length - 1) === -1) {\r\n baseUrl = baseUrl + '/';\r\n }\r\n baseUrl = baseUrl + addToUrl;\r\n }\r\n\r\n if (arrQString && arrQString.length > 0) {\r\n baseUrl = [baseUrl, arrQString.join(\"&\")].join(\"?\");\r\n }\r\n\r\n return baseUrl;\r\n }\r\n\r\n function isInFacebookApp() {\r\n var ua = navigator.userAgent || navigator.vendor || window.opera;\r\n return (ua.indexOf(\"FBAN\") > -1) || (ua.indexOf(\"FBAV\") > -1);\r\n }\r\n\r\n return {\r\n checkHasStringVal: checkHasStringVal,\r\n base64DecodeUrl: base64DecodeUrl,\r\n getHostUrl: getHostUrl,\r\n getQueryVariable: getQueryVariable,\r\n determineSocialNetwork: determineSocialNetwork,\r\n isLoyalty: isLoyalty,\r\n isNullOrUndef: isNullOrUndef,\r\n isMobile: isMobile,\r\n modifyUrl: modifyUrl,\r\n isInFacebookApp: isInFacebookApp\r\n };\r\n});\r\n})(angular);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./loaders/iifeloader.js!./src/components/services/utils.js\n ** module id = 13\n ** module chunks = 0\n **/","(function(angular) {\r\n\r\n/* global angular, $ */\r\n\r\nangular.module(\"LoginWidget\").factory(\"businessRulesService\", function(widgetConfig, utilsService, $window) {\r\n \"use strict\";\r\n\r\n function prepareDataForLogin(username, password, socialIntegration) {\r\n var data = {};\r\n\r\n data.appAccessToken = widgetConfig.appAccessToken;\r\n data.organizationId = widgetConfig.organizationId;\r\n data.username = username;\r\n data.password = password;\r\n\r\n if (socialIntegration && !$.isEmptyObject(socialIntegration)) {\r\n data.socialIntegration = socialIntegration;\r\n }\r\n\r\n data.requestcookies = widgetConfig.enableCookies && (utilsService.determineSocialNetwork($window.location.href) == \"facebook\" ? false : true);\r\n data.requestconsumertoken = true;\r\n\r\n return data;\r\n }\r\n\r\n function prepareDataForForgotPassword(email) {\r\n var data = {};\r\n\r\n data.appAccessToken = widgetConfig.appAccessToken;\r\n data.organizationId = widgetConfig.organizationId;\r\n data.username = email;\r\n data.contestInstanceShortId = widgetConfig.contestInstanceShortId;\r\n data.channel = {};\r\n data.channel.type = getChannelType($window.location.href);\r\n if (data.channel.type === 2) {\r\n // facebook adds app id\r\n data.channel.socialPageId = \"\"; // HELLO\r\n }\r\n\r\n return data;\r\n }\r\n\r\n function prepareDataForResetPassword(password) {\r\n var data = {};\r\n\r\n data.appAccessToken = widgetConfig.appAccessToken;\r\n data.organizationId = widgetConfig.organizationId;\r\n data.resetToken = widgetConfig.resetToken;\r\n data.newPassword = password;\r\n\r\n return data;\r\n }\r\n\r\n function getChannelType(url) {\r\n var channelTypeId = 8, // default to microsite\r\n socialNetwork = utilsService.determineSocialNetwork(url),\r\n isLoyalty = utilsService.isLoyalty(url);\r\n\r\n if (socialNetwork) {\r\n switch (socialNetwork) {\r\n case \"facebook\":\r\n channelTypeId = 2; // facebook channel\r\n break;\r\n }\r\n } else if (isLoyalty) {\r\n channelTypeId = 9; // loyalty channel\r\n }\r\n\r\n return channelTypeId;\r\n }\r\n\r\n function getLoginRedirectUrl(contestType, isRegistered, socialServiceProvider, socialAccessCode, addToken) {\r\n var host = $window.location.href;\r\n var redirectUrl = \"\";\r\n\r\n host = host.replace(/Account\\/Logon/i, \"\");\r\n host = host.replace(/Sweepstakes\\/Landing/i, \"\");\r\n\r\n // remove ending hash, if alone\r\n if (host.indexOf('#', host.length - 1) !== -1) {\r\n host = host.substring(0, host.length - 1);\r\n }\r\n\r\n if (isRegistered) {\r\n // if returnUrl in queryString, use that instead\r\n redirectUrl = utilsService.getQueryVariable(\"returnUrl\");\r\n\r\n if (redirectUrl) {\r\n return redirectUrl;\r\n }\r\n switch (contestType) {\r\n case 3: // Brackets\r\n redirectUrl = utilsService.modifyUrl(host, \"Brackets/BracketsLanding\");\r\n break;\r\n case 2: // Sweepstakes\r\n redirectUrl = utilsService.modifyUrl(host, \"Sweepstakes/Landing\");\r\n break;\r\n case 1: // UGC\r\n redirectUrl = utilsService.modifyUrl(host, \"UGC/Welcome\");\r\n break;\r\n }\r\n } else {\r\n switch (contestType) {\r\n case 2: //ContestType.Sweepstakes:\r\n // Sweeps don't normally have /Account/Logon page, except on password reset link\r\n redirectUrl = utilsService.modifyUrl(host, \"Sweepstakes/Landing\", [\"emailUnmatched=true\"]);\r\n break;\r\n case 1: //ContestType.UGC:\r\n redirectUrl = utilsService.modifyUrl(host, \"UGC/Registration\");\r\n break;\r\n case 3: //ContestType.Brackets:\r\n redirectUrl = utilsService.modifyUrl(host, \"Brackets/Registration\");\r\n break;\r\n }\r\n }\r\n\r\n // Only add token if the user wasn't found\r\n if (addToken) {\r\n redirectUrl = utilsService.modifyUrl(redirectUrl, null, [\"token=\" + socialAccessCode, \"serviceProvider=\" + socialServiceProvider]);\r\n }\r\n\r\n // add referraltoken, but only if it's not there\r\n var referralToken = utilsService.getQueryVariable(\"rft\");\r\n if (referralToken && (redirectUrl.search(\"rft=\") === -1)) {\r\n redirectUrl = utilsService.modifyUrl(redirectUrl, null, [\"rft=\" + referralToken]);\r\n }\r\n\r\n return redirectUrl;\r\n }\r\n\r\n return {\r\n prepareDataForLogin: prepareDataForLogin,\r\n prepareDataForForgotPassword: prepareDataForForgotPassword,\r\n prepareDataForResetPassword: prepareDataForResetPassword,\r\n getChannelType: getChannelType,\r\n getLoginRedirectUrl: getLoginRedirectUrl\r\n };\r\n});\r\n\r\n})(angular);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./loaders/iifeloader.js!./src/components/services/businessRules.js\n ** module id = 14\n ** module chunks = 0\n **/","(function(angular) {\r\n/**\r\n * Created by brad.davis on 10/12/2015.\r\n */\r\n\r\nangular.module(\"LoginWidget\").factory(\"tokenReplacement\", [\"widgetConfig\", function (widgetConfig) {\r\n \"use strict\";\r\n\r\n function tokenizeString(str) {\r\n var len = str.length,\r\n tokens = [],\r\n inToken = false,\r\n tokenStart = -1,\r\n last = 0,\r\n cur = null;\r\n\r\n for (var i = 0; i < len; i++) {\r\n cur = str[i]; //peek at cur character\r\n if (cur === '{' && inToken) { //illegal, bail\r\n return [str];\r\n }\r\n if (cur === '{' && !inToken) { //found one\r\n inToken = true;\r\n tokenStart = i;\r\n tokens.push(str.substring(last, i));//push previous fragment\r\n } else if (cur === '}' && inToken) {\r\n inToken = false;\r\n tokens.push(str.substring(tokenStart, i + 1));\r\n last = i + 1;\r\n } else if (i === len - 1) {\r\n tokens.push(str.substring(last, len + 1));\r\n }\r\n }\r\n return tokens;\r\n }\r\n\r\n function replaceTokens(sourceText, overrideTokens) {\r\n if (!sourceText ||\r\n sourceText.indexOf('{') === -1 ||\r\n sourceText.indexOf('}') === -1 ||\r\n !widgetConfig.contestTokens) {\r\n return sourceText;\r\n }\r\n\r\n //tokenize the string\r\n var contestTokens = overrideTokens ? overrideTokens : widgetConfig.contestTokens;\r\n var tokens = tokenizeString(sourceText);\r\n var len = tokens.length;\r\n\r\n //replace tokens\r\n for (var i = 0; i < len; i++) {\r\n var cur = tokens[i].toLowerCase();\r\n if (contestTokens.hasOwnProperty(cur)) {\r\n tokens[i] = contestTokens[cur];\r\n }\r\n }\r\n\r\n //re-constitute the string and return\r\n return tokens.join('');\r\n }\r\n\r\n return {\r\n replaceTokens: replaceTokens\r\n };\r\n\r\n}]);\r\n\r\n})(angular);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./loaders/iifeloader.js!./src/components/services/tokenReplacement.js\n ** module id = 15\n ** module chunks = 0\n **/","(function(angular) {\r\nangular.module('LoginWidget')\r\n .factory('defaultLabels', function defaultLabelsFactory() {\r\n 'use strict';\r\n\r\n var defaultLabels = {};\r\n\r\n function mergeLabels(labels) {\r\n angular.extend(defaultLabels, labels);\r\n }\r\n\r\n function replaceLabels(labels) {\r\n defaultLabels = labels;\r\n }\r\n\r\n function getLabels() {\r\n return defaultLabels;\r\n }\r\n\r\n return {\r\n merge: mergeLabels,\r\n replace: replaceLabels,\r\n get: getLabels\r\n };\r\n })\r\n .filter('translate', function (tokenReplacement, defaultLabels) {\r\n return function (input) {\r\n //if input isnt a string, just return it\r\n if (typeof input !== 'string') {\r\n return input;\r\n }\r\n\r\n var result = defaultLabels.get()[input.toUpperCase()];\r\n\r\n if (!result) {\r\n result = input;\r\n }\r\n\r\n result = tokenReplacement.replaceTokens(result);\r\n\r\n return result;\r\n };\r\n });\r\n\r\n})(angular);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./loaders/iifeloader.js!./src/components/filters/translate.js\n ** module id = 16\n ** module chunks = 0\n **/","(function(angular) {\r\n\r\nangular\r\n .module('LoginWidget')\r\n .directive('loginwidget', function ($filter, tokenReplacement, $compile, $templateRequest) {\r\n \"use strict\";\r\n\r\n return {\r\n restrict: 'E',\r\n link: function(scope, element){\r\n $templateRequest(\"./components/loginwidget/login-widget-directive.html\").then(function(html){\r\n var translate = $filter(\"translate\");\r\n var tokens = { \"{0}\": '' + translate('LABEL_ACCOUNT_RESETPASSWORDSUCCESS_CLICK_HERE_URL') + '' };\r\n var passwordResetMessage = tokenReplacement.replaceTokens(translate(\"LABEL_ACCOUNT_RESETPASSWORDSUCCESS_SUCCESS_NOTICE\"), tokens);\r\n var template = angular.element(html);\r\n var container = template.find(\"#passwordResetMessage\");\r\n container.html(passwordResetMessage);\r\n element.append(template);\r\n $compile(template)(scope);\r\n });\r\n }\r\n };\r\n })\r\n .directive('confirmpasswordvalidate', function () {\r\n \"use strict\";\r\n\r\n var linkerFunc = function (scope, elem, attrs, ctrl) {\r\n var validate = function (modelValue, viewValue) {\r\n var valid = modelValue === scope.password;\r\n ctrl.$setValidity(\"validconfirmpassword\", valid);\r\n return valid;\r\n };\r\n\r\n ctrl.$validators.validconfirmpassword = validate;\r\n\r\n //so we can validate when the main password field changes\r\n attrs.$observe(\"passwordField\", function () {\r\n return validate(ctrl.$viewValue);\r\n });\r\n };\r\n\r\n return {\r\n require: 'ngModel',\r\n restrict: 'A',\r\n scope: true, //inherit scope from parent needed for form validation to work\r\n link: linkerFunc\r\n };\r\n });\r\n})(angular);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./loaders/iifeloader.js!./src/components/loginwidget/login-widget-directive.js\n ** module id = 17\n ** module chunks = 0\n **/","(function(angular) {\r\n/* global angular */\r\nangular.module(\"LoginWidget\").controller('LoginWidgetController', function ($rootScope,\r\n $scope,\r\n $q,\r\n $filter,\r\n widgetConfig,\r\n apiService,\r\n $log,\r\n utilsService,\r\n thirdPartyHooks,\r\n businessRulesService,\r\n $window,\r\n $cookies,\r\n tokenReplacement,\r\n fbapi,\r\n $timeout) {\r\n \"use strict\";\r\n\r\n $rootScope.$on(\"clickMessage\", function (ev, msg) {\r\n ev.stopPropagation();\r\n thirdPartyHooks.onClick(ev, msg);\r\n });\r\n\r\n $rootScope.$on(\"renderComplete\", function () {\r\n thirdPartyHooks.onRenderComplete();\r\n\r\n // this social login pathway will only be used by Facebook Android / IOS App\r\n // because window.open doesn't really open in separate window\r\n // and window.opener is null, we cannot communicate across windows\r\n if (utilsService.isInFacebookApp()) {\r\n var socialLoginResult = utilsService.getQueryVariable(\"socialLoginResult\");\r\n if (socialLoginResult) {\r\n console.log(\"social-login-complete...\");\r\n $rootScope.$emit(\"social-login-complete\", socialLoginResult);\r\n }\r\n }\r\n });\r\n\r\n $rootScope.$on(\"social-login-complete\", function (e, d) {\r\n var resultData = d.split('|');\r\n var resultCommand = resultData[0];\r\n\r\n switch (resultCommand.toLowerCase()) {\r\n case \"post-social-login\":\r\n // if postmessage is bad (less than 3 params\r\n // or if the third parameter (the token) is null or empty\r\n // then something happened. They could have denied permissions\r\n if (resultData.length !== 3 || resultData[2] === \"undefined\" || resultData[2] === \"\") {\r\n // does not match a correct record\r\n window.location.reload();\r\n } else {\r\n $scope.isLoading = true;\r\n var socialIntegration = {};\r\n socialIntegration.type = resultData[1];\r\n socialIntegration.token = resultData[2];\r\n autoLogin(socialIntegration);\r\n }\r\n break;\r\n }\r\n });\r\n\r\n function processError(err) {\r\n if (!err) {\r\n return;\r\n }\r\n\r\n $log.debug(err);\r\n\r\n if (typeof (err) === \"string\") {\r\n err = {\r\n errorMessage: err,\r\n errorDetails: null,\r\n errorCode: null\r\n };\r\n }\r\n\r\n $scope.isErrorCondition = true;\r\n $scope.errorMessage = err.errorMessage;\r\n }\r\n\r\n function setCookies(cookies) {\r\n var def = $q.defer();\r\n if (cookies && cookies.length > 0) {\r\n var domain = $window.location.hostname.toLowerCase();\r\n if (domain !== \"localhost\") {\r\n domain = domain.split(\".\");\r\n domain = domain.slice(domain.length - 2).join(\".\");\r\n } else {\r\n domain = \"\";\r\n }\r\n\r\n // get rid of SF cookie on the full domain, since it can cause issues\r\n // i.e., ENT on dev4sanban.listenernetwork.com vs. ENT on .listenernetwork.com\r\n $window.contestlib && $window.contestlib.removeCookieOnFullDomain(\"ENT\");\r\n\r\n var promises = [];\r\n\r\n angular.forEach(cookies, function (val, key) {\r\n if ($window.contestlib && $window.contestlib.setCookie) {\r\n promises.push($window.contestlib.setCookie(val.name, val.value, val.expires, domain));\r\n }\r\n });\r\n\r\n $q.all(promises).then(function (res) {\r\n def.resolve();\r\n });\r\n } else {\r\n def.resolve();\r\n }\r\n return def.promise;\r\n }\r\n\r\n function autoLogin(socialIntegration, sfott) {\r\n var data = businessRulesService.prepareDataForLogin(null, null, socialIntegration);\r\n\r\n if (!thirdPartyHooks.onPreLogin(data)) {\r\n $log.debug(\"Login aborted due to third party rejection.\");\r\n return;\r\n }\r\n\r\n var redirectUrl;\r\n var socialData = socialIntegration;\r\n var def = $q.defer();\r\n apiService.login(data).then(function (res) {\r\n $scope.isLoading = false;\r\n // set cookies for normal contests (not fb)\r\n if (utilsService.determineSocialNetwork($window.location.href) != \"facebook\") {\r\n // new Stickyfish needs new cookie set\r\n if (sfott) {\r\n res.cookies.push({\r\n name: \"sfott\",\r\n value: sfott,\r\n expires: res.cookies[0].expires\r\n });\r\n }\r\n setCookies(res.cookies).then(function(response) {\r\n redirectUrl = businessRulesService.getLoginRedirectUrl($scope.contestType, res.consumerToken, socialData.type, socialData.token, false);\r\n thirdPartyHooks.onPostLogin(res, redirectUrl);\r\n def.resolve(res);\r\n });\r\n } else {\r\n redirectUrl = fbapi.getFBContestLoginRedirectUrl($scope.contestType, res.consumerToken);\r\n thirdPartyHooks.onPostLogin(res, redirectUrl);\r\n def.resolve(res);\r\n }\r\n }, function (err) {\r\n $scope.isLoading = false;\r\n // if User Not Found error (200), redirect to registration\r\n if (err && err.errorCode && err.errorCode === 200) {\r\n if (utilsService.determineSocialNetwork($window.location.href) != \"facebook\") {\r\n redirectUrl = businessRulesService.getLoginRedirectUrl($scope.contestType, widgetConfig.consumerToken, socialData.type, socialData.token, true);\r\n } else {\r\n redirectUrl = fbapi.getFBContestLoginRedirectUrl($scope.contestType, widgetConfig.consumerToken);\r\n }\r\n // new Stickyfish Logout on error\r\n sfLogout();\r\n thirdPartyHooks.onPostLogin(err, redirectUrl);\r\n def.resolve(err);\r\n } else {\r\n processError(err);\r\n def.reject(err);\r\n }\r\n });\r\n }\r\n\r\n // Temporary function, will be removed after a couple of months.\r\n function checkAndSetCumulusErrorMessage(err) {\r\n if (!err || !err.errorMessage || typeof(err.errorMessage) != 'string' || !err.data || !err.data.broadcasterId || err.data.broadcasterId != 8) {\r\n return err;\r\n }\r\n const errMsg = err.errorMessage;\r\n const broadcasterId = err.data.broadcasterId;\r\n if (broadcasterId == 8 && errMsg.toLowerCase().indexOf('username and password') > -1) {\r\n return errMsg + '. We have recently updated our login provider. If you know your email address is correct, you will need to reset your password now to continue. Click ‘Forgot Password’ below to reset your password.';\r\n } else {\r\n return err;\r\n }\r\n }\r\n\r\n function doLogin(data) {\r\n var def = $q.defer();\r\n\r\n apiService.login(data).then(function (res) {\r\n setCookies(res.cookies).then(function(response) {\r\n def.resolve(res);\r\n });\r\n }, function (err) {\r\n processError(checkAndSetCumulusErrorMessage(err));\r\n def.reject(err);\r\n });\r\n\r\n return def.promise;\r\n }\r\n\r\n function getUserProfile(consumerToken) {\r\n var def = $q.defer();\r\n\r\n apiService.getUserProfile(consumerToken).then(function (res) {\r\n def.resolve(res);\r\n }, function (err) {\r\n def.reject(err);\r\n });\r\n\r\n return def.promise;\r\n }\r\n\r\n $scope.onSubmit = function () {\r\n if ($scope.loginform.email.$invalid || $scope.loginform.password.$invalid) {\r\n $log.log(\"Form is not valid!\");\r\n return;\r\n }\r\n\r\n $scope.isErrorCondition = false;\r\n $scope.errorMessage = \"\";\r\n $scope.isLoading = true;\r\n\r\n var data = businessRulesService.prepareDataForLogin($scope.username, $scope.password, null);\r\n\r\n if (!thirdPartyHooks.onPreLogin(data)) {\r\n $log.debug(\"Login aborted due to third party rejection.\");\r\n return;\r\n }\r\n\r\n var def = $q.defer();\r\n doLogin(data)\r\n .then(function (res) {\r\n // if we got a consumer token, check if we are registered for this contest\r\n // that determines the redirectUrl\r\n if (res.consumerToken) {\r\n getUserProfile(res.consumerToken.token).then(function (res) {\r\n $scope.isLoading = false;\r\n var isRegistered = res.registered;\r\n var redirectUrl = businessRulesService.getLoginRedirectUrl($scope.contestType, isRegistered);\r\n thirdPartyHooks.onPostLogin(res, redirectUrl);\r\n def.resolve(res);\r\n }, function (err) {\r\n $scope.isLoading = false;\r\n var redirectUrl = businessRulesService.getLoginRedirectUrl($scope.contestType, false);\r\n thirdPartyHooks.onPostLogin(res, redirectUrl);\r\n def.reject(err);\r\n });\r\n }\r\n }, function (err) {\r\n $scope.isLoading = false;\r\n def.reject(err);\r\n });\r\n\r\n return def.promise;\r\n };\r\n\r\n function doSendReminderEmail(data) {\r\n var def = $q.defer();\r\n\r\n apiService.sendReminderEmail(data).then(function (res) {\r\n $scope.sendReminderSuccess = true;\r\n\r\n def.resolve(res);\r\n\r\n }, function (err) {\r\n processError(err);\r\n def.reject(err);\r\n });\r\n\r\n return def.promise;\r\n }\r\n\r\n $scope.onForgotPassword = function () {\r\n if ($scope.loginform.forgotusername.$invalid) {\r\n $log.log(\"Form is not valid!\");\r\n return;\r\n }\r\n\r\n if (widgetConfig.isPreviewMode) {\r\n return;\r\n }\r\n\r\n $scope.isErrorCondition = false;\r\n $scope.errorMessage = \"\";\r\n $scope.isLoading = true;\r\n\r\n var def = $q.defer();\r\n var data = businessRulesService.prepareDataForForgotPassword($scope.username);\r\n doSendReminderEmail(data)\r\n .then(function (res) {\r\n $scope.isLoading = false;\r\n def.resolve(res);\r\n }, function (err) {\r\n $scope.isLoading = false;\r\n def.reject(err);\r\n });\r\n\r\n return def.promise;\r\n };\r\n\r\n function doResetPassword(data) {\r\n var def = $q.defer();\r\n\r\n apiService.resetPassword(data).then(function (res) {\r\n $scope.isResetPasswordSuccess = true;\r\n def.resolve(res);\r\n\r\n }, function (err) {\r\n processError(err);\r\n def.reject(err);\r\n });\r\n\r\n return def.promise;\r\n }\r\n\r\n $scope.onResetPassword = function () {\r\n if ($scope.loginform.password.$invalid || $scope.loginform.confirmpassword.$invalid) {\r\n $log.log(\"Form is not valid!\");\r\n return;\r\n }\r\n\r\n if (widgetConfig.isPreviewMode) {\r\n return;\r\n }\r\n\r\n $scope.isErrorCondition = false;\r\n $scope.errorMessage = \"\";\r\n $scope.isLoading = true;\r\n\r\n var data = businessRulesService.prepareDataForResetPassword($scope.password, null);\r\n\r\n var def = $q.defer();\r\n doResetPassword(data)\r\n .then(function (res) {\r\n $scope.isLoading = false;\r\n def.resolve(res);\r\n }, function (err) {\r\n $scope.isLoading = false;\r\n def.reject(err);\r\n });\r\n\r\n return def.promise;\r\n };\r\n\r\n $scope.onCreateAccount = function () {\r\n $scope.$emit(\"clickMessage\", \"onCreateAccount\");\r\n };\r\n\r\n $scope.onResetPassSuccessLogon = function () {\r\n $scope.$emit(\"clickMessage\", \"onResetPassSuccessLogon\");\r\n };\r\n\r\n function facebookSetup() {\r\n var defaultFBLoginUrl = widgetConfig.fbUrl + \"/\" + widgetConfig.contestInstanceShortId + \"/Account/IntegrationServiceLogin\" +\r\n \"?serviceProvider=facebook&referrerUrl=\" + encodeURIComponent(window.location.href);\r\n\r\n if (widgetConfig.fbLoginUrl) {\r\n $scope.fbLoginUrl = widgetConfig.fbLoginUrl.replace(\"{0}\", encodeURIComponent(defaultFBLoginUrl));\r\n } else {\r\n $scope.fbLoginUrl = defaultFBLoginUrl;\r\n }\r\n }\r\n\r\n function googleSetup() {\r\n var defaultGoogleLoginUrl = widgetConfig.googleUrl + \"/\" + widgetConfig.contestInstanceShortId + \"/Account/IntegrationServiceLogin\" +\r\n \"?serviceProvider=google&referrerUrl=\" + encodeURIComponent(window.location.href);\r\n\r\n if (widgetConfig.googleLoginUrl) {\r\n $scope.googleLoginUrl = widgetConfig.googleLoginUrl.replace(\"{0}\", encodeURIComponent(defaultGoogleLoginUrl));\r\n } else {\r\n $scope.googleLoginUrl = defaultGoogleLoginUrl;\r\n }\r\n\r\n if (widgetConfig.googleLoginImage) {\r\n $scope.googleLoginImage = widgetConfig.googleLoginImage;\r\n } else if ($window.digitalIvy && $window.digitalIvy.testpage) {\r\n $scope.googleLoginImage = \"./assets/images/googlelogo_color_270x104dp.png\";\r\n } else {\r\n $scope.googleLoginImage = \"/Content/images/googlelogo_color_270x104dp.png\";\r\n }\r\n }\r\n\r\n function sfLogout() {\r\n var cookies = [{\r\n name: \"tl_ugc\",\r\n value: \"\",\r\n expires: -1\r\n }, {\r\n name: \"ENT\",\r\n value: \"\",\r\n expires: -1\r\n }, {\r\n name: \"ENT2\",\r\n value: \"\",\r\n expires: -1\r\n }, {\r\n name: \"sfott\",\r\n value: \"\",\r\n expires: -1\r\n }];\r\n setCookies(cookies).then(function(response) {\r\n });\r\n }\r\n\r\n function init() {\r\n // A facebook contest and we need to login to facebook\r\n if (widgetConfig.fbLoginRedirect) {\r\n $scope.fbLoginRedirect = true;\r\n $window.top.location = widgetConfig.fbLoginRedirect;\r\n return;\r\n }\r\n\r\n $scope.isErrorCondition = false;\r\n $scope.errorMessage = \"\";\r\n $scope.isResetPassword = widgetConfig.resetToken;\r\n $scope.isResetPasswordSuccess = false;\r\n $scope.forgotPassword = false;\r\n $scope.foundAccount = false;\r\n $scope.isFacebook = false;\r\n $scope.sendReminderSuccess = false;\r\n $scope.socialLogin = {\r\n \"facebook\": widgetConfig.validSocialLogin && widgetConfig.validSocialLogin.indexOf(\"facebook\") > -1,\r\n \"google\": widgetConfig.validSocialLogin && widgetConfig.validSocialLogin.indexOf(\"google\") > -1\r\n };\r\n\r\n if (utilsService.getQueryVariable(\"returnUrl\")) {\r\n $scope.returnURL = true;\r\n }\r\n var translate = $filter(\"translate\");\r\n $scope.redirectInstruction = translate('LABEL_ACCOUNT_LOGIN_REDIRECT_INSTRUCTION');\r\n if ($scope.redirectInstruction == 'LABEL_ACCOUNT_LOGIN_REDIRECT_INSTRUCTION') {\r\n $scope.redirectInstruction = \"You must register or sign in to view this page.\";\r\n }\r\n\r\n facebookSetup();\r\n googleSetup();\r\n\r\n var socialIntegration = {};\r\n // Get contestType from API per Ben ...\r\n apiService.getContestData().then(function (res) {\r\n $scope.contestType = res.contestType;\r\n\r\n $scope.autoLogin = false;\r\n // A facebook contest and we are already logged into facebook. We need to call the API to do marrying, etc.\r\n if (utilsService.determineSocialNetwork($window.location.href) == \"facebook\") {\r\n $scope.autoLogin = true;\r\n\r\n $scope.isLoading = true;\r\n socialIntegration = {};\r\n socialIntegration.type = \"facebook\";\r\n socialIntegration.token = fbapi.getFacebookToken();\r\n\r\n autoLogin(socialIntegration);\r\n return;\r\n } else {\r\n // new Stickyfish autologin from embed contest\r\n var sfott = utilsService.getQueryVariable(\"sfott\");\r\n if (sfott === \"logout\") {\r\n // logout if the token is blank on the querystring\r\n // clear all of the cookies\r\n // Add timeout here for host communication to take place to set login cookies\r\n $timeout(function () {\r\n sfLogout();\r\n }, 2000);\r\n } else if (sfott) {\r\n // autologin otherwise\r\n $scope.autoLogin = true;\r\n\r\n $scope.isLoading = true;\r\n socialIntegration = {};\r\n socialIntegration.type = \"rewardsAuth\";\r\n socialIntegration.token = sfott;\r\n // Add timeout here for host communication to take place to set login cookies\r\n $timeout(function () {\r\n autoLogin(socialIntegration, sfott);\r\n return;\r\n }, 2000);\r\n }\r\n }\r\n\r\n $scope.isLoading = false;\r\n $timeout(function () {\r\n $rootScope.$emit(\"renderComplete\");\r\n }, 0);\r\n }, function (err) {\r\n processError(err);\r\n $timeout(function () {\r\n $rootScope.$emit(\"renderComplete\");\r\n }, 0);\r\n });\r\n }\r\n\r\n init();\r\n\r\n});\r\n\r\n})(angular);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./loaders/iifeloader.js!./src/components/loginwidget/login-widget-controller.js\n ** module id = 18\n ** module chunks = 0\n **/","(function(angular) {\r\n\r\n/* global angular */\r\n\r\nangular.module('LoginWidget')\r\n .directive('sociallogin', function (integrationService, constants, $window) {\r\n return {\r\n restrict: 'E',\r\n scope: {},\r\n template: '{{label}}',\r\n link: function (scope, element, attrs) {\r\n\r\n if (typeof attrs.loginurl === 'undefined') {\r\n throw \"Unable to render widget, loginurl is not defined\";\r\n }\r\n\r\n if (typeof attrs.serviceprovider === 'undefined' && typeof console !== 'undefined') {\r\n console.log(\"service provider not defined, Facebook will be used\");\r\n }\r\n\r\n scope.serviceProvider = attrs.serviceprovider || \"facebook\";\r\n scope.label = attrs.logintext || constants.defaultLabels[scope.serviceProvider];\r\n scope.loginUrl = attrs.loginurl;\r\n\r\n scope.processLoginClick = function () {\r\n integrationService.openWindow(scope.loginUrl, scope.serviceProvider);\r\n };\r\n }\r\n };\r\n })\r\n .service('integrationService', function (listenerService, postLoginService) {\r\n function openWindow(url, serviceProvider) {\r\n\r\n listenerService.enableCallbackListener(postLoginService.postLoginCallback);\r\n\r\n var height = 300;\r\n if (serviceProvider === 'google') {\r\n height = 600;\r\n }\r\n\r\n var pWindow = window.open(url, 'Log into ' + serviceProvider, 'name=' + serviceProvider + (new Date()).getTime().toString() + ',directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=600, height=' + height);\r\n\r\n var intervalCounter = 0;\r\n var interval = setInterval(function () {\r\n if (pWindow.closed) {\r\n clearInterval(interval);\r\n }\r\n\r\n intervalCounter++;\r\n\r\n if (intervalCounter > 480) { //240 = one minute, for testing 20 = 5 seconds\r\n clearInterval(interval);\r\n pWindow.close();\r\n if (typeof console !== 'undefined') {\r\n console.log(\"the system did not log in within the alloted time. closing window and reseting state. You will need to attempt to login again.\");\r\n }\r\n }\r\n }, 250);\r\n }\r\n\r\n return {\r\n openWindow: openWindow\r\n };\r\n })\r\n .service('listenerService', function () {\r\n function enableCallbackListener(callbackFunc) {\r\n window.addEventListener(\"message\", receiveMessage, false);\r\n\r\n function receiveMessage(event) {\r\n\r\n if (typeof callbackFunc === 'function') {\r\n callbackFunc(event.data);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n enableCallbackListener: enableCallbackListener\r\n };\r\n })\r\n .service('postLoginService', function ($rootScope) {\r\n function postLoginCallback(data) {\r\n $rootScope.$emit(\"social-login-complete\", data);\r\n }\r\n\r\n return {\r\n postLoginCallback: postLoginCallback\r\n };\r\n\r\n\r\n })\r\n .service('constants', function () {\r\n var defaultLabels = {\r\n facebook: \"Facebook\",\r\n google: \"Google\",\r\n twitter: \"Twitter\"\r\n };\r\n\r\n return {\r\n defaultLabels: defaultLabels\r\n };\r\n });\r\n\r\n})(angular);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./loaders/iifeloader.js!./src/components/sociallogin/sociallogin.js\n ** module id = 19\n ** module chunks = 0\n **/","(function(angular) {\r\nangular.module(\"LoginWidget\").factory(\"httpService\", function ($http, $q) {\r\n \"use strict\";\r\n\r\n return {\r\n httpGet: function (url) {\r\n var deferred = $q.defer();\r\n $http.get(url)\r\n .success(function (data) {\r\n deferred.resolve(data);\r\n }).error(function (msg, code) {\r\n deferred.reject(msg);\r\n });\r\n return deferred.promise;\r\n },\r\n httpPost: function (url, jsonBody) {\r\n var deferred = $q.defer();\r\n $http.post(url, jsonBody)\r\n .success(function (data) {\r\n deferred.resolve(data);\r\n }).error(function (msg, code) {\r\n deferred.reject(msg);\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n});\r\n\r\n})(angular);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./loaders/iifeloader.js!./src/components/services/http.js\n ** module id = 20\n ** module chunks = 0\n **/","(function(angular) {\r\n\r\n/* global angular */\r\n\r\nangular.module(\"LoginWidget\").factory(\"apiService\", function($http, $q, $log, httpService, widgetConfig) {\r\n \"use strict\";\r\n\r\n function getTokenQueryFragment(consumerToken) {\r\n var fragmts = [\"appaccesstoken=\", widgetConfig.appAccessToken];\r\n\r\n if (consumerToken) {\r\n fragmts = fragmts.concat([\"&consumertoken=\", consumerToken]);\r\n }\r\n\r\n return fragmts.join('');\r\n }\r\n\r\n return {\r\n login: function(data) {\r\n var def = $q.defer();\r\n\r\n httpService.httpPost([widgetConfig.apiUrl, \"/auth/\", widgetConfig.organizationId.replace(/-/g, \"\"), \"/login\", \"?\", getTokenQueryFragment()].join(\"\"), data).then(function(res) {\r\n if (!res.success) {\r\n return def.reject(res);\r\n }\r\n def.resolve(res.data);\r\n }, function(err) {\r\n def.reject(err);\r\n });\r\n\r\n return def.promise;\r\n },\r\n sendReminderEmail: function(data) {\r\n var def = $q.defer();\r\n\r\n httpService.httpPost([widgetConfig.apiUrl, \"/auth/\", widgetConfig.organizationId.replace(/-/g, \"\"), \"/sendForgotPassword\", \"?\", getTokenQueryFragment()].join(\"\"), data).then(function(res) {\r\n if (!res.success) {\r\n return def.reject(res);\r\n }\r\n def.resolve(res.data);\r\n }, function(err) {\r\n def.reject(err);\r\n });\r\n\r\n return def.promise;\r\n },\r\n resetPassword: function(data) {\r\n var def = $q.defer();\r\n\r\n httpService.httpPost([widgetConfig.apiUrl, \"/auth/\", widgetConfig.organizationId.replace(/-/g, \"\"), \"/resetPassword\", \"?\", getTokenQueryFragment()].join(\"\"), data).then(function(res) {\r\n if (!res.success) {\r\n return def.reject(res);\r\n }\r\n def.resolve(res.data);\r\n }, function(err) {\r\n def.reject(err);\r\n });\r\n\r\n return def.promise;\r\n },\r\n getContestData: function() {\r\n var def = $q.defer();\r\n\r\n httpService.httpGet([widgetConfig.apiUrl, \"/contests/\", widgetConfig.contestInstanceShortId, \"?\", getTokenQueryFragment(), \"&ispreviewmode=\", widgetConfig.isPreviewMode].join(\"\")).then(function(res) {\r\n if (!res.success) {\r\n return def.reject(res);\r\n }\r\n def.resolve(res.data);\r\n }, function(err) {\r\n def.reject(err);\r\n });\r\n\r\n return def.promise;\r\n },\r\n getUserProfile: function(consumerToken) {\r\n var def = $q.defer();\r\n\r\n httpService.httpGet([widgetConfig.apiUrl, \"/contests/\", widgetConfig.contestInstanceShortId, \"/userProfile\", \"?\", getTokenQueryFragment(consumerToken), \"&ispreviewmode=\", widgetConfig.isPreviewMode].join(\"\")).then(function(res) {\r\n if (!res.success) {\r\n return def.reject(res);\r\n }\r\n def.resolve(res.data);\r\n }, function(err) {\r\n def.reject(err);\r\n });\r\n\r\n return def.promise;\r\n }\r\n };\r\n});\r\n\r\n})(angular);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./loaders/iifeloader.js!./src/components/services/api.js\n ** module id = 21\n ** module chunks = 0\n **/","(function(angular) {\r\n/* global angular */\r\nangular.module(\"LoginWidget\").factory(\"fbapi\", function ($window, widgetConfig, utilsService) {\r\n \"use strict\";\r\n\r\n return {\r\n getFacebookToken: function () {\r\n if (widgetConfig.signedRequest) {\r\n // get access token\r\n // base64url decode\r\n var signedRequest = null;\r\n var tokens = widgetConfig.signedRequest.split('.');\r\n // is this a TD request?\r\n if (tokens[0].toLowerCase() === 'td') {\r\n // get facebookToken from signedRequest\r\n signedRequest = JSON.parse(utilsService.base64DecodeUrl(tokens[1], true));\r\n return signedRequest.oauth_token;\r\n } else {\r\n // get facebookToken from signedRequest\r\n signedRequest = JSON.parse(utilsService.base64DecodeUrl(tokens[1], false));\r\n return signedRequest.oauth_token;\r\n }\r\n }\r\n },\r\n getFBContestLoginRedirectUrl: function (contestType, consumerToken) {\r\n var host = $window.location.href;\r\n var returnUrl = \"\";\r\n if (consumerToken) {\r\n switch (contestType) {\r\n case 3: // Brackets\r\n returnUrl = host.replace(/Account\\/Facebooklogon/i, \"Brackets/BracketsLanding\");\r\n break;\r\n case 2: // Sweepstakes\r\n returnUrl = host.replace(/Account\\/Facebooklogon/i, \"Sweepstakes/Landing\");\r\n break;\r\n case 1: // UGC\r\n returnUrl = host.replace(/Account\\/Facebooklogon/i, \"UGC/Welcome\");\r\n break;\r\n }\r\n } else {\r\n switch (contestType) {\r\n case 3: // Brackets\r\n returnUrl = host.replace(/Account\\/Facebooklogon/i, \"Brackets/RegistrationGet\");\r\n break;\r\n case 2: // Sweepstakes\r\n returnUrl = host.replace(/Account\\/Facebooklogon/i, \"Sweepstakes/Landing\");\r\n break;\r\n case 1: // UGC\r\n returnUrl = host.replace(/Account\\/Facebooklogon/i, \"UGC/RegistrationGet\");\r\n break;\r\n }\r\n }\r\n\r\n // attach signed_request if not there\r\n if (returnUrl.indexOf(\"signed_request\") == -1) {\r\n if (returnUrl.indexOf(\"?\") == -1) {\r\n returnUrl += \"?signed_request=\" + widgetConfig.signedRequest;\r\n } else {\r\n returnUrl += \"&signed_request=\" + widgetConfig.signedRequest;\r\n }\r\n }\r\n\r\n // add referraltoken, but only if it's not there\r\n if (returnUrl.search(\"rft=\") === -1) {\r\n var referralToken = utilsService.getQueryVariable(\"rft\");\r\n if (referralToken) {\r\n if (returnUrl.indexOf(\"?\") == -1) {\r\n returnUrl += \"?rft=\" + referralToken;\r\n } else {\r\n returnUrl += \"&rft=\" + referralToken;\r\n }\r\n }\r\n }\r\n\r\n // fb sweeps need fb route because of iframe\r\n if (contestType !== 2) {\r\n returnUrl = returnUrl.replace(/\\/fb\\//i, \"/tdfb/\");\r\n }\r\n\r\n return returnUrl;\r\n }\r\n };\r\n});\r\n\r\n})(angular);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./loaders/iifeloader.js!./src/components/services/fbapi.js\n ** module id = 22\n ** module chunks = 0\n **/","(function(angular) {\r\nangular.module('LoginWidget').factory('$exceptionHandler', function ($log) {\r\n\r\n return function (exception, cause) {\r\n if (typeof (exception) === \"string\") {\r\n exception = new Error(exception);\r\n }\r\n\r\n exception.message += ' (caused by \"' + cause + '\")';\r\n\r\n $log.error(exception);\r\n };\r\n});\r\n\r\n})(angular);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./loaders/iifeloader.js!./src/components/services/error.js\n ** module id = 23\n ** module chunks = 0\n **/","(function(angular) {\r\nvar path = './components/loginwidget/login-widget-directive.html';\nvar html = \"
        \\r\\n
          \\r\\n
        • {{'LABEL_ACCOUNT_REMAINDER_EMAIL'|translate}}
        • \\r\\n
        \\r\\n
        \\r\\n\\r\\n
        \\r\\n {{errorMessage}}\\r\\n
        \\r\\n\\r\\n
        \\r\\n
        \\r\\n \\r\\n
        \\r\\n
        \\r\\n\\r\\n
        \\r\\n \\r\\n

        {{redirectInstruction}}

        \\r\\n
        \\r\\n\\r\\n

        \\r\\n {{'LABEL_ACCOUNT_LOGIN_DONTHAVEANACCOUNT'|translate}}\\r\\n {{'LABEL_ACCOUNT_LOGIN_CREATEACCOUNT'|translate}}\\r\\n

        \\r\\n\\r\\n
        \\r\\n
        \\r\\n
        \\r\\n \\r\\n
        \\r\\n \\r\\n \\r\\n\\r\\n {{'LABEL_ACCOUNT_REGISTER_REQUIRED_FIELD'|translate}}\\r\\n {{'LABEL_ACCOUNT_REGISTER_NOT_VALID_EMAIL'|translate}}\\r\\n
        \\r\\n
        \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n {{'LABEL_ACCOUNT_REGISTER_REQUIRED_FIELD'|translate}}\\r\\n\\r\\n {{'LABEL_ACCOUNT_LOGIN_FORGOTPW_LABEL'|translate}}\\r\\n
        \\r\\n \\r\\n
        \\r\\n\\r\\n \\r\\n
        \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n {{'LABEL_ACCOUNT_REGISTER_REQUIRED_FIELD'|translate}}\\r\\n {{'LABEL_ACCOUNT_REGISTER_NOT_VALID_EMAIL'|translate}}\\r\\n
        \\r\\n {{'LABEL_ACCOUNT_LOGIN_GOBACK'|translate}}\\r\\n \\r\\n
        \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n
        \\r\\n
        \\r\\n\\r\\n
        \\r\\n

        {{'LABEL_ACCOUNT_PASSWORDRESET_PAGE_TITLE'|translate}}

        \\r\\n
        \\r\\n \\r\\n
        \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n {{'LABEL_ACCOUNT_REGISTER_REQUIRED_FIELD'|translate}}\\r\\n
        \\r\\n\\r\\n
        \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n {{'LABEL_ACCOUNT_REGISTER_REQUIRED_FIELD'|translate}}\\r\\n {{'LABEL_ACCOUNT_REGISTER_PASSWORD_DONT_MATCH'|translate}}\\r\\n
        \\r\\n\\r\\n
        \\r\\n \\r\\n
        \\r\\n
        \\r\\n
        \\r\\n
        \\r\\n\\r\\n
        \\r\\n

        {{'LABEL_ACCOUNT_RESETPASSWORDSUCCESS_PAGE_TITLE'|translate}}

        \\r\\n

        \\r\\n
        \\r\\n
        \\r\\n
        \";\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, html) }]);\nmodule.exports = path;\r\n})(angular);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./loaders/iifeloader.js!./src/components/loginwidget/login-widget-directive.html\n ** module id = 24\n ** module chunks = 0\n **/"],"sourceRoot":""}