You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by pz...@apache.org on 2018/03/14 18:36:00 UTC

[1/3] knox git commit: KNOX-1202 - Added UI elements to indicate invalid param values

Repository: knox
Updated Branches:
  refs/heads/master 97d865e51 -> 2e8716d89


http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-applications/src/main/resources/applications/admin-ui/app/main.bfb4b6a3d7d72f4c8841.bundle.js
----------------------------------------------------------------------
diff --git a/gateway-applications/src/main/resources/applications/admin-ui/app/main.bfb4b6a3d7d72f4c8841.bundle.js b/gateway-applications/src/main/resources/applications/admin-ui/app/main.bfb4b6a3d7d72f4c8841.bundle.js
deleted file mode 100644
index 2671e89..0000000
--- a/gateway-applications/src/main/resources/applications/admin-ui/app/main.bfb4b6a3d7d72f4c8841.bundle.js
+++ /dev/null
@@ -1 +0,0 @@
-webpackJsonp([0],{"+Bgu":function(e,t,n){"use strict";var r=n("vs5U");e.exports=new r("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:function(){return!0},construct:function(){},predicate:function(e){return"undefined"==typeof e},represent:function(){return""}})},"+Bur":function(e,t,n){e.exports=i;var r=n("rOzH").EventEmitter;function i(){r.call(this)}n("lDCR")(i,r),i.Readable=n("Osec"),i.Writable=n("QRYi"),i.Duplex=n("XvLI"),i.Transform=n("EJO3"),i.PassThrough=n("rr9E"),i.Stream=i,i.prototype.pipe=function(e,t){var n=this;function i(t){e.writable&&!1===e.write(t)&&n.pause&&n.pause()}function o(){n.readable&&n.resume&&n.resume()}n.on("data",i),e.on("drain",o),e._isStdio||t&&!1===t.end||(n.on("end",s),n.on("close",l));var a=!1;function s(){a||(a=!0,e.end())}function l(){a||(a=!0,"function"==typeof e.destroy&&e.destroy())}function u(e){if(c(),0===r.listenerCount(this,"error"))throw e}function c(){n.removeListener("data",i),e.removeListener("drain",o),n.removeListener("end",s),n
 .removeListener("close",l),n.removeListener("error",u),e.removeListener("error",u),n.removeListener("end",c),n.removeListener("close",c),e.removeListener("close",c)}return n.on("error",u),e.on("error",u),n.on("end",c),n.on("close",c),e.on("close",c),e.emit("pipe",n),e}},"+GRi":function(e,t,n){var r=n("Wo2w"),i=n("Wy9r");e.exports=function(e){return r(i(e))}},"+Q6C":function(e,t,n){var r=n("CDXM"),i=n("6De9").f,o=n("+pQw");r(r.S,"Reflect",{deleteProperty:function(e,t){var n=i(o(e),t);return!(n&&!n.configurable)&&delete e[t]}})},"+Ttu":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("0nO6"),i=n("T/R7");t.base64=function(e){return i.isPresent(r.Validators.required(e))?null:/^(?:[A-Z0-9+\/]{4})*(?:[A-Z0-9+\/]{2}==|[A-Z0-9+\/]{3}=|[A-Z0-9+\/]{4})$/i.test(e.value)?null:{base64:!0}}},"+UpI":function(e,t,n){"use strict";var r=n("vs5U");e.exports=new r("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return null!==e?e:{}}})},"+aW+":function(
 e,t,n){"use strict";var r=n("CDXM"),i=n("uNkO"),o=n("RT4T"),a=n("umMR"),s=[].sort,l=[1,2,3];r(r.P+r.F*(a(function(){l.sort(void 0)})||!a(function(){l.sort(null)})||!n("bhtb")(s)),"Array",{sort:function(e){return void 0===e?s.call(o(this)):s.call(o(this),i(e))}})},"+c1l":function(e,t,n){var r=n("CDXM");r(r.S+r.F*!n("V+0c"),"Object",{defineProperty:n("tose").f})},"+drv":function(e,t,n){n("s4JA"),e.exports=n("pj25").Object.assign},"+iEx":function(e,t,n){n("fHxy"),n("5GJ3"),n("X0O/"),n("HCkn"),n("ncNB"),n("soMw"),n("8sYH"),n("IJ3P"),n("t6ta"),e.exports=n("b4gG").Reflect},"+idH":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("LMZF"),i=n("Hdv7"),o=n("Dgm+"),a=n("Y3rb"),s=n("W+gm"),l=n("6qBi"),u=n("wmqw"),c=n("1YRa"),d=n("JbX1"),h=n("HJG1"),p=n("OmhC"),f=n("IX7e"),m=n("XW+V"),g=n("dq/9"),v=n("Gy8F"),y=n("udAz"),b=n("xRTw"),w=n("qdWP"),x=n("XJNw"),E=n("dFH0"),k=n("5AhL"),C=n("6nEb"),_=n("TCRl"),S=n("EBKx"),A=n("RMfc"),T=n("r9fp");t.CustomValidators={ba
 se64:i.base64,creditCard:o.creditCard,date:a.date,dateISO:s.dateISO,digits:l.digits,email:u.email,equal:c.equal,equalTo:d.equalTo,gt:h.gt,gte:p.gte,json:f.json,lt:m.lt,lte:g.lte,max:v.max,maxDate:y.maxDate,min:b.min,minDate:w.minDate,notEqual:x.notEqual,notEqualTo:E.notEqualTo,number:k.number,phone:C.phone,range:_.range,rangeLength:S.rangeLength,url:A.url,uuid:T.uuid};var D=[i.Base64Validator,o.CreditCardValidator,a.DateValidator,s.DateISOValidator,l.DigitsValidator,u.EmailValidator,c.EqualValidator,d.EqualToValidator,h.GreaterThanValidator,p.GreaterThanEqualValidator,f.JSONValidator,m.LessThanValidator,g.LessThanEqualValidator,v.MaxValidator,y.MaxDateValidator,b.MinValidator,w.MinDateValidator,x.NotEqualValidator,E.NotEqualToValidator,k.NumberValidator,C.PhoneValidator,_.RangeValidator,S.RangeLengthValidator,A.UrlValidator,T.UUIDValidator];t.CustomFormsModule=function(){function e(){}return e.decorators=[{type:r.NgModule,args:[{declarations:[D],exports:[D]}]}],e}()},"+pQw":function
 (e,t,n){var r=n("JXkd");e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},"/JsI":function(e,t,n){var r=n("CDXM");r(r.S+r.F,"Object",{assign:n("rIdM")})},"/Mgt":function(e,t,n){var r=n("CDXM");r(r.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},"/XRd":function(e,t,n){var r=n("tose"),i=n("CDXM"),o=n("+pQw"),a=n("A1WY");i(i.S+i.F*n("umMR")(function(){Reflect.defineProperty(r.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(e,t,n){o(e),t=a(t,!0),o(n);try{return r.f(e,t,n),!0}catch(e){return!1}}})},"/cYh":function(e,t,n){"use strict";var r=n("zOKz").Buffer,i=r.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case
 "ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(r.isEncoding===i||!i(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=l,this.end=u,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=c,this.end=d,t=3;break;default:return this.write=h,void(this.end=p)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(t)}function a(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:-1}function s(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"\ufffd".repeat(n);if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"\ufffd".repeat(n+1);if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"\ufffd".repeat(n+2)}}(this,e,t);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,
 this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function l(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function u(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("utf16le",0,this.lastTotal-this.lastNeed):t}function c(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function d(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.last
 Need):t}function h(e){return e.toString(this.encoding)}function p(e){return e&&e.length?this.write(e):""}t.StringDecoder=o,o.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n<e.length?t?t+this.text(e,n):this.text(e,n):t||""},o.prototype.end=function(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"\ufffd".repeat(this.lastTotal-this.lastNeed):t},o.prototype.text=function(e,t){var n=function(e,t,n){var r=t.length-1;if(r<n)return 0;var i=a(t[r]);return i>=0?(i>0&&(e.lastNeed=i-1),i):--r<n?0:(i=a(t[r]))>=0?(i>0&&(e.lastNeed=i-2),i):--r<n?0:(i=a(t[r]))>=0?(i>0&&(2===i?i=0:e.lastNeed=i-3),i):0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var r=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},o.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-t
 his.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},"/gBU":function(e,t,n){(function(){"use strict";var e,r,i,o,a,s={}.hasOwnProperty;e=n("ZMI8"),r=n("XPJv").defaults,o=function(e){return"string"==typeof e&&(e.indexOf("&")>=0||e.indexOf(">")>=0||e.indexOf("<")>=0)},a=function(e){return"<![CDATA["+i(e)+"]]>"},i=function(e){return e.replace("]]>","]]]]><![CDATA[>")},t.Builder=function(){function t(e){var t,n;for(t in this.options={},n=r[.2])s.call(n,t)&&(this.options[t]=n[t]);for(t in e)s.call(e,t)&&(this.options[t]=e[t])}return t.prototype.buildObject=function(t){var n,i,l,u,c,d;return n=this.options.attrkey,i=this.options.charkey,1===Object.keys(t).length&&this.options.rootName===r[.2].rootName?t=t[c=Object.keys(t)[0]]:c=this.options.rootName,d=this,l=function(e,t){var r,u,c,h,p;if("object"!=typeof t)d.options.cdata&&o(t)?e.raw(a(t)):e.txt(t);else if(Array.isArray
 (t)){for(h in t)if(s.call(t,h))for(p in u=t[h])c=u[p],e=l(e.ele(p),c).up()}else for(p in t)if(s.call(t,p))if(u=t[p],p===n){if("object"==typeof u)for(r in u)e=e.att(r,u[r])}else if(p===i)e=d.options.cdata&&o(u)?e.raw(a(u)):e.txt(u);else if(Array.isArray(u))for(h in u)s.call(u,h)&&(e="string"==typeof(c=u[h])?d.options.cdata&&o(c)?e.ele(p).raw(a(c)).up():e.ele(p,c).up():l(e.ele(p),c).up());else"object"==typeof u?e=l(e.ele(p),u).up():"string"==typeof u&&d.options.cdata&&o(u)?e=e.ele(p).raw(a(u)).up():(null==u&&(u=""),e=e.ele(p,u.toString()).up());return e},u=e.create(c,this.options.xmldec,this.options.doctype,{headless:this.options.headless,allowSurrogateChars:this.options.allowSurrogateChars}),l(u,t).end(this.options.renderOpts)},t}()}).call(this)},"/wY1":function(e,t,n){n("rMMT"),n("dlwK"),n("/XRd"),n("+Q6C"),n("dBNB"),n("7Fno"),n("gZpL"),n("dSHT"),n("d+61"),n("V2Dj"),n("wJYt"),n("gdNQ"),n("VsLy"),n("wLW2"),e.exports=n("b4gG").Reflect},0:function(e,t,n){e.exports=n("cDNt")},"05/W":fun
 ction(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("0nO6"),i=n("T/R7");t.min=function(e){return function(t){if(!i.isPresent(e))return null;if(i.isPresent(r.Validators.required(t)))return null;var n=+t.value;return n>=+e?null:{actualValue:n,requiredValue:+e,min:!0}}}},"0MXQ":function(e,t,n){var r=n("CDXM");r(r.S,"Math",{fround:n("xxX9")})},"0a2p":function(e,t,n){(function(e){var r=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(r.call(setTimeout,window,arguments),clearTimeout)},t.setInterval=function(){return new i(r.call(setInterval,window,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(window,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.act
 ive=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},n("fItk"),t.setImmediate="undefined"!=typeof self&&self.setImmediate||"undefined"!=typeof e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||"undefined"!=typeof e&&e.clearImmediate||this&&this.clearImmediate}).call(t,n("fRUx"))},"0aOR":function(e,t,n){n("dFZ2");var r=n("pj25").Object;e.exports=function(e,t,n){return r.defineProperty(e,t,n)}},"0bgt":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("0nO6"),i=n("T/R7");t.number=function(e){return i.isPresent(r.Validators.required(e))?null:/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(e.value)?null:{number:!0}}},"0dXn":function(e,t,n){var r=n("Nvcy"),i=n("Ft6c"),o=n("c/Zl");e.exports=n("tZKi")?Object.defineProperties:function(e,t){i(e);for(var n,a=o(t),s=a.length,l=0;s>l;)r.f(e,n=a[l++],t[n]);r
 eturn e}},"0hsw":function(e,t,n){e.exports={default:n("0aOR"),__esModule:!0}},"0nO6":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("6Xbx"),i=n("LMZF"),o=n("AP4T"),a=n("Ecq+"),s=n("1j/l"),l=n("qgI0"),u=n("lI6h"),c=function(e){function t(t,n){e.call(this),this.sources=t,this.resultSelector=n}return Object(r.b)(t,e),t.create=function(){for(var e=[],n=0;n<arguments.length;n++)e[n-0]=arguments[n];if(null===e||0===arguments.length)return new a.a;var r=null;return"function"==typeof e[e.length-1]&&(r=e.pop()),1===e.length&&Object(s.a)(e[0])&&(e=e[0]),0===e.length?new a.a:new t(e,r)},t.prototype._subscribe=function(e){return new d(e,this.sources,this.resultSelector)},t}(o.Observable),d=function(e){function t(t,n,r){e.call(this,t),this.sources=n,this.resultSelector=r,this.completed=0,this.haveValues=0;var i=n.length;this.total=i,this.values=new Array(i);for(var o=0;o<i;o++){var a=n[o],s=Object(l.a)(this,a,null,o);s&&(s.outerIndex=o,this.add(s))}}return 
 Object(r.b)(t,e),t.prototype.notifyNext=function(e,t,n,r,i){this.values[n]=t,i._hasValue||(i._hasValue=!0,this.haveValues++)},t.prototype.notifyComplete=function(e){var t=this.destination,n=this.haveValues,r=this.resultSelector,i=this.values,o=i.length;if(e._hasValue){if(this.completed++,this.completed===o){if(n===o){var a=r?r.apply(this,i):i;t.next(a)}t.complete()}}else t.complete()},t}(u.a),h=c.create,p=n("xIGM");function f(e){var t=e.subscriber;t.closed||(t.next(e.value),t.complete())}function m(e){var t=e.subscriber;t.closed||t.error(e.err)}var g=function(e){function t(t,n){e.call(this),this.promise=t,this.scheduler=n}return Object(r.b)(t,e),t.create=function(e,n){return new t(e,n)},t.prototype._subscribe=function(e){var t=this,n=this.promise,r=this.scheduler;if(null==r)this._isScalar?e.closed||(e.next(this.value),e.complete()):n.then(function(n){t.value=n,t._isScalar=!0,e.closed||(e.next(n),e.complete())},function(t){e.closed||e.error(t)}).then(null,function(e){p.a.setTimeout(f
 unction(){throw e})});else if(this._isScalar){if(!e.closed)return r.schedule(f,0,{value:this.value,subscriber:e})}else n.then(function(n){t.value=n,t._isScalar=!0,e.closed||e.add(r.schedule(f,0,{value:n,subscriber:e}))},function(t){e.closed||e.add(r.schedule(m,0,{err:t,subscriber:e}))}).then(null,function(e){p.a.setTimeout(function(){throw e})})},t}(o.Observable).create,v=n("dmC+"),y=n("RyBE");n.d(t,"AbstractControlDirective",function(){return b}),n.d(t,"AbstractFormGroupDirective",function(){return pe}),n.d(t,"CheckboxControlValueAccessor",function(){return O}),n.d(t,"ControlContainer",function(){return w}),n.d(t,"NG_VALUE_ACCESSOR",function(){return D}),n.d(t,"COMPOSITION_BUFFER_MODE",function(){return N}),n.d(t,"DefaultValueAccessor",function(){return $}),n.d(t,"NgControl",function(){return j}),n.d(t,"NgControlStatus",function(){return ge}),n.d(t,"NgControlStatusGroup",function(){return ve}),n.d(t,"NgForm",function(){return Ae}),n.d(t,"NgModel",function(){return Pe}),n.d(t,"NgMod
 elGroup",function(){return Ne}),n.d(t,"RadioControlValueAccessor",function(){return U}),n.d(t,"FormControlDirective",function(){return Be}),n.d(t,"FormControlName",function(){return Ke}),n.d(t,"FormGroupDirective",function(){return Ve}),n.d(t,"FormArrayName",function(){return We}),n.d(t,"FormGroupName",function(){return Ue}),n.d(t,"NgSelectOption",function(){return X}),n.d(t,"SelectControlValueAccessor",function(){return K}),n.d(t,"SelectMultipleControlValueAccessor",function(){return Z}),n.d(t,"CheckboxRequiredValidator",function(){return Ze}),n.d(t,"EmailValidator",function(){return et}),n.d(t,"MaxLengthValidator",function(){return it}),n.d(t,"MinLengthValidator",function(){return nt}),n.d(t,"PatternValidator",function(){return at}),n.d(t,"RequiredValidator",function(){return Je}),n.d(t,"FormBuilder",function(){return st}),n.d(t,"AbstractControl",function(){return xe}),n.d(t,"FormArray",function(){return Ce}),n.d(t,"FormControl",function(){return Ee}),n.d(t,"FormGroup",function(){
 return ke}),n.d(t,"NG_ASYNC_VALIDATORS",function(){return k}),n.d(t,"NG_VALIDATORS",function(){return E}),n.d(t,"Validators",function(){return _}),n.d(t,"VERSION",function(){return lt}),n.d(t,"FormsModule",function(){return ft}),n.d(t,"ReactiveFormsModule",function(){return mt}),n.d(t,"\u0275ba",function(){return pt}),n.d(t,"\u0275z",function(){return ht}),n.d(t,"\u0275x",function(){return ct}),n.d(t,"\u0275y",function(){return dt}),n.d(t,"\u0275a",function(){return F}),n.d(t,"\u0275b",function(){return R}),n.d(t,"\u0275c",function(){return fe}),n.d(t,"\u0275d",function(){return me}),n.d(t,"\u0275e",function(){return _e}),n.d(t,"\u0275f",function(){return $e}),n.d(t,"\u0275g",function(){return Re}),n.d(t,"\u0275bf",function(){return ut}),n.d(t,"\u0275bb",function(){return M}),n.d(t,"\u0275bc",function(){return I}),n.d(t,"\u0275h",function(){return V}),n.d(t,"\u0275i",function(){return z}),n.d(t,"\u0275bd",function(){return H}),n.d(t,"\u0275be",function(){return W}),n.d(t,"\u0275j",f
 unction(){return Ie}),n.d(t,"\u0275k",function(){return Ge}),n.d(t,"\u0275l",function(){return je}),n.d(t,"\u0275n",function(){return He}),n.d(t,"\u0275m",function(){return ze}),n.d(t,"\u0275o",function(){return q}),n.d(t,"\u0275q",function(){return Q}),n.d(t,"\u0275p",function(){return Y}),n.d(t,"\u0275s",function(){return Ye}),n.d(t,"\u0275t",function(){return Qe}),n.d(t,"\u0275v",function(){return rt}),n.d(t,"\u0275u",function(){return tt}),n.d(t,"\u0275w",function(){return ot}),n.d(t,"\u0275r",function(){return Xe});var b=function(){function e(){}return Object.defineProperty(e.prototype,"value",{get:function(){return this.control?this.control.value:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"valid",{get:function(){return this.control?this.control.valid:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"invalid",{get:function(){return this.control?this.control.invalid:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.
 prototype,"pending",{get:function(){return this.control?this.control.pending:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"disabled",{get:function(){return this.control?this.control.disabled:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"enabled",{get:function(){return this.control?this.control.enabled:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"errors",{get:function(){return this.control?this.control.errors:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pristine",{get:function(){return this.control?this.control.pristine:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dirty",{get:function(){return this.control?this.control.dirty:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"touched",{get:function(){return this.control?this.control.touched:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"status",{get:fu
 nction(){return this.control?this.control.status:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"untouched",{get:function(){return this.control?this.control.untouched:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"statusChanges",{get:function(){return this.control?this.control.statusChanges:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"valueChanges",{get:function(){return this.control?this.control.valueChanges:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"path",{get:function(){return null},enumerable:!0,configurable:!0}),e.prototype.reset=function(e){void 0===e&&(e=void 0),this.control&&this.control.reset(e)},e.prototype.hasError=function(e,t){return!!this.control&&this.control.hasError(e,t)},e.prototype.getError=function(e,t){return this.control?this.control.getError(e,t):null},e}(),w=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Object(r.b)(t,e)
 ,Object.defineProperty(t.prototype,"formDirective",{get:function(){return null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return null},enumerable:!0,configurable:!0}),t}(b);function x(e){return null==e||0===e.length}var E=new i.InjectionToken("NgValidators"),k=new i.InjectionToken("NgAsyncValidators"),C=/^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/,_=function(){function e(){}return e.min=function(e){return function(t){if(x(t.value)||x(e))return null;var n=parseFloat(t.value);return!isNaN(n)&&n<e?{min:{min:e,actual:t.value}}:null}},e.max=function(e){return function(t){if(x(t.value)||x(e))return null;var n=parseFloat(t.value);return!isNaN(n)&&n>e?{max:{max:e,actual:t.value}}:null}},e.required=function(e){return x(e.value)?{required:!0}:null},e.requiredTrue=function(e){return!0===e.value?null:{requi
 red:!0}},e.email=function(e){return C.test(e.value)?null:{email:!0}},e.minLength=function(e){return function(t){if(x(t.value))return null;var n=t.value?t.value.length:0;return n<e?{minlength:{requiredLength:e,actualLength:n}}:null}},e.maxLength=function(e){return function(t){var n=t.value?t.value.length:0;return n>e?{maxlength:{requiredLength:e,actualLength:n}}:null}},e.pattern=function(t){return t?("string"==typeof t?(r="^"+t+"$",n=new RegExp(r)):(r=t.toString(),n=t),function(e){if(x(e.value))return null;var t=e.value;return n.test(t)?null:{pattern:{requiredPattern:r,actualValue:t}}}):e.nullValidator;var n,r},e.nullValidator=function(e){return null},e.compose=function(e){if(!e)return null;var t=e.filter(S);return 0==t.length?null:function(e){return T(function(e,n){return t.map(function(t){return t(e)})}(e))}},e.composeAsync=function(e){if(!e)return null;var t=e.filter(S);return 0==t.length?null:function(e){var n=function(e,n){return t.map(function(t){return t(e)})}(e).map(A);return
  v.a.call(h(n),T)}},e}();function S(e){return null!=e}function A(e){var t=Object(i["\u0275isPromise"])(e)?g(e):e;if(!Object(i["\u0275isObservable"])(t))throw new Error("Expected validator to return Promise or Observable.");return t}function T(e){var t=e.reduce(function(e,t){return null!=t?Object(r.a)({},e,t):e},{});return 0===Object.keys(t).length?null:t}var D=new i.InjectionToken("NgValueAccessor"),F={provide:D,useExisting:Object(i.forwardRef)(function(){return O}),multi:!0},O=function(){function e(e,t){this._renderer=e,this._elementRef=t,this.onChange=function(e){},this.onTouched=function(){}}return e.prototype.writeValue=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"checked",e)},e.prototype.registerOnChange=function(e){this.onChange=e},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",e)},e}(),R={provide:D,useExisting:Object(i.forwardRef
 )(function(){return $}),multi:!0},N=new i.InjectionToken("CompositionEventMode"),$=function(){function e(e,t,n){var r;this._renderer=e,this._elementRef=t,this._compositionMode=n,this.onChange=function(e){},this.onTouched=function(){},this._composing=!1,null==this._compositionMode&&(this._compositionMode=(r=Object(y.r)()?Object(y.r)().getUserAgent():"",!/android (\d+)/.test(r.toLowerCase())))}return e.prototype.writeValue=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==e?"":e)},e.prototype.registerOnChange=function(e){this.onChange=e},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",e)},e.prototype._handleInput=function(e){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(e)},e.prototype._compositionStart=function(){this._composing=!0},e.prototype._compositionEnd=function(e){this._composing=!1,this.
 _compositionMode&&this.onChange(e)},e}();function L(e){return e.validate?function(t){return e.validate(t)}:e}function P(e){return e.validate?function(t){return e.validate(t)}:e}var M={provide:D,useExisting:Object(i.forwardRef)(function(){return I}),multi:!0},I=function(){function e(e,t){this._renderer=e,this._elementRef=t,this.onChange=function(e){},this.onTouched=function(){}}return e.prototype.writeValue=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==e?"":e)},e.prototype.registerOnChange=function(e){this.onChange=function(t){e(""==t?null:parseFloat(t))}},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",e)},e}();function B(){throw new Error("unimplemented")}var j=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._parent=null,t.name=null,t.valueAccessor=null,t._rawValidators=[],t._rawAsyncValidator
 s=[],t}return Object(r.b)(t,e),Object.defineProperty(t.prototype,"validator",{get:function(){return B()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"asyncValidator",{get:function(){return B()},enumerable:!0,configurable:!0}),t}(b),V={provide:D,useExisting:Object(i.forwardRef)(function(){return U}),multi:!0},z=function(){function e(){this._accessors=[]}return e.prototype.add=function(e,t){this._accessors.push([e,t])},e.prototype.remove=function(e){for(var t=this._accessors.length-1;t>=0;--t)if(this._accessors[t][1]===e)return void this._accessors.splice(t,1)},e.prototype.select=function(e){var t=this;this._accessors.forEach(function(n){t._isSameGroup(n,e)&&n[1]!==e&&n[1].fireUncheck(e.value)})},e.prototype._isSameGroup=function(e,t){return!!e[0].control&&e[0]._parent===t._control._parent&&e[1].name===t.name},e}(),U=function(){function e(e,t,n,r){this._renderer=e,this._elementRef=t,this._registry=n,this._injector=r,this.onChange=function(){},this.onTouched=funct
 ion(){}}return e.prototype.ngOnInit=function(){this._control=this._injector.get(j),this._checkName(),this._registry.add(this._control,this)},e.prototype.ngOnDestroy=function(){this._registry.remove(this)},e.prototype.writeValue=function(e){this._state=e===this.value,this._renderer.setProperty(this._elementRef.nativeElement,"checked",this._state)},e.prototype.registerOnChange=function(e){var t=this;this._fn=e,this.onChange=function(){e(t.value),t._registry.select(t)}},e.prototype.fireUncheck=function(e){this.writeValue(e)},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",e)},e.prototype._checkName=function(){this.name&&this.formControlName&&this.name!==this.formControlName&&this._throwNameError(),!this.name&&this.formControlName&&(this.name=this.formControlName)},e.prototype._throwNameError=function(){throw new Error('\n      If you define both a name and a formCon
 trolName attribute on your radio button, their values\n      must match. Ex: <input type="radio" formControlName="food" name="food">\n    ')},e}(),H={provide:D,useExisting:Object(i.forwardRef)(function(){return W}),multi:!0},W=function(){function e(e,t){this._renderer=e,this._elementRef=t,this.onChange=function(e){},this.onTouched=function(){}}return e.prototype.writeValue=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"value",parseFloat(e))},e.prototype.registerOnChange=function(e){this.onChange=function(t){e(""==t?null:parseFloat(t))}},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",e)},e}(),q={provide:D,useExisting:Object(i.forwardRef)(function(){return K}),multi:!0};function G(e,t){return null==e?""+t:(t&&"object"==typeof t&&(t="Object"),(e+": "+t).slice(0,50))}var K=function(){function e(e,t){this._renderer=e,this._elementRef=t,this._o
 ptionMap=new Map,this._idCounter=0,this.onChange=function(e){},this.onTouched=function(){},this._compareWith=i["\u0275looseIdentical"]}return Object.defineProperty(e.prototype,"compareWith",{set:function(e){if("function"!=typeof e)throw new Error("compareWith must be a function, but received "+JSON.stringify(e));this._compareWith=e},enumerable:!0,configurable:!0}),e.prototype.writeValue=function(e){this.value=e;var t=this._getOptionId(e);null==t&&this._renderer.setProperty(this._elementRef.nativeElement,"selectedIndex",-1);var n=G(t,e);this._renderer.setProperty(this._elementRef.nativeElement,"value",n)},e.prototype.registerOnChange=function(e){var t=this;this.onChange=function(n){t.value=t._getOptionValue(n),e(t.value)}},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",e)},e.prototype._registerOption=function(){return(this._idCounter++).toString()},e.prototype._g
 etOptionId=function(e){for(var t=0,n=Array.from(this._optionMap.keys());t<n.length;t++){var r=n[t];if(this._compareWith(this._optionMap.get(r),e))return r}return null},e.prototype._getOptionValue=function(e){var t=function(e){return e.split(":")[0]}(e);return this._optionMap.has(t)?this._optionMap.get(t):e},e}(),X=function(){function e(e,t,n){this._element=e,this._renderer=t,this._select=n,this._select&&(this.id=this._select._registerOption())}return Object.defineProperty(e.prototype,"ngValue",{set:function(e){null!=this._select&&(this._select._optionMap.set(this.id,e),this._setElementValue(G(this.id,e)),this._select.writeValue(this._select.value))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"value",{set:function(e){this._setElementValue(e),this._select&&this._select.writeValue(this._select.value)},enumerable:!0,configurable:!0}),e.prototype._setElementValue=function(e){this._renderer.setProperty(this._element.nativeElement,"value",e)},e.prototype.ngOnDestroy=
 function(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))},e}(),Y={provide:D,useExisting:Object(i.forwardRef)(function(){return Z}),multi:!0};function J(e,t){return null==e?""+t:("string"==typeof t&&(t="'"+t+"'"),t&&"object"==typeof t&&(t="Object"),(e+": "+t).slice(0,50))}var Z=function(){function e(e,t){this._renderer=e,this._elementRef=t,this._optionMap=new Map,this._idCounter=0,this.onChange=function(e){},this.onTouched=function(){},this._compareWith=i["\u0275looseIdentical"]}return Object.defineProperty(e.prototype,"compareWith",{set:function(e){if("function"!=typeof e)throw new Error("compareWith must be a function, but received "+JSON.stringify(e));this._compareWith=e},enumerable:!0,configurable:!0}),e.prototype.writeValue=function(e){var t,n=this;if(this.value=e,Array.isArray(e)){var r=e.map(function(e){return n._getOptionId(e)});t=function(e,t){e._setSelected(r.indexOf(t.toString())>-1)}}else t=function(e,t){e._setSelected
 (!1)};this._optionMap.forEach(t)},e.prototype.registerOnChange=function(e){var t=this;this.onChange=function(n){var r=[];if(n.hasOwnProperty("selectedOptions"))for(var i=n.selectedOptions,o=0;o<i.length;o++){var a=i.item(o),s=t._getOptionValue(a.value);r.push(s)}else for(i=n.options,o=0;o<i.length;o++)(a=i.item(o)).selected&&(s=t._getOptionValue(a.value),r.push(s));t.value=r,e(r)}},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",e)},e.prototype._registerOption=function(e){var t=(this._idCounter++).toString();return this._optionMap.set(t,e),t},e.prototype._getOptionId=function(e){for(var t=0,n=Array.from(this._optionMap.keys());t<n.length;t++){var r=n[t];if(this._compareWith(this._optionMap.get(r)._value,e))return r}return null},e.prototype._getOptionValue=function(e){var t=function(e){return e.split(":")[0]}(e);return this._optionMap.has(t)?this._optionMap.get(t)
 ._value:e},e}(),Q=function(){function e(e,t,n){this._element=e,this._renderer=t,this._select=n,this._select&&(this.id=this._select._registerOption(this))}return Object.defineProperty(e.prototype,"ngValue",{set:function(e){null!=this._select&&(this._value=e,this._setElementValue(J(this.id,e)),this._select.writeValue(this._select.value))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"value",{set:function(e){this._select?(this._value=e,this._setElementValue(J(this.id,e)),this._select.writeValue(this._select.value)):this._setElementValue(e)},enumerable:!0,configurable:!0}),e.prototype._setElementValue=function(e){this._renderer.setProperty(this._element.nativeElement,"value",e)},e.prototype._setSelected=function(e){this._renderer.setProperty(this._element.nativeElement,"selected",e)},e.prototype.ngOnDestroy=function(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))},e}();function ee(e,t){return t.path.concat([e])}f
 unction te(e,t){e||oe(t,"Cannot find control with"),t.valueAccessor||oe(t,"No value accessor for form control with"),e.validator=_.compose([e.validator,t.validator]),e.asyncValidator=_.composeAsync([e.asyncValidator,t.asyncValidator]),t.valueAccessor.writeValue(e.value),function(e,t){t.valueAccessor.registerOnChange(function(n){e._pendingValue=n,e._pendingChange=!0,e._pendingDirty=!0,"change"===e.updateOn&&ne(e,t)})}(e,t),function(e,t){e.registerOnChange(function(e,n){t.valueAccessor.writeValue(e),n&&t.viewToModelUpdate(e)})}(e,t),function(e,t){t.valueAccessor.registerOnTouched(function(){e._pendingTouched=!0,"blur"===e.updateOn&&e._pendingChange&&ne(e,t),"submit"!==e.updateOn&&e.markAsTouched()})}(e,t),t.valueAccessor.setDisabledState&&e.registerOnDisabledChange(function(e){t.valueAccessor.setDisabledState(e)}),t._rawValidators.forEach(function(t){t.registerOnValidatorChange&&t.registerOnValidatorChange(function(){return e.updateValueAndValidity()})}),t._rawAsyncValidators.forEach(
 function(t){t.registerOnValidatorChange&&t.registerOnValidatorChange(function(){return e.updateValueAndValidity()})})}function ne(e,t){t.viewToModelUpdate(e._pendingValue),e._pendingDirty&&e.markAsDirty(),e.setValue(e._pendingValue,{emitModelToViewChange:!1}),e._pendingChange=!1}function re(e,t){null==e&&oe(t,"Cannot find control with"),e.validator=_.compose([e.validator,t.validator]),e.asyncValidator=_.composeAsync([e.asyncValidator,t.asyncValidator])}function ie(e){return oe(e,"There is no FormControl instance attached to form control element with")}function oe(e,t){var n;throw n=e.path.length>1?"path: '"+e.path.join(" -> ")+"'":e.path[0]?"name: '"+e.path+"'":"unspecified name attribute",new Error(t+" "+n)}function ae(e){return null!=e?_.compose(e.map(L)):null}function se(e){return null!=e?_.composeAsync(e.map(P)):null}function le(e,t){if(!e.hasOwnProperty("model"))return!1;var n=e.model;return!!n.isFirstChange()||!Object(i["\u0275looseIdentical"])(t,n.currentValue)}var ue=[O,W,I,
 K,Z,U];function ce(e,t){e._syncPendingControls(),t.forEach(function(e){var t=e.control;"submit"===t.updateOn&&t._pendingChange&&(e.viewToModelUpdate(t._pendingValue),t._pendingChange=!1)})}function de(e,t){if(!t)return null;var n=void 0,r=void 0,i=void 0;return t.forEach(function(t){var o;t.constructor===$?n=t:(o=t,ue.some(function(e){return o.constructor===e})?(r&&oe(e,"More than one built-in value accessor matches form control with"),r=t):(i&&oe(e,"More than one custom value accessor matches form control with"),i=t))}),i||r||n||(oe(e,"No valid value accessor for form control with"),null)}function he(e,t){var n=e.indexOf(t);n>-1&&e.splice(n,1)}var pe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Object(r.b)(t,e),t.prototype.ngOnInit=function(){this._checkParentType(),this.formDirective.addFormGroup(this)},t.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeFormGroup(this)},Object.defineProperty(t.prototype,"control",{get:
 function(){return this.formDirective.getFormGroup(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return ee(this.name,this._parent)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"validator",{get:function(){return ae(this._validators)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"asyncValidator",{get:function(){return se(this._asyncValidators)},enumerable:!0,configurable:!0}),t.prototype._checkParentType=function(){},t}(w),fe=function(){function e(e){this._cd=e}return Object.defineProperty(e.prototype,"ngClassUntouched",{get:function(){return!!this._cd.control&&this._cd.control.untouched},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngClassTouched",{get:function(){return!!this._cd.control&&this._cd.control.touched},enumerabl
 e:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngClassPristine",{get:function(){return!!this._cd.control&&this._cd.control.pristine},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngClassDirty",{get:function(){return!!this._cd.control&&this._cd.control.dirty},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngClassValid",{get:function(){return!!this._cd.control&&this._cd.control.valid},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngClassInvalid",{get:function(){return!!this._cd.control&&this._cd.control.invalid},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngClassPending",{get:function(){return!!this._cd.control&&this._cd.control.pending},enumerable:!0,configurable:!0}),e}(),me={"[class.ng-untouched]":"ngClassUntouched","[class.ng-touched]":"ngClassTouched","[class.ng-pristine]":"ngClassPristine","[class.ng-dirty]":"ngClassDirty","[class.ng-valid]":"ngClassValid","[class.ng-invalid]":"ngClas
 sInvalid","[class.ng-pending]":"ngClassPending"},ge=function(e){function t(t){return e.call(this,t)||this}return Object(r.b)(t,e),t}(fe),ve=function(e){function t(t){return e.call(this,t)||this}return Object(r.b)(t,e),t}(fe);function ye(e){var t=we(e)?e.validators:e;return Array.isArray(t)?ae(t):t||null}function be(e,t){var n=we(t)?t.asyncValidators:e;return Array.isArray(n)?se(n):n||null}function we(e){return null!=e&&!Array.isArray(e)&&"object"==typeof e}var xe=function(){function e(e,t){this.validator=e,this.asyncValidator=t,this._onCollectionChange=function(){},this.pristine=!0,this.touched=!1,this._onDisabledChange=[]}return Object.defineProperty(e.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"valid",{get:function(){return"VALID"===this.status},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"invalid",{get:function(){return"INVALID"===this.status},enumerable:!0,configurable:!0}),Objec
 t.defineProperty(e.prototype,"pending",{get:function(){return"PENDING"==this.status},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"disabled",{get:function(){return"DISABLED"===this.status},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"enabled",{get:function(){return"DISABLED"!==this.status},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dirty",{get:function(){return!this.pristine},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"untouched",{get:function(){return!this.touched},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"updateOn",{get:function(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"},enumerable:!0,configurable:!0}),e.prototype.setValidators=function(e){this.validator=ye(e)},e.prototype.setAsyncValidators=function(e){this.asyncValidator=be(e)},e.prototype.clearValidators=function(){this.validator=null},e.prototype.clearAsyncValidators=function
 (){this.asyncValidator=null},e.prototype.markAsTouched=function(e){void 0===e&&(e={}),this.touched=!0,this._parent&&!e.onlySelf&&this._parent.markAsTouched(e)},e.prototype.markAsUntouched=function(e){void 0===e&&(e={}),this.touched=!1,this._pendingTouched=!1,this._forEachChild(function(e){e.markAsUntouched({onlySelf:!0})}),this._parent&&!e.onlySelf&&this._parent._updateTouched(e)},e.prototype.markAsDirty=function(e){void 0===e&&(e={}),this.pristine=!1,this._parent&&!e.onlySelf&&this._parent.markAsDirty(e)},e.prototype.markAsPristine=function(e){void 0===e&&(e={}),this.pristine=!0,this._pendingDirty=!1,this._forEachChild(function(e){e.markAsPristine({onlySelf:!0})}),this._parent&&!e.onlySelf&&this._parent._updatePristine(e)},e.prototype.markAsPending=function(e){void 0===e&&(e={}),this.status="PENDING",this._parent&&!e.onlySelf&&this._parent.markAsPending(e)},e.prototype.disable=function(e){void 0===e&&(e={}),this.status="DISABLED",this.errors=null,this._forEachChild(function(e){e.di
 sable({onlySelf:!0})}),this._updateValue(),!1!==e.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(!!e.onlySelf),this._onDisabledChange.forEach(function(e){return e(!0)})},e.prototype.enable=function(e){void 0===e&&(e={}),this.status="VALID",this._forEachChild(function(e){e.enable({onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent}),this._updateAncestors(!!e.onlySelf),this._onDisabledChange.forEach(function(e){return e(!1)})},e.prototype._updateAncestors=function(e){this._parent&&!e&&(this._parent.updateValueAndValidity(),this._parent._updatePristine(),this._parent._updateTouched())},e.prototype.setParent=function(e){this._parent=e},e.prototype.updateValueAndValidity=function(e){void 0===e&&(e={}),this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),"VALID"!==this.status&&"PENDING"!==this
 .status||this._runAsyncValidator(e.emitEvent)),!1!==e.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!e.onlySelf&&this._parent.updateValueAndValidity(e)},e.prototype._updateTreeValidity=function(e){void 0===e&&(e={emitEvent:!0}),this._forEachChild(function(t){return t._updateTreeValidity(e)}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent})},e.prototype._setInitialStatus=function(){this.status=this._allControlsDisabled()?"DISABLED":"VALID"},e.prototype._runValidator=function(){return this.validator?this.validator(this):null},e.prototype._runAsyncValidator=function(e){var t=this;if(this.asyncValidator){this.status="PENDING";var n=A(this.asyncValidator(this));this._asyncValidationSubscription=n.subscribe(function(n){return t.setErrors(n,{emitEvent:e})})}},e.prototype._cancelExistingSubscription=function(){this._asyncValidationSubscription&&this._asyncValidationSubscription.unsubscribe()},e.prototype.setErrors=function
 (e,t){void 0===t&&(t={}),this.errors=e,this._updateControlsErrors(!1!==t.emitEvent)},e.prototype.get=function(e){return function(e,t,n){return null==t?null:(t instanceof Array||(t=t.split(".")),t instanceof Array&&0===t.length?null:t.reduce(function(e,t){return e instanceof ke?e.controls[t]||null:e instanceof Ce&&e.at(t)||null},e))}(this,e)},e.prototype.getError=function(e,t){var n=t?this.get(t):this;return n&&n.errors?n.errors[e]:null},e.prototype.hasError=function(e,t){return!!this.getError(e,t)},Object.defineProperty(e.prototype,"root",{get:function(){for(var e=this;e._parent;)e=e._parent;return e},enumerable:!0,configurable:!0}),e.prototype._updateControlsErrors=function(e){this.status=this._calculateStatus(),e&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(e)},e.prototype._initObservables=function(){this.valueChanges=new i.EventEmitter,this.statusChanges=new i.EventEmitter},e.prototype._calculateStatus=function(){return this._allControlsD
 isabled()?"DISABLED":this.errors?"INVALID":this._anyControlsHaveStatus("PENDING")?"PENDING":this._anyControlsHaveStatus("INVALID")?"INVALID":"VALID"},e.prototype._anyControlsHaveStatus=function(e){return this._anyControls(function(t){return t.status===e})},e.prototype._anyControlsDirty=function(){return this._anyControls(function(e){return e.dirty})},e.prototype._anyControlsTouched=function(){return this._anyControls(function(e){return e.touched})},e.prototype._updatePristine=function(e){void 0===e&&(e={}),this.pristine=!this._anyControlsDirty(),this._parent&&!e.onlySelf&&this._parent._updatePristine(e)},e.prototype._updateTouched=function(e){void 0===e&&(e={}),this.touched=this._anyControlsTouched(),this._parent&&!e.onlySelf&&this._parent._updateTouched(e)},e.prototype._isBoxedValue=function(e){return"object"==typeof e&&null!==e&&2===Object.keys(e).length&&"value"in e&&"disabled"in e},e.prototype._registerOnCollectionChange=function(e){this._onCollectionChange=e},e.prototype._setUp
 dateStrategy=function(e){we(e)&&null!=e.updateOn&&(this._updateOn=e.updateOn)},e}(),Ee=function(e){function t(t,n,r){void 0===t&&(t=null);var i=e.call(this,ye(n),be(r,n))||this;return i._onChange=[],i._applyFormState(t),i._setUpdateStrategy(n),i.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),i._initObservables(),i}return Object(r.b)(t,e),t.prototype.setValue=function(e,t){var n=this;void 0===t&&(t={}),this.value=this._pendingValue=e,this._onChange.length&&!1!==t.emitModelToViewChange&&this._onChange.forEach(function(e){return e(n.value,!1!==t.emitViewToModelChange)}),this.updateValueAndValidity(t)},t.prototype.patchValue=function(e,t){void 0===t&&(t={}),this.setValue(e,t)},t.prototype.reset=function(e,t){void 0===e&&(e=null),void 0===t&&(t={}),this._applyFormState(e),this.markAsPristine(t),this.markAsUntouched(t),this.setValue(this.value,t),this._pendingChange=!1},t.prototype._updateValue=function(){},t.prototype._anyControls=function(e){return!1},t.prototype._allControlsDisable
 d=function(){return this.disabled},t.prototype.registerOnChange=function(e){this._onChange.push(e)},t.prototype._clearChangeFns=function(){this._onChange=[],this._onDisabledChange=[],this._onCollectionChange=function(){}},t.prototype.registerOnDisabledChange=function(e){this._onDisabledChange.push(e)},t.prototype._forEachChild=function(e){},t.prototype._syncPendingControls=function(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))},t.prototype._applyFormState=function(e){this._isBoxedValue(e)?(this.value=this._pendingValue=e.value,e.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=e},t}(xe),ke=function(e){function t(t,n,r){var i=e.call(this,ye(n),be(r,n))||this;return i.controls=t,i._initObservables(),i._setUpdateStrategy(n),i._setUpControls(),i
 .updateValueAndValidity({onlySelf:!0,emitEvent:!1}),i}return Object(r.b)(t,e),t.prototype.registerControl=function(e,t){return this.controls[e]?this.controls[e]:(this.controls[e]=t,t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange),t)},t.prototype.addControl=function(e,t){this.registerControl(e,t),this.updateValueAndValidity(),this._onCollectionChange()},t.prototype.removeControl=function(e){this.controls[e]&&this.controls[e]._registerOnCollectionChange(function(){}),delete this.controls[e],this.updateValueAndValidity(),this._onCollectionChange()},t.prototype.setControl=function(e,t){this.controls[e]&&this.controls[e]._registerOnCollectionChange(function(){}),delete this.controls[e],t&&this.registerControl(e,t),this.updateValueAndValidity(),this._onCollectionChange()},t.prototype.contains=function(e){return this.controls.hasOwnProperty(e)&&this.controls[e].enabled},t.prototype.setValue=function(e,t){var n=this;void 0===t&&(t={}),this._checkAllValuesPresent(e),
 Object.keys(e).forEach(function(r){n._throwIfControlMissing(r),n.controls[r].setValue(e[r],{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t)},t.prototype.patchValue=function(e,t){var n=this;void 0===t&&(t={}),Object.keys(e).forEach(function(r){n.controls[r]&&n.controls[r].patchValue(e[r],{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t)},t.prototype.reset=function(e,t){void 0===e&&(e={}),void 0===t&&(t={}),this._forEachChild(function(n,r){n.reset(e[r],{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t),this._updatePristine(t),this._updateTouched(t)},t.prototype.getRawValue=function(){return this._reduceChildren({},function(e,t,n){return e[n]=t instanceof Ee?t.value:t.getRawValue(),e})},t.prototype._syncPendingControls=function(){var e=this._reduceChildren(!1,function(e,t){return!!t._syncPendingControls()||e});return e&&this.updateValueAndValidity({onlySelf:!0}),e},t.prototype._throwIfControlMissing=function(e){if(!Object.keys
 (this.controls).length)throw new Error("\n        There are no form controls registered with this group yet.  If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");if(!this.controls[e])throw new Error("Cannot find form control with name: "+e+".")},t.prototype._forEachChild=function(e){var t=this;Object.keys(this.controls).forEach(function(n){return e(t.controls[n],n)})},t.prototype._setUpControls=function(){var e=this;this._forEachChild(function(t){t.setParent(e),t._registerOnCollectionChange(e._onCollectionChange)})},t.prototype._updateValue=function(){this.value=this._reduceValue()},t.prototype._anyControls=function(e){var t=this,n=!1;return this._forEachChild(function(r,i){n=n||t.contains(i)&&e(r)}),n},t.prototype._reduceValue=function(){var e=this;return this._reduceChildren({},function(t,n,r){return(n.enabled||e.disabled)&&(t[r]=n.value),t})},t.prototype._reduceChildren=function(e,t){var n=e;return this._forEachChild(function(e,r){n=
 t(n,e,r)}),n},t.prototype._allControlsDisabled=function(){for(var e=0,t=Object.keys(this.controls);e<t.length;e++)if(this.controls[t[e]].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled},t.prototype._checkAllValuesPresent=function(e){this._forEachChild(function(t,n){if(void 0===e[n])throw new Error("Must supply a value for form control with name: '"+n+"'.")})},t}(xe),Ce=function(e){function t(t,n,r){var i=e.call(this,ye(n),be(r,n))||this;return i.controls=t,i._initObservables(),i._setUpdateStrategy(n),i._setUpControls(),i.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),i}return Object(r.b)(t,e),t.prototype.at=function(e){return this.controls[e]},t.prototype.push=function(e){this.controls.push(e),this._registerControl(e),this.updateValueAndValidity(),this._onCollectionChange()},t.prototype.insert=function(e,t){this.controls.splice(e,0,t),this._registerControl(t),this.updateValueAndValidity(),this._onCollectionChange()},t.prototype.removeAt=function(e){thi
 s.controls[e]&&this.controls[e]._registerOnCollectionChange(function(){}),this.controls.splice(e,1),this.updateValueAndValidity(),this._onCollectionChange()},t.prototype.setControl=function(e,t){this.controls[e]&&this.controls[e]._registerOnCollectionChange(function(){}),this.controls.splice(e,1),t&&(this.controls.splice(e,0,t),this._registerControl(t)),this.updateValueAndValidity(),this._onCollectionChange()},Object.defineProperty(t.prototype,"length",{get:function(){return this.controls.length},enumerable:!0,configurable:!0}),t.prototype.setValue=function(e,t){var n=this;void 0===t&&(t={}),this._checkAllValuesPresent(e),e.forEach(function(e,r){n._throwIfControlMissing(r),n.at(r).setValue(e,{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t)},t.prototype.patchValue=function(e,t){var n=this;void 0===t&&(t={}),e.forEach(function(e,r){n.at(r)&&n.at(r).patchValue(e,{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t)},t.prototype.reset=function(e,t){v
 oid 0===e&&(e=[]),void 0===t&&(t={}),this._forEachChild(function(n,r){n.reset(e[r],{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t),this._updatePristine(t),this._updateTouched(t)},t.prototype.getRawValue=function(){return this.controls.map(function(e){return e instanceof Ee?e.value:e.getRawValue()})},t.prototype._syncPendingControls=function(){var e=this.controls.reduce(function(e,t){return!!t._syncPendingControls()||e},!1);return e&&this.updateValueAndValidity({onlySelf:!0}),e},t.prototype._throwIfControlMissing=function(e){if(!this.controls.length)throw new Error("\n        There are no form controls registered with this array yet.  If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");if(!this.at(e))throw new Error("Cannot find form control at index "+e)},t.prototype._forEachChild=function(e){this.controls.forEach(function(t,n){e(t,n)})},t.prototype._updateValue=function(){var e=this;this.value=this.controls.filter
 (function(t){return t.enabled||e.disabled}).map(function(e){return e.value})},t.prototype._anyControls=function(e){return this.controls.some(function(t){return t.enabled&&e(t)})},t.prototype._setUpControls=function(){var e=this;this._forEachChild(function(t){return e._registerControl(t)})},t.prototype._checkAllValuesPresent=function(e){this._forEachChild(function(t,n){if(void 0===e[n])throw new Error("Must supply a value for form control at index: "+n+".")})},t.prototype._allControlsDisabled=function(){for(var e=0,t=this.controls;e<t.length;e++)if(t[e].enabled)return!1;return this.controls.length>0||this.disabled},t.prototype._registerControl=function(e){e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange)},t}(xe),_e={provide:w,useExisting:Object(i.forwardRef)(function(){return Ae})},Se=Promise.resolve(null),Ae=function(e){function t(t,n){var r=e.call(this)||this;return r.submitted=!1,r._directives=[],r.ngSubmit=new i.EventEmitter,r.form=new ke({},ae(t),se(n)),r
 }return Object(r.b)(t,e),t.prototype.ngAfterViewInit=function(){this._setUpdateStrategy()},Object.defineProperty(t.prototype,"formDirective",{get:function(){return this},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"control",{get:function(){return this.form},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"controls",{get:function(){return this.form.controls},enumerable:!0,configurable:!0}),t.prototype.addControl=function(e){var t=this;Se.then(function(){var n=t._findContainer(e.path);e.control=n.registerControl(e.name,e.control),te(e.control,e),e.control.updateValueAndValidity({emitEvent:!1}),t._directives.push(e)})},t.prototype.getControl=function(e){return this.form.get(e.path)},t.prototype.removeControl=function(e){var t=this;Se.then(function(){var n=t._findContainer(e.path);n&&n.removeControl(e.name),he(t._directives,e)})},t.prototype.addFormG
 roup=function(e){var t=this;Se.then(function(){var n=t._findContainer(e.path),r=new ke({});re(r,e),n.registerControl(e.name,r),r.updateValueAndValidity({emitEvent:!1})})},t.prototype.removeFormGroup=function(e){var t=this;Se.then(function(){var n=t._findContainer(e.path);n&&n.removeControl(e.name)})},t.prototype.getFormGroup=function(e){return this.form.get(e.path)},t.prototype.updateModel=function(e,t){var n=this;Se.then(function(){n.form.get(e.path).setValue(t)})},t.prototype.setValue=function(e){this.control.setValue(e)},t.prototype.onSubmit=function(e){return this.submitted=!0,ce(this.form,this._directives),this.ngSubmit.emit(e),!1},t.prototype.onReset=function(){this.resetForm()},t.prototype.resetForm=function(e){void 0===e&&(e=void 0),this.form.reset(e),this.submitted=!1},t.prototype._setUpdateStrategy=function(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)},t.prototype._findContainer=function(e){return e.pop(),e.length?this.form.get(e
 ):this.form},t}(w),Te='\n    <div [formGroup]="myGroup">\n      <input formControlName="firstName">\n    </div>\n\n    In your class:\n\n    this.myGroup = new FormGroup({\n       firstName: new FormControl()\n    });',De='\n    <div [formGroup]="myGroup">\n       <div formGroupName="person">\n          <input formControlName="firstName">\n       </div>\n    </div>\n\n    In your class:\n\n    this.myGroup = new FormGroup({\n       person: new FormGroup({ firstName: new FormControl() })\n    });',Fe='\n    <form>\n       <div ngModelGroup="person">\n          <input [(ngModel)]="person.name" name="firstName">\n       </div>\n    </form>',Oe=function(){function e(){}return e.modelParentException=function(){throw new Error('\n      ngModel cannot be used to register form controls with a parent formGroup directive.  Try using\n      formGroup\'s partner directive "formControlName" instead.  Example:\n\n      '+Te+'\n\n      Or, if you\'d like to avoid registering this form control, ind
 icate that it\'s standalone in ngModelOptions:\n\n      Example:\n\n      \n    <div [formGroup]="myGroup">\n       <input formControlName="firstName">\n       <input [(ngModel)]="showMoreControls" [ngModelOptions]="{standalone: true}">\n    </div>\n  ')},e.formGroupNameException=function(){throw new Error("\n      ngModel cannot be used to register form controls with a parent formGroupName or formArrayName directive.\n\n      Option 1: Use formControlName instead of ngModel (reactive strategy):\n\n      "+De+"\n\n      Option 2:  Update ngModel's parent be ngModelGroup (template-driven strategy):\n\n      "+Fe)},e.missingNameException=function(){throw new Error('If ngModel is used within a form tag, either the name attribute must be set or the form\n      control must be defined as \'standalone\' in ngModelOptions.\n\n      Example 1: <input [(ngModel)]="person.firstName" name="first">\n      Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}">')}
 ,e.modelGroupParentException=function(){throw new Error("\n      ngModelGroup cannot be used with a parent formGroup directive.\n\n      Option 1: Use formGroupName instead of ngModelGroup (reactive strategy):\n\n      "+De+"\n\n      Option 2:  Use a regular form tag instead of the formGroup directive (template-driven strategy):\n\n      "+Fe)},e}(),Re={provide:w,useExisting:Object(i.forwardRef)(function(){return Ne})},Ne=function(e){function t(t,n,r){var i=e.call(this)||this;return i._parent=t,i._validators=n,i._asyncValidators=r,i}return Object(r.b)(t,e),t.prototype._checkParentType=function(){this._parent instanceof t||this._parent instanceof Ae||Oe.modelGroupParentException()},t}(pe),$e={provide:j,useExisting:Object(i.forwardRef)(function(){return Pe})},Le=Promise.resolve(null),Pe=function(e){function t(t,n,r,o){var a=e.call(this)||this;return a.control=new Ee,a._registered=!1,a.update=new i.EventEmitter,a._parent=t,a._rawValidators=n||[],a._rawAsyncValidators=r||[],a.valueAcce
 ssor=de(a,o),a}return Object(r.b)(t,e),t.prototype.ngOnChanges=function(e){this._checkForErrors(),this._registered||this._setUpControl(),"isDisabled"in e&&this._updateDisabled(e),le(e,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)},t.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeControl(this)},Object.defineProperty(t.prototype,"path",{get:function(){return this._parent?ee(this.name,this._parent):[this.name]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"validator",{get:function(){return ae(this._rawValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"asyncValidator",{get:function(){return se(this._rawAsyncValidators)},enumerable:!0,configurable:!0}),t.prototype.viewToModelUpdate=function(e){this.viewModel=e,this.update.emit(e)},
 t.prototype._setUpControl=function(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0},t.prototype._setUpdateStrategy=function(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)},t.prototype._isStandalone=function(){return!this._parent||!(!this.options||!this.options.standalone)},t.prototype._setUpStandalone=function(){te(this.control,this),this.control.updateValueAndValidity({emitEvent:!1})},t.prototype._checkForErrors=function(){this._isStandalone()||this._checkParentType(),this._checkName()},t.prototype._checkParentType=function(){!(this._parent instanceof Ne)&&this._parent instanceof pe?Oe.formGroupNameException():this._parent instanceof Ne||this._parent instanceof Ae||Oe.modelParentException()},t.prototype._checkName=function(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()||this.name||Oe.missingNameException()},t.prototype.
 _updateValue=function(e){var t=this;Le.then(function(){t.control.setValue(e,{emitViewToModelChange:!1})})},t.prototype._updateDisabled=function(e){var t=this,n=e.isDisabled.currentValue,r=""===n||n&&"false"!==n;Le.then(function(){r&&!t.control.disabled?t.control.disable():!r&&t.control.disabled&&t.control.enable()})},t}(j),Me=function(){function e(){}return e.controlParentException=function(){throw new Error("formControlName must be used with a parent formGroup directive.  You'll want to add a formGroup\n       directive and pass it an existing FormGroup instance (you can create one in your class).\n\n      Example:\n\n      "+Te)},e.ngModelGroupException=function(){throw new Error('formControlName cannot be used with an ngModelGroup parent. It is only compatible with parents\n       that also have a "form" prefix: formGroupName, formArrayName, or formGroup.\n\n       Option 1:  Update the parent to be formGroupName (reactive form strategy)\n\n        '+De+"\n\n        Option 2: Use
  ngModel instead of formControlName (template-driven strategy)\n\n        "+Fe)},e.missingFormException=function(){throw new Error("formGroup expects a FormGroup instance. Please pass one in.\n\n       Example:\n\n       "+Te)},e.groupParentException=function(){throw new Error("formGroupName must be used with a parent formGroup directive.  You'll want to add a formGroup\n      directive and pass it an existing FormGroup instance (you can create one in your class).\n\n      Example:\n\n      "+De)},e.arrayParentException=function(){throw new Error('formArrayName must be used with a parent formGroup directive.  You\'ll want to add a formGroup\n       directive and pass it an existing FormGroup instance (you can create one in your class).\n\n        Example:\n\n        \n    <div [formGroup]="myGroup">\n      <div formArrayName="cities">\n        <div *ngFor="let city of cityArray.controls; index as i">\n          <input [formControlName]="i">\n        </div>\n      </div>\n    </div>\
 n\n    In your class:\n\n    this.cityArray = new FormArray([new FormControl(\'SF\')]);\n    this.myGroup = new FormGroup({\n      cities: this.cityArray\n    });')},e.disabledAttrWarning=function(){console.warn("\n      It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true\n      when you set up this control in your component class, the disabled attribute will actually be set in the DOM for\n      you. We recommend using this approach to avoid 'changed after checked' errors.\n       \n      Example: \n      form = new FormGroup({\n        first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),\n        last: new FormControl('Drew', Validators.required)\n      });\n    ")},e}(),Ie={provide:j,useExisting:Object(i.forwardRef)(function(){return Be})},Be=function(e){function t(t,n,r){var o=e.call(this)||this;return o.update=new i.EventEmitter,o._rawValidators=t||[],o._rawAsyncValidators=n||[],o.valueAccessor=
 de(o,r),o}return Object(r.b)(t,e),Object.defineProperty(t.prototype,"isDisabled",{set:function(e){Me.disabledAttrWarning()},enumerable:!0,configurable:!0}),t.prototype.ngOnChanges=function(e){this._isControlChanged(e)&&(te(this.form,this),this.control.disabled&&this.valueAccessor.setDisabledState&&this.valueAccessor.setDisabledState(!0),this.form.updateValueAndValidity({emitEvent:!1})),le(e,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)},Object.defineProperty(t.prototype,"path",{get:function(){return[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"validator",{get:function(){return ae(this._rawValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"asyncValidator",{get:function(){return se(this._rawAsyncValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"control",{get:function(){return this.form},enumerable:!0,configurable:!0}),t.prototype.viewToModelUpdate=function(e){this.viewMode
 l=e,this.update.emit(e)},t.prototype._isControlChanged=function(e){return e.hasOwnProperty("form")},t}(j),je={provide:w,useExisting:Object(i.forwardRef)(function(){return Ve})},Ve=function(e){function t(t,n){var r=e.call(this)||this;return r._validators=t,r._asyncValidators=n,r.submitted=!1,r.directives=[],r.form=null,r.ngSubmit=new i.EventEmitter,r}return Object(r.b)(t,e),t.prototype.ngOnChanges=function(e){this._checkFormPresent(),e.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations())},Object.defineProperty(t.prototype,"formDirective",{get:function(){return this},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"control",{get:function(){return this.form},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return[]},enumerable:!0,configurable:!0}),t.prototype.addControl=function(e){var t=this.form.get(e.path);return te(t,e),t.updateValueAndValidity({emitEvent:!1}),this.directives.
 push(e),t},t.prototype.getControl=function(e){return this.form.get(e.path)},t.prototype.removeControl=function(e){he(this.directives,e)},t.prototype.addFormGroup=function(e){var t=this.form.get(e.path);re(t,e),t.updateValueAndValidity({emitEvent:!1})},t.prototype.removeFormGroup=function(e){},t.prototype.getFormGroup=function(e){return this.form.get(e.path)},t.prototype.addFormArray=function(e){var t=this.form.get(e.path);re(t,e),t.updateValueAndValidity({emitEvent:!1})},t.prototype.removeFormArray=function(e){},t.prototype.getFormArray=function(e){return this.form.get(e.path)},t.prototype.updateModel=function(e,t){this.form.get(e.path).setValue(t)},t.prototype.onSubmit=function(e){return this.submitted=!0,ce(this.form,this.directives),this.ngSubmit.emit(e),!1},t.prototype.onReset=function(){this.resetForm()},t.prototype.resetForm=function(e){void 0===e&&(e=void 0),this.form.reset(e),this.submitted=!1},t.prototype._updateDomValue=function(){var e=this;this.directives.forEach(functio
 n(t){var n=e.form.get(t.path);t.control!==n&&(function(e,t){t.valueAccessor.registerOnChange(function(){return ie(t)}),t.valueAccessor.registerOnTouched(function(){return ie(t)}),t._rawValidators.forEach(function(e){e.registerOnValidatorChange&&e.registerOnValidatorChange(null)}),t._rawAsyncValidators.forEach(function(e){e.registerOnValidatorChange&&e.registerOnValidatorChange(null)}),e&&e._clearChangeFns()}(t.control,t),n&&te(n,t),t.control=n)}),this.form._updateTreeValidity({emitEvent:!1})},t.prototype._updateRegistrations=function(){var e=this;this.form._registerOnCollectionChange(function(){return e._updateDomValue()}),this._oldForm&&this._oldForm._registerOnCollectionChange(function(){}),this._oldForm=this.form},t.prototype._updateValidators=function(){var e=ae(this._validators);this.form.validator=_.compose([this.form.validator,e]);var t=se(this._asyncValidators);this.form.asyncValidator=_.composeAsync([this.form.asyncValidator,t])},t.prototype._checkFormPresent=function(){thi
 s.form||Me.missingFormException()},t}(w),ze={provide:w,useExisting:Object(i.forwardRef)(function(){return Ue})},Ue=function(e){function t(t,n,r){var i=e.call(this)||this;return i._parent=t,i._validators=n,i._asyncValidators=r,i}return Object(r.b)(t,e),t.prototype._checkParentType=function(){qe(this._parent)&&Me.groupParentException()},t}(pe),He={provide:w,useExisting:Object(i.forwardRef)(function(){return We})},We=function(e){function t(t,n,r){var i=e.call(this)||this;return i._parent=t,i._validators=n,i._asyncValidators=r,i}return Object(r.b)(t,e),t.prototype.ngOnInit=function(){this._checkParentType(),this.formDirective.addFormArray(this)},t.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeFormArray(this)},Object.defineProperty(t.prototype,"control",{get:function(){return this.formDirective.getFormArray(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective
 :null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return ee(this.name,this._parent)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"validator",{get:function(){return ae(this._validators)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"asyncValidator",{get:function(){return se(this._asyncValidators)},enumerable:!0,configurable:!0}),t.prototype._checkParentType=function(){qe(this._parent)&&Me.arrayParentException()},t}(w);function qe(e){return!(e instanceof Ue||e instanceof Ve||e instanceof We)}var Ge={provide:j,useExisting:Object(i.forwardRef)(function(){return Ke})},Ke=function(e){function t(t,n,r,o){var a=e.call(this)||this;return a._added=!1,a.update=new i.EventEmitter,a._parent=t,a._rawValidators=n||[],a._rawAsyncValidators=r||[],a.valueAccessor=de(a,o),a}return Object(r.b)(t,e),Object.defineProperty(t.prototype,"isDisabled",{set:function(e){Me.disabledAttrWarning()},enumerable:!0,configurable:!
 0}),t.prototype.ngOnChanges=function(e){this._added||this._setUpControl(),le(e,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))},t.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeControl(this)},t.prototype.viewToModelUpdate=function(e){this.viewModel=e,this.update.emit(e)},Object.defineProperty(t.prototype,"path",{get:function(){return ee(this.name,this._parent)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"validator",{get:function(){return ae(this._rawValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"asyncValidator",{get:function(){return se(this._rawAsyncValidators)},enumerable:!0,configurable:!0}),t.prototype._checkParentType=function(){!(this._parent instanceof Ue)&&this._parent instanceof pe?Me.ngModelGrou
 pException():this._parent instanceof Ue||this._parent instanceof Ve||this._parent instanceof We||Me.controlParentException()},t.prototype._setUpControl=function(){this._checkParentType(),this.control=this.formDirective.addControl(this),this.control.disabled&&this.valueAccessor.setDisabledState&&this.valueAccessor.setDisabledState(!0),this._added=!0},t}(j),Xe={provide:E,useExisting:Object(i.forwardRef)(function(){return Je}),multi:!0},Ye={provide:E,useExisting:Object(i.forwardRef)(function(){return Ze}),multi:!0},Je=function(){function e(){}return Object.defineProperty(e.prototype,"required",{get:function(){return this._required},set:function(e){this._required=null!=e&&!1!==e&&""+e!="false",this._onChange&&this._onChange()},enumerable:!0,configurable:!0}),e.prototype.validate=function(e){return this.required?_.required(e):null},e.prototype.registerOnValidatorChange=function(e){this._onChange=e},e}(),Ze=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Obj
 ect(r.b)(t,e),t.prototype.validate=function(e){return this.required?_.requiredTrue(e):null},t}(Je),Qe={provide:E,useExisting:Object(i.forwardRef)(function(){return et}),multi:!0},et=function(){function e(){}return Object.defineProperty(e.prototype,"email",{set:function(e){this._enabled=""===e||!0===e||"true"===e,this._onChange&&this._onChange()},enumerable:!0,configurable:!0}),e.prototype.validate=function(e){return this._enabled?_.email(e):null},e.prototype.registerOnValidatorChange=function(e){this._onChange=e},e}(),tt={provide:E,useExisting:Object(i.forwardRef)(function(){return nt}),multi:!0},nt=function(){function e(){}return e.prototype.ngOnChanges=function(e){"minlength"in e&&(this._createValidator(),this._onChange&&this._onChange())},e.prototype.validate=function(e){return null==this.minlength?null:this._validator(e)},e.prototype.registerOnValidatorChange=function(e){this._onChange=e},e.prototype._createValidator=function(){this._validator=_.minLength(parseInt(this.minlength
 ,10))},e}(),rt={provide:E,useExisting:Object(i.forwardRef)(function(){return it}),multi:!0},it=function(){function e(){}return e.prototype.ngOnChanges=function(e){"maxlength"in e&&(this._createValidator(),this._onChange&&this._onChange())},e.prototype.validate=function(e){return null!=this.maxlength?this._validator(e):null},e.prototype.registerOnValidatorChange=function(e){this._onChange=e},e.prototype._createValidator=function(){this._validator=_.maxLength(parseInt(this.maxlength,10))},e}(),ot={provide:E,useExisting:Object(i.forwardRef)(function(){return at}),multi:!0},at=function(){function e(){}return e.prototype.ngOnChanges=function(e){"pattern"in e&&(this._createValidator(),this._onChange&&this._onChange())},e.prototype.validate=function(e){return this._validator(e)},e.prototype.registerOnValidatorChange=function(e){this._onChange=e},e.prototype._createValidator=function(){this._validator=_.pattern(this.pattern)},e}(),st=function(){function e(){}return e.prototype.group=functio
 n(e,t){void 0===t&&(t=null);var n=this._reduceControls(e);return new ke(n,null!=t?t.validator:null,null!=t?t.asyncValidator:null)},e.prototype.control=function(e,t,n){return new Ee(e,t,n)},e.prototype.array=function(e,t,n){var r=this,i=e.map(function(e){return r._createControl(e)});return new Ce(i,t,n)},e.prototype._reduceControls=function(e){var t=this,n={};return Object.keys(e).forEach(function(r){n[r]=t._createControl(e[r])}),n},e.prototype._createControl=function(e){return e instanceof Ee||e instanceof ke||e instanceof Ce?e:Array.isArray(e)?this.control(e[0],e.length>1?e[1]:null,e.length>2?e[2]:null):this.control(e)},e}(),lt=new i.Version("5.2.0"),ut=function(){},ct=[ut,X,Q,$,I,W,O,K,Z,U,ge,ve,Je,nt,it,at,Ze,et],dt=[Pe,Ne,Ae],ht=[Be,Ve,Ke,Ue,We],pt=function(){},ft=function(){},mt=function(){}},1:function(e,t){},"1Rb4":function(e,t,n){"use strict";(function(t){e.exports=!t.version||0===t.version.indexOf("v0.")||0===t.version.indexOf("v1.")&&0!==t.version.indexOf("v1.8.")?function
 (e,n,r,i){if("function"!=typeof e)throw new TypeError('"callback" argument must be a function');var o,a,s=arguments.length;switch(s){case 0:case 1:return t.nextTick(e);case 2:return t.nextTick(function(){e.call(null,n)});case 3:return t.nextTick(function(){e.call(null,n,r)});case 4:return t.nextTick(function(){e.call(null,n,r,i)});default:for(o=new Array(s-1),a=0;a<o.length;)o[a++]=arguments[a];return t.nextTick(function(){e.apply(null,o)})}}:t.nextTick}).call(t,n("1WNV"))},"1WNV":function(e,t){var n,r,i=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){
 r=a}}();var l,u=[],c=!1,d=-1;function h(){c&&l&&(c=!1,l.length?u=l.concat(u):d=-1,u.length&&p())}function p(){if(!c){var e=s(h);c=!0;for(var t=u.length;t;){for(l=u,u=[];++d<t;)l&&l[d].run();d=-1,t=u.length}l=null,c=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function f(e,t){this.fun=e,this.array=t}function m(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new f(e,t)),1!==u.length||c||s(p)},f.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=m,i.addListener=m,i.once=m,i.off=m,i.removeListener=m,i.removeAllListeners=m,i.emit=m,i.prependListener=m,i.prependOnceListener=m,i.listeners=function(e){return[]},i.binding=function(e){throw new Error
 ("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},"1YRa":function(e,t,n){"use strict";function r(e){for(var n in e)t.hasOwnProperty(n)||(t[n]=e[n])}Object.defineProperty(t,"__esModule",{value:!0}),r(n("VVJs")),r(n("az2Y"))},"1j/l":function(e,t,n){"use strict";n.d(t,"a",function(){return r});var r=Array.isArray||function(e){return e&&"number"==typeof e.length}},"1qma":function(e,t,n){var r=n("nKkP");e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},"1zvG":function(e,t,n){"use strict";var r=n("JXkd"),i=n("TJLg"),o=n("3r0D")("hasInstance"),a=Function.prototype;o in a||n("tose").f(a,o,{value:function(e){if("function"!=typeof this||!r(e))return!1;if(!r(this.prototype))return e instanceof this;for(;e=i(e);)if(this.prototype===e)return!0;return!1}})},"2Fuj":function(e,t,n){var r=n("R5c1"),i=n("a/Sk");e.exports=Objec
 t.keys||function(e){return r(e,i)}},"2fm9":function(e,t,n){(function(){var t,r,i,o,a,s={}.hasOwnProperty;a=n("VH4r"),o=a.isObject,i=a.isFunction,r=n("p7eS"),t=n("eIJN"),e.exports=function(e){function n(e,t,r){if(n.__super__.constructor.call(this,e),null==t)throw new Error("Missing element name");this.name=this.stringify.eleName(t),this.attributes={},null!=r&&this.attribute(r),e.isDocument&&(this.isRoot=!0,this.documentObject=e,e.rootObject=this)}return function(e,t){for(var n in t)s.call(t,n)&&(e[n]=t[n]);function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r,e.__super__=t.prototype}(n,r),n.prototype.clone=function(){var e,t,n;for(e in(t=Object.create(this)).isRoot&&(t.documentObject=null),t.attributes={},n=this.attributes)s.call(n,e)&&(t.attributes[e]=n[e].clone());return t.children=[],this.children.forEach(function(e){var n;return(n=e.clone()).parent=t,t.children.push(n)}),t},n.prototype.attribute=function(e,n){var r;if(null!=e&&(e=e.valueOf()),o(e))for(r in e)s
 .call(e,r)&&this.attribute(r,e[r]);else i(n)&&(n=n.apply()),this.options.skipNullAttributes&&null==n||(this.attributes[e]=new t(this,e,n));return this},n.prototype.removeAttribute=function(e){var t,n;if(null==e)throw new Error("Missing attribute name");if(e=e.valueOf(),Array.isArray(e))for(t=0,n=e.length;t<n;t++)delete this.attributes[e[t]];else delete this.attributes[e];return this},n.prototype.toString=function(e){return this.options.writer.set(e).element(this)},n.prototype.att=function(e,t){return this.attribute(e,t)},n.prototype.a=function(e,t){return this.attribute(e,t)},n}()}).call(this)},"2kLc":function(e,t,n){"use strict";var r=n("AP4T"),i=n("Oryw"),o=n("3iOE"),a=n("wP3s");function s(e){return e}t.a=function(){for(var e=[],t=0;t<arguments.length;t++)e[t-0]=arguments[t];var n=Number.POSITIVE_INFINITY,l=null,u=e[e.length-1];return Object(o.a)(u)?(l=e.pop(),e.length>1&&"number"==typeof e[e.length-1]&&(n=e.pop())):"number"==typeof u&&(n=e.pop()),null===l&&1===e.length&&e[0]insta
 nceof r.Observable?e[0]:function(e){return void 0===e&&(e=Number.POSITIVE_INFINITY),Object(a.a)(s,null,e)}(n)(new i.a(e,l))}},"3LDD":function(e,t,n){"use strict";var r=n("tose").f,i=n("51pc"),o=n("pBmS"),a=n("pa70"),s=n("Lcie"),l=n("p/bR"),u=n("WsSm"),c=n("w/BM"),d=n("KpXt"),h=n("V+0c"),p=n("xI8H").fastKey,f=n("Y5fy"),m=h?"_s":"size",g=function(e,t){var n,r=p(t);if("F"!==r)return e._i[r];for(n=e._f;n;n=n.n)if(n.k==t)return n};e.exports={getConstructor:function(e,t,n,u){var c=e(function(e,r){s(e,c,t,"_i"),e._t=t,e._i=i(null),e._f=void 0,e._l=void 0,e[m]=0,void 0!=r&&l(r,n,e[u],e)});return o(c.prototype,{clear:function(){for(var e=f(this,t),n=e._i,r=e._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete n[r.i];e._f=e._l=void 0,e[m]=0},delete:function(e){var n=f(this,t),r=g(n,e);if(r){var i=r.n,o=r.p;delete n._i[r.i],r.r=!0,o&&(o.n=i),i&&(i.p=o),n._f==r&&(n._f=i),n._l==r&&(n._l=o),n[m]--}return!!r},forEach:function(e){f(this,t);for(var n,r=a(e,arguments.length>1?arguments[1]:void 0,3);n=n?
 n.n:this._f;)for(r(n.v,n.k,this);n&&n.r;)n=n.p},has:function(e){return!!g(f(this,t),e)}}),h&&r(c.prototype,"size",{get:function(){return f(this,t)[m]}}),c},def:function(e,t,n){var r,i,o=g(e,t);return o?o.v=n:(e._l=o={i:i=p(t,!0),k:t,v:n,p:r=e._l,n:void 0,r:!1},e._f||(e._f=o),r&&(r.n=o),e[m]++,"F"!==i&&(e._i[i]=o)),e},getEntry:g,setStrong:function(e,t,n){u(e,t,function(e,n){this._t=f(e,t),this._k=n,this._l=void 0},function(){for(var e=this._k,t=this._l;t&&t.r;)t=t.p;return this._t&&(this._l=t=t?t.n:this._t._f)?c(0,"keys"==e?t.k:"values"==e?t.v:[t.k,t.v]):(this._t=void 0,c(1))},n?"entries":"values",!n,!0),d(t)}}},"3MMU":function(e,t,n){"use strict";var r=n("RT4T"),i=n("KM3d"),o=n("rppw");e.exports=[].copyWithin||function(e,t){var n=r(this),a=o(n.length),s=i(e,a),l=i(t,a),u=arguments.length>2?arguments[2]:void 0,c=Math.min((void 0===u?a:i(u,a))-l,a-s),d=1;for(l<s&&s<l+c&&(d=-1,l+=c-1,s+=c-1);c-- >0;)l in n?n[s]=n[l]:delete n[s],s+=d,l+=d;return n}},"3iOE":function(e,t,n){"use strict";t
 .a=function(e){return e&&"function"==typeof e.schedule}},"3r0D":function(e,t,n){var r=n("Iclu")("wks"),i=n("c09d"),o=n("ptrv").Symbol,a="function"==typeof o;(e.exports=function(e){return r[e]||(r[e]=a&&o[e]||(a?o:i)("Symbol."+e))}).store=r},"4D9a":function(e,t,n){"use strict";n("RSwQ");var r=n("+pQw"),i=n("8H1R"),o=n("V+0c"),a=/./.toString,s=function(e){n("lfBE")(RegExp.prototype,"toString",e,!0)};n("umMR")(function(){return"/a/b"!=a.call({source:"a",flags:"b"})})?s(function(){var e=r(this);return"/".concat(e.source,"/","flags"in e?e.flags:!o&&e instanceof RegExp?i.call(e):void 0)}):"toString"!=a.name&&s(function(){return a.call(this)})},"4TT8":function(e,t,n){var r=n("CDXM");r(r.S+r.F*!n("V+0c"),"Object",{defineProperties:n("ewdp")})},"4WdS":function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},"4kq/":function(e,t,n){"use strict";var r=n("xhXA"),i=n("fIES"),o=n("V2lR"),a=n("Io8P"),s=Objec
 t.prototype.toString,l=Object.prototype.hasOwnProperty,u=9,c=10,d=32,h=33,p=34,f=35,m=37,g=38,v=39,y=42,b=44,w=45,x=58,E=62,k=63,C=64,_=91,S=93,A=96,T=123,D=124,F=125,O={0:"\\0",7:"\\a",8:"\\b",9:"\\t",10:"\\n",11:"\\v",12:"\\f",13:"\\r",27:"\\e",34:'\\"',92:"\\\\",133:"\\N",160:"\\_",8232:"\\L",8233:"\\P"},R=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function N(e){var t,n,o;if(t=e.toString(16).toUpperCase(),e<=255)n="x",o=2;else if(e<=65535)n="u",o=4;else{if(!(e<=4294967295))throw new i("code point within a string may not be greater than 0xFFFFFFFF");n="U",o=8}return"\\"+n+r.repeat("0",o-t.length)+t}function $(e,t){for(var n,i=r.repeat(" ",t),o=0,a=-1,s="",l=e.length;o<l;)-1===(a=e.indexOf("\n",o))?(n=e.slice(o),o=l):(n=e.slice(o,a+1),o=a+1),n.length&&"\n"!==n&&(s+=i),s+=n;return s}function L(e,t){return"\n"+r.repeat(" ",e.indent*t)}function P(e){return e===d||e===u}function M(e){return 32<=e&&e<=126||161<=e&&e<=55295&&8232!==e&&8233!==e||57
 344<=e&&e<=65533&&65279!==e||65536<=e&&e<=1114111}function I(e){return M(e)&&65279!==e&&e!==b&&e!==_&&e!==S&&e!==T&&e!==F&&e!==x&&e!==f}var B=1,j=2,V=3,z=4,U=5;function H(e,t,n,r){e.dump=function(){if(0===t.length)return"''";if(!e.noCompatMode&&-1!==R.indexOf(t))return"'"+t+"'";var o=e.indent*Math.max(1,n),a=-1===e.lineWidth?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-o);switch(function(t,n,r,i,o){var a,s,l,u=!1,d=!1,O=-1!==i,R=-1,N=M(l=t.charCodeAt(0))&&65279!==l&&!P(l)&&l!==w&&l!==k&&l!==x&&l!==b&&l!==_&&l!==S&&l!==T&&l!==F&&l!==f&&l!==g&&l!==y&&l!==h&&l!==D&&l!==E&&l!==v&&l!==p&&l!==m&&l!==C&&l!==A&&!P(t.charCodeAt(t.length-1));if(n)for(a=0;a<t.length;a++){if(!M(s=t.charCodeAt(a)))return U;N=N&&I(s)}else{for(a=0;a<t.length;a++){if((s=t.charCodeAt(a))===c)u=!0,O&&(d=d||a-R-1>i&&" "!==t[R+1],R=a);else if(!M(s))return U;N=N&&I(s)}d=d||O&&a-R-1>i&&" "!==t[R+1]}return u||d?" "===t[0]&&r>9?U:d?z:V:N&&!function(t){return function(e,t){var n,r;for(n=0,r=e.implicitTypes.length;n<r;n+
 =1)if(e.implicitTypes[n].resolve(t))return!0;return!1}(e,t)}(t)?B:j}(t,r||e.flowLevel>-1&&n>=e.flowLevel,e.indent,a)){case B:return t;case j:return"'"+t.replace(/'/g,"''")+"'";case V:return"|"+W(t,e.indent)+q($(t,o));case z:return">"+W(t,e.indent)+q($(function(e,t){for(var n,r,i,o=/(\n+)([^\n]*)/g,a=(i=e.indexOf("\n"),o.lastIndex=i=-1!==i?i:e.length,G(e.slice(0,i),t)),s="\n"===e[0]||" "===e[0];r=o.exec(e);){var l=r[2];n=" "===l[0],a+=r[1]+(s||n||""===l?"":"\n")+G(l,t),s=n}return a}(t,a),o));case U:return'"'+function(e){for(var t,n,r,i="",o=0;o<e.length;o++)(t=e.charCodeAt(o))>=55296&&t<=56319&&(n=e.charCodeAt(o+1))>=56320&&n<=57343?(i+=N(1024*(t-55296)+n-56320+65536),o++):i+=!(r=O[t])&&M(t)?e[o]:r||N(t);return i}(t)+'"';default:throw new i("impossible error: invalid scalar style")}}()}function W(e,t){var n=" "===e[0]?String(t):"",r="\n"===e[e.length-1];return n+(!r||"\n"!==e[e.length-2]&&"\n"!==e?r?"":"-":"+")+"\n"}function q(e){return"\n"===e[e.length-1]?e.slice(0,-1):e}function G(
 e,t){if(""===e||" "===e[0])return e;for(var n,r,i=/ [^ ]/g,o=0,a=0,s=0,l="";n=i.exec(e);)(s=n.index)-o>t&&(l+="\n"+e.slice(o,r=a>o?a:s),o=r+1),a=s;return l+="\n",(l+=e.length-o>t&&a>o?e.slice(o,a)+"\n"+e.slice(a+1):e.slice(o)).slice(1)}function K(e,t,n){var r,o,a,u,c,d;for(a=0,u=(o=n?e.explicitTypes:e.implicitTypes).length;a<u;a+=1)if(((c=o[a]).instanceOf||c.predicate)&&(!c.instanceOf||"object"==typeof t&&t instanceof c.instanceOf)&&(!c.predicate||c.predicate(t))){if(e.tag=n?c.tag:"?",c.represent){if(d=e.styleMap[c.tag]||c.defaultStyle,"[object Function]"===s.call(c.represent))r=c.represent(t,d);else{if(!l.call(c.represent,d))throw new i("!<"+c.tag+'> tag resolver accepts not "'+d+'" style');r=c.represent[d](t,d)}e.dump=r}return!0}return!1}function X(e,t){var n=new function(e){this.schema=e.schema||o,this.indent=Math.max(1,e.indent||2),this.skipInvalid=e.skipInvalid||!1,this.flowLevel=r.isNothing(e.flowLevel)?-1:e.flowLevel,this.styleMap=function(e,t){var n,r,i,o,a,s,u;if(null===t)r
 eturn{};for(n={},i=0,o=(r=Object.keys(t)).length;i<o;i+=1)a=r[i],s=String(t[a]),"!!"===a.slice(0,2)&&(a="tag:yaml.org,2002:"+a.slice(2)),(u=e.compiledTypeMap.fallback[a])&&l.call(u.styleAliases,s)&&(s=u.styleAliases[s]),n[a]=s;return n}(this.schema,e.styles||null),this.sortKeys=e.sortKeys||!1,this.lineWidth=e.lineWidth||80,this.noRefs=e.noRefs||!1,this.noCompatMode=e.noCompatMode||!1,this.condenseFlow=e.condenseFlow||!1,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}(t=t||{});return n.noRefs||function(t,n){var r,i,o=[],a=[];for(function e(t,n,r){var i,o,a;if(null!==t&&"object"==typeof t)if(-1!==(o=n.indexOf(t)))-1===r.indexOf(o)&&r.push(o);else if(n.push(t),Array.isArray(t))for(o=0,a=t.length;o<a;o+=1)e(t[o],n,r);else for(o=0,a=(i=Object.keys(t)).length;o<a;o+=1)e(t[i[o]],n,r)}(e,o,a),r=0,i=a.length;r<i;r+=1)n.duplicates.push(o[a[r]]);n.usedDuplicates=new Array(i
 )}(0,n),function e(t,n,r,o,a,l){t.tag=null,t.dump=r,K(t,r,!1)||K(t,r,!0);var u=s.call(t.dump);o&&(o=t.flowLevel<0||t.flowLevel>n);var d,h,p="[object Object]"===u||"[object Array]"===u;if(p&&(h=-1!==(d=t.duplicates.indexOf(r))),(null!==t.tag&&"?"!==t.tag||h||2!==t.indent&&n>0)&&(a=!1),h&&t.usedDuplicates[d])t.dump="*ref_"+d;else{if(p&&h&&!t.usedDuplicates[d]&&(t.usedDuplicates[d]=!0),"[object Object]"===u)o&&0!==Object.keys(t.dump).length?(function(t,n,r,o){var a,s,l,u,d,h,p="",f=t.tag,m=Object.keys(r);if(!0===t.sortKeys)m.sort();else if("function"==typeof t.sortKeys)m.sort(t.sortKeys);else if(t.sortKeys)throw new i("sortKeys must be a boolean or a function");for(a=0,s=m.length;a<s;a+=1)h="",o&&0===a||(h+=L(t,n)),u=r[l=m[a]],e(t,n+1,l,!0,!0,!0)&&((d=null!==t.tag&&"?"!==t.tag||t.dump&&t.dump.length>1024)&&(t.dump&&c===t.dump.charCodeAt(0)?h+="?":h+="? "),h+=t.dump,d&&(h+=L(t,n)),e(t,n+1,u,!0,d)&&(t.dump&&c===t.dump.charCodeAt(0)?h+=":":h+=": ",p+=h+=t.dump));t.tag=f,t.dump=p||"{}"}(t,
 n,t.dump,a),h&&(t.dump="&ref_"+d+t.dump)):(function(t,n,r){var i,o,a,s,l,u="",c=t.tag,d=Object.keys(r);for(i=0,o=d.lengt

<TRUNCATED>

[2/3] knox git commit: KNOX-1202 - Added UI elements to indicate invalid param values

Posted by pz...@apache.org.
http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-applications/src/main/resources/applications/admin-ui/app/main.743b2fb8ac3467eb4d6e.bundle.js
----------------------------------------------------------------------
diff --git a/gateway-applications/src/main/resources/applications/admin-ui/app/main.743b2fb8ac3467eb4d6e.bundle.js b/gateway-applications/src/main/resources/applications/admin-ui/app/main.743b2fb8ac3467eb4d6e.bundle.js
new file mode 100644
index 0000000..6dff280
--- /dev/null
+++ b/gateway-applications/src/main/resources/applications/admin-ui/app/main.743b2fb8ac3467eb4d6e.bundle.js
@@ -0,0 +1 @@
+webpackJsonp([0],{"+Bgu":function(e,t,n){"use strict";var r=n("vs5U");e.exports=new r("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:function(){return!0},construct:function(){},predicate:function(e){return"undefined"==typeof e},represent:function(){return""}})},"+Bur":function(e,t,n){e.exports=i;var r=n("rOzH").EventEmitter;function i(){r.call(this)}n("lDCR")(i,r),i.Readable=n("Osec"),i.Writable=n("QRYi"),i.Duplex=n("XvLI"),i.Transform=n("EJO3"),i.PassThrough=n("rr9E"),i.Stream=i,i.prototype.pipe=function(e,t){var n=this;function i(t){e.writable&&!1===e.write(t)&&n.pause&&n.pause()}function o(){n.readable&&n.resume&&n.resume()}n.on("data",i),e.on("drain",o),e._isStdio||t&&!1===t.end||(n.on("end",s),n.on("close",l));var a=!1;function s(){a||(a=!0,e.end())}function l(){a||(a=!0,"function"==typeof e.destroy&&e.destroy())}function u(e){if(c(),0===r.listenerCount(this,"error"))throw e}function c(){n.removeListener("data",i),e.removeListener("drain",o),n.removeListener("end",s),n
 .removeListener("close",l),n.removeListener("error",u),e.removeListener("error",u),n.removeListener("end",c),n.removeListener("close",c),e.removeListener("close",c)}return n.on("error",u),e.on("error",u),n.on("end",c),n.on("close",c),e.on("close",c),e.emit("pipe",n),e}},"+GRi":function(e,t,n){var r=n("Wo2w"),i=n("Wy9r");e.exports=function(e){return r(i(e))}},"+Q6C":function(e,t,n){var r=n("CDXM"),i=n("6De9").f,o=n("+pQw");r(r.S,"Reflect",{deleteProperty:function(e,t){var n=i(o(e),t);return!(n&&!n.configurable)&&delete e[t]}})},"+Ttu":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("0nO6"),i=n("T/R7");t.base64=function(e){return i.isPresent(r.Validators.required(e))?null:/^(?:[A-Z0-9+\/]{4})*(?:[A-Z0-9+\/]{2}==|[A-Z0-9+\/]{3}=|[A-Z0-9+\/]{4})$/i.test(e.value)?null:{base64:!0}}},"+UpI":function(e,t,n){"use strict";var r=n("vs5U");e.exports=new r("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return null!==e?e:{}}})},"+aW+":function(
 e,t,n){"use strict";var r=n("CDXM"),i=n("uNkO"),o=n("RT4T"),a=n("umMR"),s=[].sort,l=[1,2,3];r(r.P+r.F*(a(function(){l.sort(void 0)})||!a(function(){l.sort(null)})||!n("bhtb")(s)),"Array",{sort:function(e){return void 0===e?s.call(o(this)):s.call(o(this),i(e))}})},"+c1l":function(e,t,n){var r=n("CDXM");r(r.S+r.F*!n("V+0c"),"Object",{defineProperty:n("tose").f})},"+drv":function(e,t,n){n("s4JA"),e.exports=n("pj25").Object.assign},"+iEx":function(e,t,n){n("fHxy"),n("5GJ3"),n("X0O/"),n("HCkn"),n("ncNB"),n("soMw"),n("8sYH"),n("IJ3P"),n("t6ta"),e.exports=n("b4gG").Reflect},"+idH":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("LMZF"),i=n("Hdv7"),o=n("Dgm+"),a=n("Y3rb"),s=n("W+gm"),l=n("6qBi"),u=n("wmqw"),c=n("1YRa"),d=n("JbX1"),p=n("HJG1"),h=n("OmhC"),f=n("IX7e"),m=n("XW+V"),g=n("dq/9"),v=n("Gy8F"),y=n("udAz"),b=n("xRTw"),w=n("qdWP"),x=n("XJNw"),E=n("dFH0"),k=n("5AhL"),C=n("6nEb"),_=n("TCRl"),S=n("EBKx"),A=n("RMfc"),T=n("r9fp");t.CustomValidators={ba
 se64:i.base64,creditCard:o.creditCard,date:a.date,dateISO:s.dateISO,digits:l.digits,email:u.email,equal:c.equal,equalTo:d.equalTo,gt:p.gt,gte:h.gte,json:f.json,lt:m.lt,lte:g.lte,max:v.max,maxDate:y.maxDate,min:b.min,minDate:w.minDate,notEqual:x.notEqual,notEqualTo:E.notEqualTo,number:k.number,phone:C.phone,range:_.range,rangeLength:S.rangeLength,url:A.url,uuid:T.uuid};var D=[i.Base64Validator,o.CreditCardValidator,a.DateValidator,s.DateISOValidator,l.DigitsValidator,u.EmailValidator,c.EqualValidator,d.EqualToValidator,p.GreaterThanValidator,h.GreaterThanEqualValidator,f.JSONValidator,m.LessThanValidator,g.LessThanEqualValidator,v.MaxValidator,y.MaxDateValidator,b.MinValidator,w.MinDateValidator,x.NotEqualValidator,E.NotEqualToValidator,k.NumberValidator,C.PhoneValidator,_.RangeValidator,S.RangeLengthValidator,A.UrlValidator,T.UUIDValidator];t.CustomFormsModule=function(){function e(){}return e.decorators=[{type:r.NgModule,args:[{declarations:[D],exports:[D]}]}],e}()},"+pQw":function
 (e,t,n){var r=n("JXkd");e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},"/JsI":function(e,t,n){var r=n("CDXM");r(r.S+r.F,"Object",{assign:n("rIdM")})},"/Mgt":function(e,t,n){var r=n("CDXM");r(r.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},"/XRd":function(e,t,n){var r=n("tose"),i=n("CDXM"),o=n("+pQw"),a=n("A1WY");i(i.S+i.F*n("umMR")(function(){Reflect.defineProperty(r.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(e,t,n){o(e),t=a(t,!0),o(n);try{return r.f(e,t,n),!0}catch(e){return!1}}})},"/cYh":function(e,t,n){"use strict";var r=n("zOKz").Buffer,i=r.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case
 "ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(r.isEncoding===i||!i(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=l,this.end=u,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=c,this.end=d,t=3;break;default:return this.write=p,void(this.end=h)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(t)}function a(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:-1}function s(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"\ufffd".repeat(n);if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"\ufffd".repeat(n+1);if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"\ufffd".repeat(n+2)}}(this,e,t);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,
 this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function l(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function u(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("utf16le",0,this.lastTotal-this.lastNeed):t}function c(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function d(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.last
 Need):t}function p(e){return e.toString(this.encoding)}function h(e){return e&&e.length?this.write(e):""}t.StringDecoder=o,o.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n<e.length?t?t+this.text(e,n):this.text(e,n):t||""},o.prototype.end=function(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"\ufffd".repeat(this.lastTotal-this.lastNeed):t},o.prototype.text=function(e,t){var n=function(e,t,n){var r=t.length-1;if(r<n)return 0;var i=a(t[r]);return i>=0?(i>0&&(e.lastNeed=i-1),i):--r<n?0:(i=a(t[r]))>=0?(i>0&&(e.lastNeed=i-2),i):--r<n?0:(i=a(t[r]))>=0?(i>0&&(2===i?i=0:e.lastNeed=i-3),i):0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var r=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},o.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-t
 his.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},"/gBU":function(e,t,n){(function(){"use strict";var e,r,i,o,a,s={}.hasOwnProperty;e=n("ZMI8"),r=n("XPJv").defaults,o=function(e){return"string"==typeof e&&(e.indexOf("&")>=0||e.indexOf(">")>=0||e.indexOf("<")>=0)},a=function(e){return"<![CDATA["+i(e)+"]]>"},i=function(e){return e.replace("]]>","]]]]><![CDATA[>")},t.Builder=function(){function t(e){var t,n;for(t in this.options={},n=r[.2])s.call(n,t)&&(this.options[t]=n[t]);for(t in e)s.call(e,t)&&(this.options[t]=e[t])}return t.prototype.buildObject=function(t){var n,i,l,u,c,d;return n=this.options.attrkey,i=this.options.charkey,1===Object.keys(t).length&&this.options.rootName===r[.2].rootName?t=t[c=Object.keys(t)[0]]:c=this.options.rootName,d=this,l=function(e,t){var r,u,c,p,h;if("object"!=typeof t)d.options.cdata&&o(t)?e.raw(a(t)):e.txt(t);else if(Array.isArray
 (t)){for(p in t)if(s.call(t,p))for(h in u=t[p])c=u[h],e=l(e.ele(h),c).up()}else for(h in t)if(s.call(t,h))if(u=t[h],h===n){if("object"==typeof u)for(r in u)e=e.att(r,u[r])}else if(h===i)e=d.options.cdata&&o(u)?e.raw(a(u)):e.txt(u);else if(Array.isArray(u))for(p in u)s.call(u,p)&&(e="string"==typeof(c=u[p])?d.options.cdata&&o(c)?e.ele(h).raw(a(c)).up():e.ele(h,c).up():l(e.ele(h),c).up());else"object"==typeof u?e=l(e.ele(h),u).up():"string"==typeof u&&d.options.cdata&&o(u)?e=e.ele(h).raw(a(u)).up():(null==u&&(u=""),e=e.ele(h,u.toString()).up());return e},u=e.create(c,this.options.xmldec,this.options.doctype,{headless:this.options.headless,allowSurrogateChars:this.options.allowSurrogateChars}),l(u,t).end(this.options.renderOpts)},t}()}).call(this)},"/wY1":function(e,t,n){n("rMMT"),n("dlwK"),n("/XRd"),n("+Q6C"),n("dBNB"),n("7Fno"),n("gZpL"),n("dSHT"),n("d+61"),n("V2Dj"),n("wJYt"),n("gdNQ"),n("VsLy"),n("wLW2"),e.exports=n("b4gG").Reflect},0:function(e,t,n){e.exports=n("cDNt")},"05/W":fun
 ction(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("0nO6"),i=n("T/R7");t.min=function(e){return function(t){if(!i.isPresent(e))return null;if(i.isPresent(r.Validators.required(t)))return null;var n=+t.value;return n>=+e?null:{actualValue:n,requiredValue:+e,min:!0}}}},"0MXQ":function(e,t,n){var r=n("CDXM");r(r.S,"Math",{fround:n("xxX9")})},"0a2p":function(e,t,n){(function(e){var r=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(r.call(setTimeout,window,arguments),clearTimeout)},t.setInterval=function(){return new i(r.call(setInterval,window,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(window,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.act
 ive=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},n("fItk"),t.setImmediate="undefined"!=typeof self&&self.setImmediate||"undefined"!=typeof e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||"undefined"!=typeof e&&e.clearImmediate||this&&this.clearImmediate}).call(t,n("fRUx"))},"0aOR":function(e,t,n){n("dFZ2");var r=n("pj25").Object;e.exports=function(e,t,n){return r.defineProperty(e,t,n)}},"0bgt":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("0nO6"),i=n("T/R7");t.number=function(e){return i.isPresent(r.Validators.required(e))?null:/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(e.value)?null:{number:!0}}},"0dXn":function(e,t,n){var r=n("Nvcy"),i=n("Ft6c"),o=n("c/Zl");e.exports=n("tZKi")?Object.defineProperties:function(e,t){i(e);for(var n,a=o(t),s=a.length,l=0;s>l;)r.f(e,n=a[l++],t[n]);r
 eturn e}},"0hsw":function(e,t,n){e.exports={default:n("0aOR"),__esModule:!0}},"0nO6":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("6Xbx"),i=n("LMZF"),o=n("AP4T"),a=n("Ecq+"),s=n("1j/l"),l=n("qgI0"),u=n("lI6h"),c=function(e){function t(t,n){e.call(this),this.sources=t,this.resultSelector=n}return Object(r.b)(t,e),t.create=function(){for(var e=[],n=0;n<arguments.length;n++)e[n-0]=arguments[n];if(null===e||0===arguments.length)return new a.a;var r=null;return"function"==typeof e[e.length-1]&&(r=e.pop()),1===e.length&&Object(s.a)(e[0])&&(e=e[0]),0===e.length?new a.a:new t(e,r)},t.prototype._subscribe=function(e){return new d(e,this.sources,this.resultSelector)},t}(o.Observable),d=function(e){function t(t,n,r){e.call(this,t),this.sources=n,this.resultSelector=r,this.completed=0,this.haveValues=0;var i=n.length;this.total=i,this.values=new Array(i);for(var o=0;o<i;o++){var a=n[o],s=Object(l.a)(this,a,null,o);s&&(s.outerIndex=o,this.add(s))}}return 
 Object(r.b)(t,e),t.prototype.notifyNext=function(e,t,n,r,i){this.values[n]=t,i._hasValue||(i._hasValue=!0,this.haveValues++)},t.prototype.notifyComplete=function(e){var t=this.destination,n=this.haveValues,r=this.resultSelector,i=this.values,o=i.length;if(e._hasValue){if(this.completed++,this.completed===o){if(n===o){var a=r?r.apply(this,i):i;t.next(a)}t.complete()}}else t.complete()},t}(u.a),p=c.create,h=n("xIGM");function f(e){var t=e.subscriber;t.closed||(t.next(e.value),t.complete())}function m(e){var t=e.subscriber;t.closed||t.error(e.err)}var g=function(e){function t(t,n){e.call(this),this.promise=t,this.scheduler=n}return Object(r.b)(t,e),t.create=function(e,n){return new t(e,n)},t.prototype._subscribe=function(e){var t=this,n=this.promise,r=this.scheduler;if(null==r)this._isScalar?e.closed||(e.next(this.value),e.complete()):n.then(function(n){t.value=n,t._isScalar=!0,e.closed||(e.next(n),e.complete())},function(t){e.closed||e.error(t)}).then(null,function(e){h.a.setTimeout(f
 unction(){throw e})});else if(this._isScalar){if(!e.closed)return r.schedule(f,0,{value:this.value,subscriber:e})}else n.then(function(n){t.value=n,t._isScalar=!0,e.closed||e.add(r.schedule(f,0,{value:n,subscriber:e}))},function(t){e.closed||e.add(r.schedule(m,0,{err:t,subscriber:e}))}).then(null,function(e){h.a.setTimeout(function(){throw e})})},t}(o.Observable).create,v=n("dmC+"),y=n("RyBE");n.d(t,"AbstractControlDirective",function(){return b}),n.d(t,"AbstractFormGroupDirective",function(){return he}),n.d(t,"CheckboxControlValueAccessor",function(){return O}),n.d(t,"ControlContainer",function(){return w}),n.d(t,"NG_VALUE_ACCESSOR",function(){return D}),n.d(t,"COMPOSITION_BUFFER_MODE",function(){return N}),n.d(t,"DefaultValueAccessor",function(){return $}),n.d(t,"NgControl",function(){return j}),n.d(t,"NgControlStatus",function(){return ge}),n.d(t,"NgControlStatusGroup",function(){return ve}),n.d(t,"NgForm",function(){return Ae}),n.d(t,"NgModel",function(){return Pe}),n.d(t,"NgMod
 elGroup",function(){return Ne}),n.d(t,"RadioControlValueAccessor",function(){return U}),n.d(t,"FormControlDirective",function(){return Be}),n.d(t,"FormControlName",function(){return Ke}),n.d(t,"FormGroupDirective",function(){return Ve}),n.d(t,"FormArrayName",function(){return We}),n.d(t,"FormGroupName",function(){return Ue}),n.d(t,"NgSelectOption",function(){return X}),n.d(t,"SelectControlValueAccessor",function(){return K}),n.d(t,"SelectMultipleControlValueAccessor",function(){return Z}),n.d(t,"CheckboxRequiredValidator",function(){return Ze}),n.d(t,"EmailValidator",function(){return et}),n.d(t,"MaxLengthValidator",function(){return it}),n.d(t,"MinLengthValidator",function(){return nt}),n.d(t,"PatternValidator",function(){return at}),n.d(t,"RequiredValidator",function(){return Je}),n.d(t,"FormBuilder",function(){return st}),n.d(t,"AbstractControl",function(){return xe}),n.d(t,"FormArray",function(){return Ce}),n.d(t,"FormControl",function(){return Ee}),n.d(t,"FormGroup",function(){
 return ke}),n.d(t,"NG_ASYNC_VALIDATORS",function(){return k}),n.d(t,"NG_VALIDATORS",function(){return E}),n.d(t,"Validators",function(){return _}),n.d(t,"VERSION",function(){return lt}),n.d(t,"FormsModule",function(){return ft}),n.d(t,"ReactiveFormsModule",function(){return mt}),n.d(t,"\u0275ba",function(){return ht}),n.d(t,"\u0275z",function(){return pt}),n.d(t,"\u0275x",function(){return ct}),n.d(t,"\u0275y",function(){return dt}),n.d(t,"\u0275a",function(){return F}),n.d(t,"\u0275b",function(){return R}),n.d(t,"\u0275c",function(){return fe}),n.d(t,"\u0275d",function(){return me}),n.d(t,"\u0275e",function(){return _e}),n.d(t,"\u0275f",function(){return $e}),n.d(t,"\u0275g",function(){return Re}),n.d(t,"\u0275bf",function(){return ut}),n.d(t,"\u0275bb",function(){return M}),n.d(t,"\u0275bc",function(){return I}),n.d(t,"\u0275h",function(){return V}),n.d(t,"\u0275i",function(){return z}),n.d(t,"\u0275bd",function(){return H}),n.d(t,"\u0275be",function(){return W}),n.d(t,"\u0275j",f
 unction(){return Ie}),n.d(t,"\u0275k",function(){return Ge}),n.d(t,"\u0275l",function(){return je}),n.d(t,"\u0275n",function(){return He}),n.d(t,"\u0275m",function(){return ze}),n.d(t,"\u0275o",function(){return q}),n.d(t,"\u0275q",function(){return Q}),n.d(t,"\u0275p",function(){return Y}),n.d(t,"\u0275s",function(){return Ye}),n.d(t,"\u0275t",function(){return Qe}),n.d(t,"\u0275v",function(){return rt}),n.d(t,"\u0275u",function(){return tt}),n.d(t,"\u0275w",function(){return ot}),n.d(t,"\u0275r",function(){return Xe});var b=function(){function e(){}return Object.defineProperty(e.prototype,"value",{get:function(){return this.control?this.control.value:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"valid",{get:function(){return this.control?this.control.valid:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"invalid",{get:function(){return this.control?this.control.invalid:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.
 prototype,"pending",{get:function(){return this.control?this.control.pending:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"disabled",{get:function(){return this.control?this.control.disabled:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"enabled",{get:function(){return this.control?this.control.enabled:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"errors",{get:function(){return this.control?this.control.errors:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pristine",{get:function(){return this.control?this.control.pristine:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dirty",{get:function(){return this.control?this.control.dirty:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"touched",{get:function(){return this.control?this.control.touched:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"status",{get:fu
 nction(){return this.control?this.control.status:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"untouched",{get:function(){return this.control?this.control.untouched:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"statusChanges",{get:function(){return this.control?this.control.statusChanges:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"valueChanges",{get:function(){return this.control?this.control.valueChanges:null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"path",{get:function(){return null},enumerable:!0,configurable:!0}),e.prototype.reset=function(e){void 0===e&&(e=void 0),this.control&&this.control.reset(e)},e.prototype.hasError=function(e,t){return!!this.control&&this.control.hasError(e,t)},e.prototype.getError=function(e,t){return this.control?this.control.getError(e,t):null},e}(),w=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Object(r.b)(t,e)
 ,Object.defineProperty(t.prototype,"formDirective",{get:function(){return null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return null},enumerable:!0,configurable:!0}),t}(b);function x(e){return null==e||0===e.length}var E=new i.InjectionToken("NgValidators"),k=new i.InjectionToken("NgAsyncValidators"),C=/^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/,_=function(){function e(){}return e.min=function(e){return function(t){if(x(t.value)||x(e))return null;var n=parseFloat(t.value);return!isNaN(n)&&n<e?{min:{min:e,actual:t.value}}:null}},e.max=function(e){return function(t){if(x(t.value)||x(e))return null;var n=parseFloat(t.value);return!isNaN(n)&&n>e?{max:{max:e,actual:t.value}}:null}},e.required=function(e){return x(e.value)?{required:!0}:null},e.requiredTrue=function(e){return!0===e.value?null:{requi
 red:!0}},e.email=function(e){return C.test(e.value)?null:{email:!0}},e.minLength=function(e){return function(t){if(x(t.value))return null;var n=t.value?t.value.length:0;return n<e?{minlength:{requiredLength:e,actualLength:n}}:null}},e.maxLength=function(e){return function(t){var n=t.value?t.value.length:0;return n>e?{maxlength:{requiredLength:e,actualLength:n}}:null}},e.pattern=function(t){return t?("string"==typeof t?(r="^"+t+"$",n=new RegExp(r)):(r=t.toString(),n=t),function(e){if(x(e.value))return null;var t=e.value;return n.test(t)?null:{pattern:{requiredPattern:r,actualValue:t}}}):e.nullValidator;var n,r},e.nullValidator=function(e){return null},e.compose=function(e){if(!e)return null;var t=e.filter(S);return 0==t.length?null:function(e){return T(function(e,n){return t.map(function(t){return t(e)})}(e))}},e.composeAsync=function(e){if(!e)return null;var t=e.filter(S);return 0==t.length?null:function(e){var n=function(e,n){return t.map(function(t){return t(e)})}(e).map(A);return
  v.a.call(p(n),T)}},e}();function S(e){return null!=e}function A(e){var t=Object(i["\u0275isPromise"])(e)?g(e):e;if(!Object(i["\u0275isObservable"])(t))throw new Error("Expected validator to return Promise or Observable.");return t}function T(e){var t=e.reduce(function(e,t){return null!=t?Object(r.a)({},e,t):e},{});return 0===Object.keys(t).length?null:t}var D=new i.InjectionToken("NgValueAccessor"),F={provide:D,useExisting:Object(i.forwardRef)(function(){return O}),multi:!0},O=function(){function e(e,t){this._renderer=e,this._elementRef=t,this.onChange=function(e){},this.onTouched=function(){}}return e.prototype.writeValue=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"checked",e)},e.prototype.registerOnChange=function(e){this.onChange=e},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",e)},e}(),R={provide:D,useExisting:Object(i.forwardRef
 )(function(){return $}),multi:!0},N=new i.InjectionToken("CompositionEventMode"),$=function(){function e(e,t,n){var r;this._renderer=e,this._elementRef=t,this._compositionMode=n,this.onChange=function(e){},this.onTouched=function(){},this._composing=!1,null==this._compositionMode&&(this._compositionMode=(r=Object(y.r)()?Object(y.r)().getUserAgent():"",!/android (\d+)/.test(r.toLowerCase())))}return e.prototype.writeValue=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==e?"":e)},e.prototype.registerOnChange=function(e){this.onChange=e},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",e)},e.prototype._handleInput=function(e){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(e)},e.prototype._compositionStart=function(){this._composing=!0},e.prototype._compositionEnd=function(e){this._composing=!1,this.
 _compositionMode&&this.onChange(e)},e}();function L(e){return e.validate?function(t){return e.validate(t)}:e}function P(e){return e.validate?function(t){return e.validate(t)}:e}var M={provide:D,useExisting:Object(i.forwardRef)(function(){return I}),multi:!0},I=function(){function e(e,t){this._renderer=e,this._elementRef=t,this.onChange=function(e){},this.onTouched=function(){}}return e.prototype.writeValue=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==e?"":e)},e.prototype.registerOnChange=function(e){this.onChange=function(t){e(""==t?null:parseFloat(t))}},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",e)},e}();function B(){throw new Error("unimplemented")}var j=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._parent=null,t.name=null,t.valueAccessor=null,t._rawValidators=[],t._rawAsyncValidator
 s=[],t}return Object(r.b)(t,e),Object.defineProperty(t.prototype,"validator",{get:function(){return B()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"asyncValidator",{get:function(){return B()},enumerable:!0,configurable:!0}),t}(b),V={provide:D,useExisting:Object(i.forwardRef)(function(){return U}),multi:!0},z=function(){function e(){this._accessors=[]}return e.prototype.add=function(e,t){this._accessors.push([e,t])},e.prototype.remove=function(e){for(var t=this._accessors.length-1;t>=0;--t)if(this._accessors[t][1]===e)return void this._accessors.splice(t,1)},e.prototype.select=function(e){var t=this;this._accessors.forEach(function(n){t._isSameGroup(n,e)&&n[1]!==e&&n[1].fireUncheck(e.value)})},e.prototype._isSameGroup=function(e,t){return!!e[0].control&&e[0]._parent===t._control._parent&&e[1].name===t.name},e}(),U=function(){function e(e,t,n,r){this._renderer=e,this._elementRef=t,this._registry=n,this._injector=r,this.onChange=function(){},this.onTouched=funct
 ion(){}}return e.prototype.ngOnInit=function(){this._control=this._injector.get(j),this._checkName(),this._registry.add(this._control,this)},e.prototype.ngOnDestroy=function(){this._registry.remove(this)},e.prototype.writeValue=function(e){this._state=e===this.value,this._renderer.setProperty(this._elementRef.nativeElement,"checked",this._state)},e.prototype.registerOnChange=function(e){var t=this;this._fn=e,this.onChange=function(){e(t.value),t._registry.select(t)}},e.prototype.fireUncheck=function(e){this.writeValue(e)},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",e)},e.prototype._checkName=function(){this.name&&this.formControlName&&this.name!==this.formControlName&&this._throwNameError(),!this.name&&this.formControlName&&(this.name=this.formControlName)},e.prototype._throwNameError=function(){throw new Error('\n      If you define both a name and a formCon
 trolName attribute on your radio button, their values\n      must match. Ex: <input type="radio" formControlName="food" name="food">\n    ')},e}(),H={provide:D,useExisting:Object(i.forwardRef)(function(){return W}),multi:!0},W=function(){function e(e,t){this._renderer=e,this._elementRef=t,this.onChange=function(e){},this.onTouched=function(){}}return e.prototype.writeValue=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"value",parseFloat(e))},e.prototype.registerOnChange=function(e){this.onChange=function(t){e(""==t?null:parseFloat(t))}},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",e)},e}(),q={provide:D,useExisting:Object(i.forwardRef)(function(){return K}),multi:!0};function G(e,t){return null==e?""+t:(t&&"object"==typeof t&&(t="Object"),(e+": "+t).slice(0,50))}var K=function(){function e(e,t){this._renderer=e,this._elementRef=t,this._o
 ptionMap=new Map,this._idCounter=0,this.onChange=function(e){},this.onTouched=function(){},this._compareWith=i["\u0275looseIdentical"]}return Object.defineProperty(e.prototype,"compareWith",{set:function(e){if("function"!=typeof e)throw new Error("compareWith must be a function, but received "+JSON.stringify(e));this._compareWith=e},enumerable:!0,configurable:!0}),e.prototype.writeValue=function(e){this.value=e;var t=this._getOptionId(e);null==t&&this._renderer.setProperty(this._elementRef.nativeElement,"selectedIndex",-1);var n=G(t,e);this._renderer.setProperty(this._elementRef.nativeElement,"value",n)},e.prototype.registerOnChange=function(e){var t=this;this.onChange=function(n){t.value=t._getOptionValue(n),e(t.value)}},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",e)},e.prototype._registerOption=function(){return(this._idCounter++).toString()},e.prototype._g
 etOptionId=function(e){for(var t=0,n=Array.from(this._optionMap.keys());t<n.length;t++){var r=n[t];if(this._compareWith(this._optionMap.get(r),e))return r}return null},e.prototype._getOptionValue=function(e){var t=function(e){return e.split(":")[0]}(e);return this._optionMap.has(t)?this._optionMap.get(t):e},e}(),X=function(){function e(e,t,n){this._element=e,this._renderer=t,this._select=n,this._select&&(this.id=this._select._registerOption())}return Object.defineProperty(e.prototype,"ngValue",{set:function(e){null!=this._select&&(this._select._optionMap.set(this.id,e),this._setElementValue(G(this.id,e)),this._select.writeValue(this._select.value))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"value",{set:function(e){this._setElementValue(e),this._select&&this._select.writeValue(this._select.value)},enumerable:!0,configurable:!0}),e.prototype._setElementValue=function(e){this._renderer.setProperty(this._element.nativeElement,"value",e)},e.prototype.ngOnDestroy=
 function(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))},e}(),Y={provide:D,useExisting:Object(i.forwardRef)(function(){return Z}),multi:!0};function J(e,t){return null==e?""+t:("string"==typeof t&&(t="'"+t+"'"),t&&"object"==typeof t&&(t="Object"),(e+": "+t).slice(0,50))}var Z=function(){function e(e,t){this._renderer=e,this._elementRef=t,this._optionMap=new Map,this._idCounter=0,this.onChange=function(e){},this.onTouched=function(){},this._compareWith=i["\u0275looseIdentical"]}return Object.defineProperty(e.prototype,"compareWith",{set:function(e){if("function"!=typeof e)throw new Error("compareWith must be a function, but received "+JSON.stringify(e));this._compareWith=e},enumerable:!0,configurable:!0}),e.prototype.writeValue=function(e){var t,n=this;if(this.value=e,Array.isArray(e)){var r=e.map(function(e){return n._getOptionId(e)});t=function(e,t){e._setSelected(r.indexOf(t.toString())>-1)}}else t=function(e,t){e._setSelected
 (!1)};this._optionMap.forEach(t)},e.prototype.registerOnChange=function(e){var t=this;this.onChange=function(n){var r=[];if(n.hasOwnProperty("selectedOptions"))for(var i=n.selectedOptions,o=0;o<i.length;o++){var a=i.item(o),s=t._getOptionValue(a.value);r.push(s)}else for(i=n.options,o=0;o<i.length;o++)(a=i.item(o)).selected&&(s=t._getOptionValue(a.value),r.push(s));t.value=r,e(r)}},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",e)},e.prototype._registerOption=function(e){var t=(this._idCounter++).toString();return this._optionMap.set(t,e),t},e.prototype._getOptionId=function(e){for(var t=0,n=Array.from(this._optionMap.keys());t<n.length;t++){var r=n[t];if(this._compareWith(this._optionMap.get(r)._value,e))return r}return null},e.prototype._getOptionValue=function(e){var t=function(e){return e.split(":")[0]}(e);return this._optionMap.has(t)?this._optionMap.get(t)
 ._value:e},e}(),Q=function(){function e(e,t,n){this._element=e,this._renderer=t,this._select=n,this._select&&(this.id=this._select._registerOption(this))}return Object.defineProperty(e.prototype,"ngValue",{set:function(e){null!=this._select&&(this._value=e,this._setElementValue(J(this.id,e)),this._select.writeValue(this._select.value))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"value",{set:function(e){this._select?(this._value=e,this._setElementValue(J(this.id,e)),this._select.writeValue(this._select.value)):this._setElementValue(e)},enumerable:!0,configurable:!0}),e.prototype._setElementValue=function(e){this._renderer.setProperty(this._element.nativeElement,"value",e)},e.prototype._setSelected=function(e){this._renderer.setProperty(this._element.nativeElement,"selected",e)},e.prototype.ngOnDestroy=function(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))},e}();function ee(e,t){return t.path.concat([e])}f
 unction te(e,t){e||oe(t,"Cannot find control with"),t.valueAccessor||oe(t,"No value accessor for form control with"),e.validator=_.compose([e.validator,t.validator]),e.asyncValidator=_.composeAsync([e.asyncValidator,t.asyncValidator]),t.valueAccessor.writeValue(e.value),function(e,t){t.valueAccessor.registerOnChange(function(n){e._pendingValue=n,e._pendingChange=!0,e._pendingDirty=!0,"change"===e.updateOn&&ne(e,t)})}(e,t),function(e,t){e.registerOnChange(function(e,n){t.valueAccessor.writeValue(e),n&&t.viewToModelUpdate(e)})}(e,t),function(e,t){t.valueAccessor.registerOnTouched(function(){e._pendingTouched=!0,"blur"===e.updateOn&&e._pendingChange&&ne(e,t),"submit"!==e.updateOn&&e.markAsTouched()})}(e,t),t.valueAccessor.setDisabledState&&e.registerOnDisabledChange(function(e){t.valueAccessor.setDisabledState(e)}),t._rawValidators.forEach(function(t){t.registerOnValidatorChange&&t.registerOnValidatorChange(function(){return e.updateValueAndValidity()})}),t._rawAsyncValidators.forEach(
 function(t){t.registerOnValidatorChange&&t.registerOnValidatorChange(function(){return e.updateValueAndValidity()})})}function ne(e,t){t.viewToModelUpdate(e._pendingValue),e._pendingDirty&&e.markAsDirty(),e.setValue(e._pendingValue,{emitModelToViewChange:!1}),e._pendingChange=!1}function re(e,t){null==e&&oe(t,"Cannot find control with"),e.validator=_.compose([e.validator,t.validator]),e.asyncValidator=_.composeAsync([e.asyncValidator,t.asyncValidator])}function ie(e){return oe(e,"There is no FormControl instance attached to form control element with")}function oe(e,t){var n;throw n=e.path.length>1?"path: '"+e.path.join(" -> ")+"'":e.path[0]?"name: '"+e.path+"'":"unspecified name attribute",new Error(t+" "+n)}function ae(e){return null!=e?_.compose(e.map(L)):null}function se(e){return null!=e?_.composeAsync(e.map(P)):null}function le(e,t){if(!e.hasOwnProperty("model"))return!1;var n=e.model;return!!n.isFirstChange()||!Object(i["\u0275looseIdentical"])(t,n.currentValue)}var ue=[O,W,I,
 K,Z,U];function ce(e,t){e._syncPendingControls(),t.forEach(function(e){var t=e.control;"submit"===t.updateOn&&t._pendingChange&&(e.viewToModelUpdate(t._pendingValue),t._pendingChange=!1)})}function de(e,t){if(!t)return null;var n=void 0,r=void 0,i=void 0;return t.forEach(function(t){var o;t.constructor===$?n=t:(o=t,ue.some(function(e){return o.constructor===e})?(r&&oe(e,"More than one built-in value accessor matches form control with"),r=t):(i&&oe(e,"More than one custom value accessor matches form control with"),i=t))}),i||r||n||(oe(e,"No valid value accessor for form control with"),null)}function pe(e,t){var n=e.indexOf(t);n>-1&&e.splice(n,1)}var he=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Object(r.b)(t,e),t.prototype.ngOnInit=function(){this._checkParentType(),this.formDirective.addFormGroup(this)},t.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeFormGroup(this)},Object.defineProperty(t.prototype,"control",{get:
 function(){return this.formDirective.getFormGroup(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return ee(this.name,this._parent)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"validator",{get:function(){return ae(this._validators)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"asyncValidator",{get:function(){return se(this._asyncValidators)},enumerable:!0,configurable:!0}),t.prototype._checkParentType=function(){},t}(w),fe=function(){function e(e){this._cd=e}return Object.defineProperty(e.prototype,"ngClassUntouched",{get:function(){return!!this._cd.control&&this._cd.control.untouched},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngClassTouched",{get:function(){return!!this._cd.control&&this._cd.control.touched},enumerabl
 e:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngClassPristine",{get:function(){return!!this._cd.control&&this._cd.control.pristine},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngClassDirty",{get:function(){return!!this._cd.control&&this._cd.control.dirty},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngClassValid",{get:function(){return!!this._cd.control&&this._cd.control.valid},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngClassInvalid",{get:function(){return!!this._cd.control&&this._cd.control.invalid},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngClassPending",{get:function(){return!!this._cd.control&&this._cd.control.pending},enumerable:!0,configurable:!0}),e}(),me={"[class.ng-untouched]":"ngClassUntouched","[class.ng-touched]":"ngClassTouched","[class.ng-pristine]":"ngClassPristine","[class.ng-dirty]":"ngClassDirty","[class.ng-valid]":"ngClassValid","[class.ng-invalid]":"ngClas
 sInvalid","[class.ng-pending]":"ngClassPending"},ge=function(e){function t(t){return e.call(this,t)||this}return Object(r.b)(t,e),t}(fe),ve=function(e){function t(t){return e.call(this,t)||this}return Object(r.b)(t,e),t}(fe);function ye(e){var t=we(e)?e.validators:e;return Array.isArray(t)?ae(t):t||null}function be(e,t){var n=we(t)?t.asyncValidators:e;return Array.isArray(n)?se(n):n||null}function we(e){return null!=e&&!Array.isArray(e)&&"object"==typeof e}var xe=function(){function e(e,t){this.validator=e,this.asyncValidator=t,this._onCollectionChange=function(){},this.pristine=!0,this.touched=!1,this._onDisabledChange=[]}return Object.defineProperty(e.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"valid",{get:function(){return"VALID"===this.status},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"invalid",{get:function(){return"INVALID"===this.status},enumerable:!0,configurable:!0}),Objec
 t.defineProperty(e.prototype,"pending",{get:function(){return"PENDING"==this.status},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"disabled",{get:function(){return"DISABLED"===this.status},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"enabled",{get:function(){return"DISABLED"!==this.status},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dirty",{get:function(){return!this.pristine},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"untouched",{get:function(){return!this.touched},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"updateOn",{get:function(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"},enumerable:!0,configurable:!0}),e.prototype.setValidators=function(e){this.validator=ye(e)},e.prototype.setAsyncValidators=function(e){this.asyncValidator=be(e)},e.prototype.clearValidators=function(){this.validator=null},e.prototype.clearAsyncValidators=function
 (){this.asyncValidator=null},e.prototype.markAsTouched=function(e){void 0===e&&(e={}),this.touched=!0,this._parent&&!e.onlySelf&&this._parent.markAsTouched(e)},e.prototype.markAsUntouched=function(e){void 0===e&&(e={}),this.touched=!1,this._pendingTouched=!1,this._forEachChild(function(e){e.markAsUntouched({onlySelf:!0})}),this._parent&&!e.onlySelf&&this._parent._updateTouched(e)},e.prototype.markAsDirty=function(e){void 0===e&&(e={}),this.pristine=!1,this._parent&&!e.onlySelf&&this._parent.markAsDirty(e)},e.prototype.markAsPristine=function(e){void 0===e&&(e={}),this.pristine=!0,this._pendingDirty=!1,this._forEachChild(function(e){e.markAsPristine({onlySelf:!0})}),this._parent&&!e.onlySelf&&this._parent._updatePristine(e)},e.prototype.markAsPending=function(e){void 0===e&&(e={}),this.status="PENDING",this._parent&&!e.onlySelf&&this._parent.markAsPending(e)},e.prototype.disable=function(e){void 0===e&&(e={}),this.status="DISABLED",this.errors=null,this._forEachChild(function(e){e.di
 sable({onlySelf:!0})}),this._updateValue(),!1!==e.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(!!e.onlySelf),this._onDisabledChange.forEach(function(e){return e(!0)})},e.prototype.enable=function(e){void 0===e&&(e={}),this.status="VALID",this._forEachChild(function(e){e.enable({onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent}),this._updateAncestors(!!e.onlySelf),this._onDisabledChange.forEach(function(e){return e(!1)})},e.prototype._updateAncestors=function(e){this._parent&&!e&&(this._parent.updateValueAndValidity(),this._parent._updatePristine(),this._parent._updateTouched())},e.prototype.setParent=function(e){this._parent=e},e.prototype.updateValueAndValidity=function(e){void 0===e&&(e={}),this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),"VALID"!==this.status&&"PENDING"!==this
 .status||this._runAsyncValidator(e.emitEvent)),!1!==e.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!e.onlySelf&&this._parent.updateValueAndValidity(e)},e.prototype._updateTreeValidity=function(e){void 0===e&&(e={emitEvent:!0}),this._forEachChild(function(t){return t._updateTreeValidity(e)}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent})},e.prototype._setInitialStatus=function(){this.status=this._allControlsDisabled()?"DISABLED":"VALID"},e.prototype._runValidator=function(){return this.validator?this.validator(this):null},e.prototype._runAsyncValidator=function(e){var t=this;if(this.asyncValidator){this.status="PENDING";var n=A(this.asyncValidator(this));this._asyncValidationSubscription=n.subscribe(function(n){return t.setErrors(n,{emitEvent:e})})}},e.prototype._cancelExistingSubscription=function(){this._asyncValidationSubscription&&this._asyncValidationSubscription.unsubscribe()},e.prototype.setErrors=function
 (e,t){void 0===t&&(t={}),this.errors=e,this._updateControlsErrors(!1!==t.emitEvent)},e.prototype.get=function(e){return function(e,t,n){return null==t?null:(t instanceof Array||(t=t.split(".")),t instanceof Array&&0===t.length?null:t.reduce(function(e,t){return e instanceof ke?e.controls[t]||null:e instanceof Ce&&e.at(t)||null},e))}(this,e)},e.prototype.getError=function(e,t){var n=t?this.get(t):this;return n&&n.errors?n.errors[e]:null},e.prototype.hasError=function(e,t){return!!this.getError(e,t)},Object.defineProperty(e.prototype,"root",{get:function(){for(var e=this;e._parent;)e=e._parent;return e},enumerable:!0,configurable:!0}),e.prototype._updateControlsErrors=function(e){this.status=this._calculateStatus(),e&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(e)},e.prototype._initObservables=function(){this.valueChanges=new i.EventEmitter,this.statusChanges=new i.EventEmitter},e.prototype._calculateStatus=function(){return this._allControlsD
 isabled()?"DISABLED":this.errors?"INVALID":this._anyControlsHaveStatus("PENDING")?"PENDING":this._anyControlsHaveStatus("INVALID")?"INVALID":"VALID"},e.prototype._anyControlsHaveStatus=function(e){return this._anyControls(function(t){return t.status===e})},e.prototype._anyControlsDirty=function(){return this._anyControls(function(e){return e.dirty})},e.prototype._anyControlsTouched=function(){return this._anyControls(function(e){return e.touched})},e.prototype._updatePristine=function(e){void 0===e&&(e={}),this.pristine=!this._anyControlsDirty(),this._parent&&!e.onlySelf&&this._parent._updatePristine(e)},e.prototype._updateTouched=function(e){void 0===e&&(e={}),this.touched=this._anyControlsTouched(),this._parent&&!e.onlySelf&&this._parent._updateTouched(e)},e.prototype._isBoxedValue=function(e){return"object"==typeof e&&null!==e&&2===Object.keys(e).length&&"value"in e&&"disabled"in e},e.prototype._registerOnCollectionChange=function(e){this._onCollectionChange=e},e.prototype._setUp
 dateStrategy=function(e){we(e)&&null!=e.updateOn&&(this._updateOn=e.updateOn)},e}(),Ee=function(e){function t(t,n,r){void 0===t&&(t=null);var i=e.call(this,ye(n),be(r,n))||this;return i._onChange=[],i._applyFormState(t),i._setUpdateStrategy(n),i.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),i._initObservables(),i}return Object(r.b)(t,e),t.prototype.setValue=function(e,t){var n=this;void 0===t&&(t={}),this.value=this._pendingValue=e,this._onChange.length&&!1!==t.emitModelToViewChange&&this._onChange.forEach(function(e){return e(n.value,!1!==t.emitViewToModelChange)}),this.updateValueAndValidity(t)},t.prototype.patchValue=function(e,t){void 0===t&&(t={}),this.setValue(e,t)},t.prototype.reset=function(e,t){void 0===e&&(e=null),void 0===t&&(t={}),this._applyFormState(e),this.markAsPristine(t),this.markAsUntouched(t),this.setValue(this.value,t),this._pendingChange=!1},t.prototype._updateValue=function(){},t.prototype._anyControls=function(e){return!1},t.prototype._allControlsDisable
 d=function(){return this.disabled},t.prototype.registerOnChange=function(e){this._onChange.push(e)},t.prototype._clearChangeFns=function(){this._onChange=[],this._onDisabledChange=[],this._onCollectionChange=function(){}},t.prototype.registerOnDisabledChange=function(e){this._onDisabledChange.push(e)},t.prototype._forEachChild=function(e){},t.prototype._syncPendingControls=function(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))},t.prototype._applyFormState=function(e){this._isBoxedValue(e)?(this.value=this._pendingValue=e.value,e.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=e},t}(xe),ke=function(e){function t(t,n,r){var i=e.call(this,ye(n),be(r,n))||this;return i.controls=t,i._initObservables(),i._setUpdateStrategy(n),i._setUpControls(),i
 .updateValueAndValidity({onlySelf:!0,emitEvent:!1}),i}return Object(r.b)(t,e),t.prototype.registerControl=function(e,t){return this.controls[e]?this.controls[e]:(this.controls[e]=t,t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange),t)},t.prototype.addControl=function(e,t){this.registerControl(e,t),this.updateValueAndValidity(),this._onCollectionChange()},t.prototype.removeControl=function(e){this.controls[e]&&this.controls[e]._registerOnCollectionChange(function(){}),delete this.controls[e],this.updateValueAndValidity(),this._onCollectionChange()},t.prototype.setControl=function(e,t){this.controls[e]&&this.controls[e]._registerOnCollectionChange(function(){}),delete this.controls[e],t&&this.registerControl(e,t),this.updateValueAndValidity(),this._onCollectionChange()},t.prototype.contains=function(e){return this.controls.hasOwnProperty(e)&&this.controls[e].enabled},t.prototype.setValue=function(e,t){var n=this;void 0===t&&(t={}),this._checkAllValuesPresent(e),
 Object.keys(e).forEach(function(r){n._throwIfControlMissing(r),n.controls[r].setValue(e[r],{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t)},t.prototype.patchValue=function(e,t){var n=this;void 0===t&&(t={}),Object.keys(e).forEach(function(r){n.controls[r]&&n.controls[r].patchValue(e[r],{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t)},t.prototype.reset=function(e,t){void 0===e&&(e={}),void 0===t&&(t={}),this._forEachChild(function(n,r){n.reset(e[r],{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t),this._updatePristine(t),this._updateTouched(t)},t.prototype.getRawValue=function(){return this._reduceChildren({},function(e,t,n){return e[n]=t instanceof Ee?t.value:t.getRawValue(),e})},t.prototype._syncPendingControls=function(){var e=this._reduceChildren(!1,function(e,t){return!!t._syncPendingControls()||e});return e&&this.updateValueAndValidity({onlySelf:!0}),e},t.prototype._throwIfControlMissing=function(e){if(!Object.keys
 (this.controls).length)throw new Error("\n        There are no form controls registered with this group yet.  If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");if(!this.controls[e])throw new Error("Cannot find form control with name: "+e+".")},t.prototype._forEachChild=function(e){var t=this;Object.keys(this.controls).forEach(function(n){return e(t.controls[n],n)})},t.prototype._setUpControls=function(){var e=this;this._forEachChild(function(t){t.setParent(e),t._registerOnCollectionChange(e._onCollectionChange)})},t.prototype._updateValue=function(){this.value=this._reduceValue()},t.prototype._anyControls=function(e){var t=this,n=!1;return this._forEachChild(function(r,i){n=n||t.contains(i)&&e(r)}),n},t.prototype._reduceValue=function(){var e=this;return this._reduceChildren({},function(t,n,r){return(n.enabled||e.disabled)&&(t[r]=n.value),t})},t.prototype._reduceChildren=function(e,t){var n=e;return this._forEachChild(function(e,r){n=
 t(n,e,r)}),n},t.prototype._allControlsDisabled=function(){for(var e=0,t=Object.keys(this.controls);e<t.length;e++)if(this.controls[t[e]].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled},t.prototype._checkAllValuesPresent=function(e){this._forEachChild(function(t,n){if(void 0===e[n])throw new Error("Must supply a value for form control with name: '"+n+"'.")})},t}(xe),Ce=function(e){function t(t,n,r){var i=e.call(this,ye(n),be(r,n))||this;return i.controls=t,i._initObservables(),i._setUpdateStrategy(n),i._setUpControls(),i.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),i}return Object(r.b)(t,e),t.prototype.at=function(e){return this.controls[e]},t.prototype.push=function(e){this.controls.push(e),this._registerControl(e),this.updateValueAndValidity(),this._onCollectionChange()},t.prototype.insert=function(e,t){this.controls.splice(e,0,t),this._registerControl(t),this.updateValueAndValidity(),this._onCollectionChange()},t.prototype.removeAt=function(e){thi
 s.controls[e]&&this.controls[e]._registerOnCollectionChange(function(){}),this.controls.splice(e,1),this.updateValueAndValidity(),this._onCollectionChange()},t.prototype.setControl=function(e,t){this.controls[e]&&this.controls[e]._registerOnCollectionChange(function(){}),this.controls.splice(e,1),t&&(this.controls.splice(e,0,t),this._registerControl(t)),this.updateValueAndValidity(),this._onCollectionChange()},Object.defineProperty(t.prototype,"length",{get:function(){return this.controls.length},enumerable:!0,configurable:!0}),t.prototype.setValue=function(e,t){var n=this;void 0===t&&(t={}),this._checkAllValuesPresent(e),e.forEach(function(e,r){n._throwIfControlMissing(r),n.at(r).setValue(e,{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t)},t.prototype.patchValue=function(e,t){var n=this;void 0===t&&(t={}),e.forEach(function(e,r){n.at(r)&&n.at(r).patchValue(e,{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t)},t.prototype.reset=function(e,t){v
 oid 0===e&&(e=[]),void 0===t&&(t={}),this._forEachChild(function(n,r){n.reset(e[r],{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t),this._updatePristine(t),this._updateTouched(t)},t.prototype.getRawValue=function(){return this.controls.map(function(e){return e instanceof Ee?e.value:e.getRawValue()})},t.prototype._syncPendingControls=function(){var e=this.controls.reduce(function(e,t){return!!t._syncPendingControls()||e},!1);return e&&this.updateValueAndValidity({onlySelf:!0}),e},t.prototype._throwIfControlMissing=function(e){if(!this.controls.length)throw new Error("\n        There are no form controls registered with this array yet.  If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");if(!this.at(e))throw new Error("Cannot find form control at index "+e)},t.prototype._forEachChild=function(e){this.controls.forEach(function(t,n){e(t,n)})},t.prototype._updateValue=function(){var e=this;this.value=this.controls.filter
 (function(t){return t.enabled||e.disabled}).map(function(e){return e.value})},t.prototype._anyControls=function(e){return this.controls.some(function(t){return t.enabled&&e(t)})},t.prototype._setUpControls=function(){var e=this;this._forEachChild(function(t){return e._registerControl(t)})},t.prototype._checkAllValuesPresent=function(e){this._forEachChild(function(t,n){if(void 0===e[n])throw new Error("Must supply a value for form control at index: "+n+".")})},t.prototype._allControlsDisabled=function(){for(var e=0,t=this.controls;e<t.length;e++)if(t[e].enabled)return!1;return this.controls.length>0||this.disabled},t.prototype._registerControl=function(e){e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange)},t}(xe),_e={provide:w,useExisting:Object(i.forwardRef)(function(){return Ae})},Se=Promise.resolve(null),Ae=function(e){function t(t,n){var r=e.call(this)||this;return r.submitted=!1,r._directives=[],r.ngSubmit=new i.EventEmitter,r.form=new ke({},ae(t),se(n)),r
 }return Object(r.b)(t,e),t.prototype.ngAfterViewInit=function(){this._setUpdateStrategy()},Object.defineProperty(t.prototype,"formDirective",{get:function(){return this},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"control",{get:function(){return this.form},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"controls",{get:function(){return this.form.controls},enumerable:!0,configurable:!0}),t.prototype.addControl=function(e){var t=this;Se.then(function(){var n=t._findContainer(e.path);e.control=n.registerControl(e.name,e.control),te(e.control,e),e.control.updateValueAndValidity({emitEvent:!1}),t._directives.push(e)})},t.prototype.getControl=function(e){return this.form.get(e.path)},t.prototype.removeControl=function(e){var t=this;Se.then(function(){var n=t._findContainer(e.path);n&&n.removeControl(e.name),pe(t._directives,e)})},t.prototype.addFormG
 roup=function(e){var t=this;Se.then(function(){var n=t._findContainer(e.path),r=new ke({});re(r,e),n.registerControl(e.name,r),r.updateValueAndValidity({emitEvent:!1})})},t.prototype.removeFormGroup=function(e){var t=this;Se.then(function(){var n=t._findContainer(e.path);n&&n.removeControl(e.name)})},t.prototype.getFormGroup=function(e){return this.form.get(e.path)},t.prototype.updateModel=function(e,t){var n=this;Se.then(function(){n.form.get(e.path).setValue(t)})},t.prototype.setValue=function(e){this.control.setValue(e)},t.prototype.onSubmit=function(e){return this.submitted=!0,ce(this.form,this._directives),this.ngSubmit.emit(e),!1},t.prototype.onReset=function(){this.resetForm()},t.prototype.resetForm=function(e){void 0===e&&(e=void 0),this.form.reset(e),this.submitted=!1},t.prototype._setUpdateStrategy=function(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)},t.prototype._findContainer=function(e){return e.pop(),e.length?this.form.get(e
 ):this.form},t}(w),Te='\n    <div [formGroup]="myGroup">\n      <input formControlName="firstName">\n    </div>\n\n    In your class:\n\n    this.myGroup = new FormGroup({\n       firstName: new FormControl()\n    });',De='\n    <div [formGroup]="myGroup">\n       <div formGroupName="person">\n          <input formControlName="firstName">\n       </div>\n    </div>\n\n    In your class:\n\n    this.myGroup = new FormGroup({\n       person: new FormGroup({ firstName: new FormControl() })\n    });',Fe='\n    <form>\n       <div ngModelGroup="person">\n          <input [(ngModel)]="person.name" name="firstName">\n       </div>\n    </form>',Oe=function(){function e(){}return e.modelParentException=function(){throw new Error('\n      ngModel cannot be used to register form controls with a parent formGroup directive.  Try using\n      formGroup\'s partner directive "formControlName" instead.  Example:\n\n      '+Te+'\n\n      Or, if you\'d like to avoid registering this form control, ind
 icate that it\'s standalone in ngModelOptions:\n\n      Example:\n\n      \n    <div [formGroup]="myGroup">\n       <input formControlName="firstName">\n       <input [(ngModel)]="showMoreControls" [ngModelOptions]="{standalone: true}">\n    </div>\n  ')},e.formGroupNameException=function(){throw new Error("\n      ngModel cannot be used to register form controls with a parent formGroupName or formArrayName directive.\n\n      Option 1: Use formControlName instead of ngModel (reactive strategy):\n\n      "+De+"\n\n      Option 2:  Update ngModel's parent be ngModelGroup (template-driven strategy):\n\n      "+Fe)},e.missingNameException=function(){throw new Error('If ngModel is used within a form tag, either the name attribute must be set or the form\n      control must be defined as \'standalone\' in ngModelOptions.\n\n      Example 1: <input [(ngModel)]="person.firstName" name="first">\n      Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}">')}
 ,e.modelGroupParentException=function(){throw new Error("\n      ngModelGroup cannot be used with a parent formGroup directive.\n\n      Option 1: Use formGroupName instead of ngModelGroup (reactive strategy):\n\n      "+De+"\n\n      Option 2:  Use a regular form tag instead of the formGroup directive (template-driven strategy):\n\n      "+Fe)},e}(),Re={provide:w,useExisting:Object(i.forwardRef)(function(){return Ne})},Ne=function(e){function t(t,n,r){var i=e.call(this)||this;return i._parent=t,i._validators=n,i._asyncValidators=r,i}return Object(r.b)(t,e),t.prototype._checkParentType=function(){this._parent instanceof t||this._parent instanceof Ae||Oe.modelGroupParentException()},t}(he),$e={provide:j,useExisting:Object(i.forwardRef)(function(){return Pe})},Le=Promise.resolve(null),Pe=function(e){function t(t,n,r,o){var a=e.call(this)||this;return a.control=new Ee,a._registered=!1,a.update=new i.EventEmitter,a._parent=t,a._rawValidators=n||[],a._rawAsyncValidators=r||[],a.valueAcce
 ssor=de(a,o),a}return Object(r.b)(t,e),t.prototype.ngOnChanges=function(e){this._checkForErrors(),this._registered||this._setUpControl(),"isDisabled"in e&&this._updateDisabled(e),le(e,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)},t.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeControl(this)},Object.defineProperty(t.prototype,"path",{get:function(){return this._parent?ee(this.name,this._parent):[this.name]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"validator",{get:function(){return ae(this._rawValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"asyncValidator",{get:function(){return se(this._rawAsyncValidators)},enumerable:!0,configurable:!0}),t.prototype.viewToModelUpdate=function(e){this.viewModel=e,this.update.emit(e)},
 t.prototype._setUpControl=function(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0},t.prototype._setUpdateStrategy=function(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)},t.prototype._isStandalone=function(){return!this._parent||!(!this.options||!this.options.standalone)},t.prototype._setUpStandalone=function(){te(this.control,this),this.control.updateValueAndValidity({emitEvent:!1})},t.prototype._checkForErrors=function(){this._isStandalone()||this._checkParentType(),this._checkName()},t.prototype._checkParentType=function(){!(this._parent instanceof Ne)&&this._parent instanceof he?Oe.formGroupNameException():this._parent instanceof Ne||this._parent instanceof Ae||Oe.modelParentException()},t.prototype._checkName=function(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()||this.name||Oe.missingNameException()},t.prototype.
 _updateValue=function(e){var t=this;Le.then(function(){t.control.setValue(e,{emitViewToModelChange:!1})})},t.prototype._updateDisabled=function(e){var t=this,n=e.isDisabled.currentValue,r=""===n||n&&"false"!==n;Le.then(function(){r&&!t.control.disabled?t.control.disable():!r&&t.control.disabled&&t.control.enable()})},t}(j),Me=function(){function e(){}return e.controlParentException=function(){throw new Error("formControlName must be used with a parent formGroup directive.  You'll want to add a formGroup\n       directive and pass it an existing FormGroup instance (you can create one in your class).\n\n      Example:\n\n      "+Te)},e.ngModelGroupException=function(){throw new Error('formControlName cannot be used with an ngModelGroup parent. It is only compatible with parents\n       that also have a "form" prefix: formGroupName, formArrayName, or formGroup.\n\n       Option 1:  Update the parent to be formGroupName (reactive form strategy)\n\n        '+De+"\n\n        Option 2: Use
  ngModel instead of formControlName (template-driven strategy)\n\n        "+Fe)},e.missingFormException=function(){throw new Error("formGroup expects a FormGroup instance. Please pass one in.\n\n       Example:\n\n       "+Te)},e.groupParentException=function(){throw new Error("formGroupName must be used with a parent formGroup directive.  You'll want to add a formGroup\n      directive and pass it an existing FormGroup instance (you can create one in your class).\n\n      Example:\n\n      "+De)},e.arrayParentException=function(){throw new Error('formArrayName must be used with a parent formGroup directive.  You\'ll want to add a formGroup\n       directive and pass it an existing FormGroup instance (you can create one in your class).\n\n        Example:\n\n        \n    <div [formGroup]="myGroup">\n      <div formArrayName="cities">\n        <div *ngFor="let city of cityArray.controls; index as i">\n          <input [formControlName]="i">\n        </div>\n      </div>\n    </div>\
 n\n    In your class:\n\n    this.cityArray = new FormArray([new FormControl(\'SF\')]);\n    this.myGroup = new FormGroup({\n      cities: this.cityArray\n    });')},e.disabledAttrWarning=function(){console.warn("\n      It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true\n      when you set up this control in your component class, the disabled attribute will actually be set in the DOM for\n      you. We recommend using this approach to avoid 'changed after checked' errors.\n       \n      Example: \n      form = new FormGroup({\n        first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),\n        last: new FormControl('Drew', Validators.required)\n      });\n    ")},e}(),Ie={provide:j,useExisting:Object(i.forwardRef)(function(){return Be})},Be=function(e){function t(t,n,r){var o=e.call(this)||this;return o.update=new i.EventEmitter,o._rawValidators=t||[],o._rawAsyncValidators=n||[],o.valueAccessor=
 de(o,r),o}return Object(r.b)(t,e),Object.defineProperty(t.prototype,"isDisabled",{set:function(e){Me.disabledAttrWarning()},enumerable:!0,configurable:!0}),t.prototype.ngOnChanges=function(e){this._isControlChanged(e)&&(te(this.form,this),this.control.disabled&&this.valueAccessor.setDisabledState&&this.valueAccessor.setDisabledState(!0),this.form.updateValueAndValidity({emitEvent:!1})),le(e,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)},Object.defineProperty(t.prototype,"path",{get:function(){return[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"validator",{get:function(){return ae(this._rawValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"asyncValidator",{get:function(){return se(this._rawAsyncValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"control",{get:function(){return this.form},enumerable:!0,configurable:!0}),t.prototype.viewToModelUpdate=function(e){this.viewMode
 l=e,this.update.emit(e)},t.prototype._isControlChanged=function(e){return e.hasOwnProperty("form")},t}(j),je={provide:w,useExisting:Object(i.forwardRef)(function(){return Ve})},Ve=function(e){function t(t,n){var r=e.call(this)||this;return r._validators=t,r._asyncValidators=n,r.submitted=!1,r.directives=[],r.form=null,r.ngSubmit=new i.EventEmitter,r}return Object(r.b)(t,e),t.prototype.ngOnChanges=function(e){this._checkFormPresent(),e.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations())},Object.defineProperty(t.prototype,"formDirective",{get:function(){return this},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"control",{get:function(){return this.form},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return[]},enumerable:!0,configurable:!0}),t.prototype.addControl=function(e){var t=this.form.get(e.path);return te(t,e),t.updateValueAndValidity({emitEvent:!1}),this.directives.
 push(e),t},t.prototype.getControl=function(e){return this.form.get(e.path)},t.prototype.removeControl=function(e){pe(this.directives,e)},t.prototype.addFormGroup=function(e){var t=this.form.get(e.path);re(t,e),t.updateValueAndValidity({emitEvent:!1})},t.prototype.removeFormGroup=function(e){},t.prototype.getFormGroup=function(e){return this.form.get(e.path)},t.prototype.addFormArray=function(e){var t=this.form.get(e.path);re(t,e),t.updateValueAndValidity({emitEvent:!1})},t.prototype.removeFormArray=function(e){},t.prototype.getFormArray=function(e){return this.form.get(e.path)},t.prototype.updateModel=function(e,t){this.form.get(e.path).setValue(t)},t.prototype.onSubmit=function(e){return this.submitted=!0,ce(this.form,this.directives),this.ngSubmit.emit(e),!1},t.prototype.onReset=function(){this.resetForm()},t.prototype.resetForm=function(e){void 0===e&&(e=void 0),this.form.reset(e),this.submitted=!1},t.prototype._updateDomValue=function(){var e=this;this.directives.forEach(functio
 n(t){var n=e.form.get(t.path);t.control!==n&&(function(e,t){t.valueAccessor.registerOnChange(function(){return ie(t)}),t.valueAccessor.registerOnTouched(function(){return ie(t)}),t._rawValidators.forEach(function(e){e.registerOnValidatorChange&&e.registerOnValidatorChange(null)}),t._rawAsyncValidators.forEach(function(e){e.registerOnValidatorChange&&e.registerOnValidatorChange(null)}),e&&e._clearChangeFns()}(t.control,t),n&&te(n,t),t.control=n)}),this.form._updateTreeValidity({emitEvent:!1})},t.prototype._updateRegistrations=function(){var e=this;this.form._registerOnCollectionChange(function(){return e._updateDomValue()}),this._oldForm&&this._oldForm._registerOnCollectionChange(function(){}),this._oldForm=this.form},t.prototype._updateValidators=function(){var e=ae(this._validators);this.form.validator=_.compose([this.form.validator,e]);var t=se(this._asyncValidators);this.form.asyncValidator=_.composeAsync([this.form.asyncValidator,t])},t.prototype._checkFormPresent=function(){thi
 s.form||Me.missingFormException()},t}(w),ze={provide:w,useExisting:Object(i.forwardRef)(function(){return Ue})},Ue=function(e){function t(t,n,r){var i=e.call(this)||this;return i._parent=t,i._validators=n,i._asyncValidators=r,i}return Object(r.b)(t,e),t.prototype._checkParentType=function(){qe(this._parent)&&Me.groupParentException()},t}(he),He={provide:w,useExisting:Object(i.forwardRef)(function(){return We})},We=function(e){function t(t,n,r){var i=e.call(this)||this;return i._parent=t,i._validators=n,i._asyncValidators=r,i}return Object(r.b)(t,e),t.prototype.ngOnInit=function(){this._checkParentType(),this.formDirective.addFormArray(this)},t.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeFormArray(this)},Object.defineProperty(t.prototype,"control",{get:function(){return this.formDirective.getFormArray(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective
 :null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return ee(this.name,this._parent)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"validator",{get:function(){return ae(this._validators)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"asyncValidator",{get:function(){return se(this._asyncValidators)},enumerable:!0,configurable:!0}),t.prototype._checkParentType=function(){qe(this._parent)&&Me.arrayParentException()},t}(w);function qe(e){return!(e instanceof Ue||e instanceof Ve||e instanceof We)}var Ge={provide:j,useExisting:Object(i.forwardRef)(function(){return Ke})},Ke=function(e){function t(t,n,r,o){var a=e.call(this)||this;return a._added=!1,a.update=new i.EventEmitter,a._parent=t,a._rawValidators=n||[],a._rawAsyncValidators=r||[],a.valueAccessor=de(a,o),a}return Object(r.b)(t,e),Object.defineProperty(t.prototype,"isDisabled",{set:function(e){Me.disabledAttrWarning()},enumerable:!0,configurable:!
 0}),t.prototype.ngOnChanges=function(e){this._added||this._setUpControl(),le(e,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))},t.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeControl(this)},t.prototype.viewToModelUpdate=function(e){this.viewModel=e,this.update.emit(e)},Object.defineProperty(t.prototype,"path",{get:function(){return ee(this.name,this._parent)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"validator",{get:function(){return ae(this._rawValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"asyncValidator",{get:function(){return se(this._rawAsyncValidators)},enumerable:!0,configurable:!0}),t.prototype._checkParentType=function(){!(this._parent instanceof Ue)&&this._parent instanceof he?Me.ngModelGrou
 pException():this._parent instanceof Ue||this._parent instanceof Ve||this._parent instanceof We||Me.controlParentException()},t.prototype._setUpControl=function(){this._checkParentType(),this.control=this.formDirective.addControl(this),this.control.disabled&&this.valueAccessor.setDisabledState&&this.valueAccessor.setDisabledState(!0),this._added=!0},t}(j),Xe={provide:E,useExisting:Object(i.forwardRef)(function(){return Je}),multi:!0},Ye={provide:E,useExisting:Object(i.forwardRef)(function(){return Ze}),multi:!0},Je=function(){function e(){}return Object.defineProperty(e.prototype,"required",{get:function(){return this._required},set:function(e){this._required=null!=e&&!1!==e&&""+e!="false",this._onChange&&this._onChange()},enumerable:!0,configurable:!0}),e.prototype.validate=function(e){return this.required?_.required(e):null},e.prototype.registerOnValidatorChange=function(e){this._onChange=e},e}(),Ze=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Obj
 ect(r.b)(t,e),t.prototype.validate=function(e){return this.required?_.requiredTrue(e):null},t}(Je),Qe={provide:E,useExisting:Object(i.forwardRef)(function(){return et}),multi:!0},et=function(){function e(){}return Object.defineProperty(e.prototype,"email",{set:function(e){this._enabled=""===e||!0===e||"true"===e,this._onChange&&this._onChange()},enumerable:!0,configurable:!0}),e.prototype.validate=function(e){return this._enabled?_.email(e):null},e.prototype.registerOnValidatorChange=function(e){this._onChange=e},e}(),tt={provide:E,useExisting:Object(i.forwardRef)(function(){return nt}),multi:!0},nt=function(){function e(){}return e.prototype.ngOnChanges=function(e){"minlength"in e&&(this._createValidator(),this._onChange&&this._onChange())},e.prototype.validate=function(e){return null==this.minlength?null:this._validator(e)},e.prototype.registerOnValidatorChange=function(e){this._onChange=e},e.prototype._createValidator=function(){this._validator=_.minLength(parseInt(this.minlength
 ,10))},e}(),rt={provide:E,useExisting:Object(i.forwardRef)(function(){return it}),multi:!0},it=function(){function e(){}return e.prototype.ngOnChanges=function(e){"maxlength"in e&&(this._createValidator(),this._onChange&&this._onChange())},e.prototype.validate=function(e){return null!=this.maxlength?this._validator(e):null},e.prototype.registerOnValidatorChange=function(e){this._onChange=e},e.prototype._createValidator=function(){this._validator=_.maxLength(parseInt(this.maxlength,10))},e}(),ot={provide:E,useExisting:Object(i.forwardRef)(function(){return at}),multi:!0},at=function(){function e(){}return e.prototype.ngOnChanges=function(e){"pattern"in e&&(this._createValidator(),this._onChange&&this._onChange())},e.prototype.validate=function(e){return this._validator(e)},e.prototype.registerOnValidatorChange=function(e){this._onChange=e},e.prototype._createValidator=function(){this._validator=_.pattern(this.pattern)},e}(),st=function(){function e(){}return e.prototype.group=functio
 n(e,t){void 0===t&&(t=null);var n=this._reduceControls(e);return new ke(n,null!=t?t.validator:null,null!=t?t.asyncValidator:null)},e.prototype.control=function(e,t,n){return new Ee(e,t,n)},e.prototype.array=function(e,t,n){var r=this,i=e.map(function(e){return r._createControl(e)});return new Ce(i,t,n)},e.prototype._reduceControls=function(e){var t=this,n={};return Object.keys(e).forEach(function(r){n[r]=t._createControl(e[r])}),n},e.prototype._createControl=function(e){return e instanceof Ee||e instanceof ke||e instanceof Ce?e:Array.isArray(e)?this.control(e[0],e.length>1?e[1]:null,e.length>2?e[2]:null):this.control(e)},e}(),lt=new i.Version("5.2.0"),ut=function(){},ct=[ut,X,Q,$,I,W,O,K,Z,U,ge,ve,Je,nt,it,at,Ze,et],dt=[Pe,Ne,Ae],pt=[Be,Ve,Ke,Ue,We],ht=function(){},ft=function(){},mt=function(){}},1:function(e,t){},"1Rb4":function(e,t,n){"use strict";(function(t){e.exports=!t.version||0===t.version.indexOf("v0.")||0===t.version.indexOf("v1.")&&0!==t.version.indexOf("v1.8.")?function
 (e,n,r,i){if("function"!=typeof e)throw new TypeError('"callback" argument must be a function');var o,a,s=arguments.length;switch(s){case 0:case 1:return t.nextTick(e);case 2:return t.nextTick(function(){e.call(null,n)});case 3:return t.nextTick(function(){e.call(null,n,r)});case 4:return t.nextTick(function(){e.call(null,n,r,i)});default:for(o=new Array(s-1),a=0;a<o.length;)o[a++]=arguments[a];return t.nextTick(function(){e.apply(null,o)})}}:t.nextTick}).call(t,n("1WNV"))},"1WNV":function(e,t){var n,r,i=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){
 r=a}}();var l,u=[],c=!1,d=-1;function p(){c&&l&&(c=!1,l.length?u=l.concat(u):d=-1,u.length&&h())}function h(){if(!c){var e=s(p);c=!0;for(var t=u.length;t;){for(l=u,u=[];++d<t;)l&&l[d].run();d=-1,t=u.length}l=null,c=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function f(e,t){this.fun=e,this.array=t}function m(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new f(e,t)),1!==u.length||c||s(h)},f.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=m,i.addListener=m,i.once=m,i.off=m,i.removeListener=m,i.removeAllListeners=m,i.emit=m,i.prependListener=m,i.prependOnceListener=m,i.listeners=function(e){return[]},i.binding=function(e){throw new Error
 ("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},"1YRa":function(e,t,n){"use strict";function r(e){for(var n in e)t.hasOwnProperty(n)||(t[n]=e[n])}Object.defineProperty(t,"__esModule",{value:!0}),r(n("VVJs")),r(n("az2Y"))},"1j/l":function(e,t,n){"use strict";n.d(t,"a",function(){return r});var r=Array.isArray||function(e){return e&&"number"==typeof e.length}},"1qma":function(e,t,n){var r=n("nKkP");e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},"1zvG":function(e,t,n){"use strict";var r=n("JXkd"),i=n("TJLg"),o=n("3r0D")("hasInstance"),a=Function.prototype;o in a||n("tose").f(a,o,{value:function(e){if("function"!=typeof this||!r(e))return!1;if(!r(this.prototype))return e instanceof this;for(;e=i(e);)if(this.prototype===e)return!0;return!1}})},"2Fuj":function(e,t,n){var r=n("R5c1"),i=n("a/Sk");e.exports=Objec
 t.keys||function(e){return r(e,i)}},"2fm9":function(e,t,n){(function(){var t,r,i,o,a,s={}.hasOwnProperty;a=n("VH4r"),o=a.isObject,i=a.isFunction,r=n("p7eS"),t=n("eIJN"),e.exports=function(e){function n(e,t,r){if(n.__super__.constructor.call(this,e),null==t)throw new Error("Missing element name");this.name=this.stringify.eleName(t),this.attributes={},null!=r&&this.attribute(r),e.isDocument&&(this.isRoot=!0,this.documentObject=e,e.rootObject=this)}return function(e,t){for(var n in t)s.call(t,n)&&(e[n]=t[n]);function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r,e.__super__=t.prototype}(n,r),n.prototype.clone=function(){var e,t,n;for(e in(t=Object.create(this)).isRoot&&(t.documentObject=null),t.attributes={},n=this.attributes)s.call(n,e)&&(t.attributes[e]=n[e].clone());return t.children=[],this.children.forEach(function(e){var n;return(n=e.clone()).parent=t,t.children.push(n)}),t},n.prototype.attribute=function(e,n){var r;if(null!=e&&(e=e.valueOf()),o(e))for(r in e)s
 .call(e,r)&&this.attribute(r,e[r]);else i(n)&&(n=n.apply()),this.options.skipNullAttributes&&null==n||(this.attributes[e]=new t(this,e,n));return this},n.prototype.removeAttribute=function(e){var t,n;if(null==e)throw new Error("Missing attribute name");if(e=e.valueOf(),Array.isArray(e))for(t=0,n=e.length;t<n;t++)delete this.attributes[e[t]];else delete this.attributes[e];return this},n.prototype.toString=function(e){return this.options.writer.set(e).element(this)},n.prototype.att=function(e,t){return this.attribute(e,t)},n.prototype.a=function(e,t){return this.attribute(e,t)},n}()}).call(this)},"2kLc":function(e,t,n){"use strict";var r=n("AP4T"),i=n("Oryw"),o=n("3iOE"),a=n("wP3s");function s(e){return e}t.a=function(){for(var e=[],t=0;t<arguments.length;t++)e[t-0]=arguments[t];var n=Number.POSITIVE_INFINITY,l=null,u=e[e.length-1];return Object(o.a)(u)?(l=e.pop(),e.length>1&&"number"==typeof e[e.length-1]&&(n=e.pop())):"number"==typeof u&&(n=e.pop()),null===l&&1===e.length&&e[0]insta
 nceof r.Observable?e[0]:function(e){return void 0===e&&(e=Number.POSITIVE_INFINITY),Object(a.a)(s,null,e)}(n)(new i.a(e,l))}},"3LDD":function(e,t,n){"use strict";var r=n("tose").f,i=n("51pc"),o=n("pBmS"),a=n("pa70"),s=n("Lcie"),l=n("p/bR"),u=n("WsSm"),c=n("w/BM"),d=n("KpXt"),p=n("V+0c"),h=n("xI8H").fastKey,f=n("Y5fy"),m=p?"_s":"size",g=function(e,t){var n,r=h(t);if("F"!==r)return e._i[r];for(n=e._f;n;n=n.n)if(n.k==t)return n};e.exports={getConstructor:function(e,t,n,u){var c=e(function(e,r){s(e,c,t,"_i"),e._t=t,e._i=i(null),e._f=void 0,e._l=void 0,e[m]=0,void 0!=r&&l(r,n,e[u],e)});return o(c.prototype,{clear:function(){for(var e=f(this,t),n=e._i,r=e._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete n[r.i];e._f=e._l=void 0,e[m]=0},delete:function(e){var n=f(this,t),r=g(n,e);if(r){var i=r.n,o=r.p;delete n._i[r.i],r.r=!0,o&&(o.n=i),i&&(i.p=o),n._f==r&&(n._f=i),n._l==r&&(n._l=o),n[m]--}return!!r},forEach:function(e){f(this,t);for(var n,r=a(e,arguments.length>1?arguments[1]:void 0,3);n=n?
 n.n:this._f;)for(r(n.v,n.k,this);n&&n.r;)n=n.p},has:function(e){return!!g(f(this,t),e)}}),p&&r(c.prototype,"size",{get:function(){return f(this,t)[m]}}),c},def:function(e,t,n){var r,i,o=g(e,t);return o?o.v=n:(e._l=o={i:i=h(t,!0),k:t,v:n,p:r=e._l,n:void 0,r:!1},e._f||(e._f=o),r&&(r.n=o),e[m]++,"F"!==i&&(e._i[i]=o)),e},getEntry:g,setStrong:function(e,t,n){u(e,t,function(e,n){this._t=f(e,t),this._k=n,this._l=void 0},function(){for(var e=this._k,t=this._l;t&&t.r;)t=t.p;return this._t&&(this._l=t=t?t.n:this._t._f)?c(0,"keys"==e?t.k:"values"==e?t.v:[t.k,t.v]):(this._t=void 0,c(1))},n?"entries":"values",!n,!0),d(t)}}},"3MMU":function(e,t,n){"use strict";var r=n("RT4T"),i=n("KM3d"),o=n("rppw");e.exports=[].copyWithin||function(e,t){var n=r(this),a=o(n.length),s=i(e,a),l=i(t,a),u=arguments.length>2?arguments[2]:void 0,c=Math.min((void 0===u?a:i(u,a))-l,a-s),d=1;for(l<s&&s<l+c&&(d=-1,l+=c-1,s+=c-1);c-- >0;)l in n?n[s]=n[l]:delete n[s],s+=d,l+=d;return n}},"3iOE":function(e,t,n){"use strict";t
 .a=function(e){return e&&"function"==typeof e.schedule}},"3r0D":function(e,t,n){var r=n("Iclu")("wks"),i=n("c09d"),o=n("ptrv").Symbol,a="function"==typeof o;(e.exports=function(e){return r[e]||(r[e]=a&&o[e]||(a?o:i)("Symbol."+e))}).store=r},"4D9a":function(e,t,n){"use strict";n("RSwQ");var r=n("+pQw"),i=n("8H1R"),o=n("V+0c"),a=/./.toString,s=function(e){n("lfBE")(RegExp.prototype,"toString",e,!0)};n("umMR")(function(){return"/a/b"!=a.call({source:"a",flags:"b"})})?s(function(){var e=r(this);return"/".concat(e.source,"/","flags"in e?e.flags:!o&&e instanceof RegExp?i.call(e):void 0)}):"toString"!=a.name&&s(function(){return a.call(this)})},"4TT8":function(e,t,n){var r=n("CDXM");r(r.S+r.F*!n("V+0c"),"Object",{defineProperties:n("ewdp")})},"4WdS":function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},"4kq/":function(e,t,n){"use strict";var r=n("xhXA"),i=n("fIES"),o=n("V2lR"),a=n("Io8P"),s=Objec
 t.prototype.toString,l=Object.prototype.hasOwnProperty,u=9,c=10,d=32,p=33,h=34,f=35,m=37,g=38,v=39,y=42,b=44,w=45,x=58,E=62,k=63,C=64,_=91,S=93,A=96,T=123,D=124,F=125,O={0:"\\0",7:"\\a",8:"\\b",9:"\\t",10:"\\n",11:"\\v",12:"\\f",13:"\\r",27:"\\e",34:'\\"',92:"\\\\",133:"\\N",160:"\\_",8232:"\\L",8233:"\\P"},R=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function N(e){var t,n,o;if(t=e.toString(16).toUpperCase(),e<=255)n="x",o=2;else if(e<=65535)n="u",o=4;else{if(!(e<=4294967295))throw new i("code point within a string may not be greater than 0xFFFFFFFF");n="U",o=8}return"\\"+n+r.repeat("0",o-t.length)+t}function $(e,t){for(var n,i=r.repeat(" ",t),o=0,a=-1,s="",l=e.length;o<l;)-1===(a=e.indexOf("\n",o))?(n=e.slice(o),o=l):(n=e.slice(o,a+1),o=a+1),n.length&&"\n"!==n&&(s+=i),s+=n;return s}function L(e,t){return"\n"+r.repeat(" ",e.indent*t)}function P(e){return e===d||e===u}function M(e){return 32<=e&&e<=126||161<=e&&e<=55295&&8232!==e&&8233!==e||57
 344<=e&&e<=65533&&65279!==e||65536<=e&&e<=1114111}function I(e){return M(e)&&65279!==e&&e!==b&&e!==_&&e!==S&&e!==T&&e!==F&&e!==x&&e!==f}var B=1,j=2,V=3,z=4,U=5;function H(e,t,n,r){e.dump=function(){if(0===t.length)return"''";if(!e.noCompatMode&&-1!==R.indexOf(t))return"'"+t+"'";var o=e.indent*Math.max(1,n),a=-1===e.lineWidth?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-o);switch(function(t,n,r,i,o){var a,s,l,u=!1,d=!1,O=-1!==i,R=-1,N=M(l=t.charCodeAt(0))&&65279!==l&&!P(l)&&l!==w&&l!==k&&l!==x&&l!==b&&l!==_&&l!==S&&l!==T&&l!==F&&l!==f&&l!==g&&l!==y&&l!==p&&l!==D&&l!==E&&l!==v&&l!==h&&l!==m&&l!==C&&l!==A&&!P(t.charCodeAt(t.length-1));if(n)for(a=0;a<t.length;a++){if(!M(s=t.charCodeAt(a)))return U;N=N&&I(s)}else{for(a=0;a<t.length;a++){if((s=t.charCodeAt(a))===c)u=!0,O&&(d=d||a-R-1>i&&" "!==t[R+1],R=a);else if(!M(s))return U;N=N&&I(s)}d=d||O&&a-R-1>i&&" "!==t[R+1]}return u||d?" "===t[0]&&r>9?U:d?z:V:N&&!function(t){return function(e,t){var n,r;for(n=0,r=e.implicitTypes.length;n<r;n+
 =1)if(e.implicitTypes[n].resolve(t))return!0;return!1}(e,t)}(t)?B:j}(t,r||e.flowLevel>-1&&n>=e.flowLevel,e.indent,a)){case B:return t;case j:return"'"+t.replace(/'/g,"''")+"'";case V:return"|"+W(t,e.indent)+q($(t,o));case z:return">"+W(t,e.indent)+q($(function(e,t){for(var n,r,i,o=/(\n+)([^\n]*)/g,a=(i=e.indexOf("\n"),o.lastIndex=i=-1!==i?i:e.length,G(e.slice(0,i),t)),s="\n"===e[0]||" "===e[0];r=o.exec(e);){var l=r[2];n=" "===l[0],a+=r[1]+(s||n||""===l?"":"\n")+G(l,t),s=n}return a}(t,a),o));case U:return'"'+function(e){for(var t,n,r,i="",o=0;o<e.length;o++)(t=e.charCodeAt(o))>=55296&&t<=56319&&(n=e.charCodeAt(o+1))>=56320&&n<=57343?(i+=N(1024*(t-55296)+n-56320+65536),o++):i+=!(r=O[t])&&M(t)?e[o]:r||N(t);return i}(t)+'"';default:throw new i("impossible error: invalid scalar style")}}()}function W(e,t){var n=" "===e[0]?String(t):"",r="\n"===e[e.length-1];return n+(!r||"\n"!==e[e.length-2]&&"\n"!==e?r?"":"-":"+")+"\n"}function q(e){return"\n"===e[e.length-1]?e.slice(0,-1):e}function G(
 e,t){if(""===e||" "===e[0])return e;for(var n,r,i=/ [^ ]/g,o=0,a=0,s=0,l="";n=i.exec(e);)(s=n.index)-o>t&&(l+="\n"+e.slice(o,r=a>o?a:s),o=r+1),a=s;return l+="\n",(l+=e.length-o>t&&a>o?e.slice(o,a)+"\n"+e.slice(a+1):e.slice(o)).slice(1)}function K(e,t,n){var r,o,a,u,c,d;for(a=0,u=(o=n?e.explicitTypes:e.implicitTypes).length;a<u;a+=1)if(((c=o[a]).instanceOf||c.predicate)&&(!c.instanceOf||"object"==typeof t&&t instanceof c.instanceOf)&&(!c.predicate||c.predicate(t))){if(e.tag=n?c.tag:"?",c.represent){if(d=e.styleMap[c.tag]||c.defaultStyle,"[object Function]"===s.call(c.represent))r=c.represent(t,d);else{if(!l.call(c.represent,d))throw new i("!<"+c.tag+'> tag resolver accepts not "'+d+'" style');r=c.represent[d](t,d)}e.dump=r}return!0}return!1}function X(e,t){var n=new function(e){this.schema=e.schema||o,this.indent=Math.max(1,e.indent||2),this.skipInvalid=e.skipInvalid||!1,this.flowLevel=r.isNothing(e.flowLevel)?-1:e.flowLevel,this.styleMap=function(e,t){var n,r,i,o,a,s,u;if(null===t)r
 eturn{};for(n={},i=0,o=(r=Object.keys(t)).length;i<o;i+=1)a=r[i],s=String(t[a]),"!!"===a.slice(0,2)&&(a="tag:yaml.org,2002:"+a.slice(2)),(u=e.compiledTypeMap.fallback[a])&&l.call(u.styleAliases,s)&&(s=u.styleAliases[s]),n[a]=s;return n}(this.schema,e.styles||null),this.sortKeys=e.sortKeys||!1,this.lineWidth=e.lineWidth||80,this.noRefs=e.noRefs||!1,this.noCompatMode=e.noCompatMode||!1,this.condenseFlow=e.condenseFlow||!1,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}(t=t||{});return n.noRefs||function(t,n){var r,i,o=[],a=[];for(function e(t,n,r){var i,o,a;if(null!==t&&"object"==typeof t)if(-1!==(o=n.indexOf(t)))-1===r.indexOf(o)&&r.push(o);else if(n.push(t),Array.isArray(t))for(o=0,a=t.length;o<a;o+=1)e(t[o],n,r);else for(o=0,a=(i=Object.keys(t)).length;o<a;o+=1)e(t[i[o]],n,r)}(e,o,a),r=0,i=a.length;r<i;r+=1)n.duplicates.push(o[a[r]]);n.usedDuplicates=new Array(i
 )}(0,n),function e(t,n,r,o,a,l){t.tag=null,t.dump=r,K(t,r,!1)||K(t,r,!0);var u=s.call(t.dump);o&&(o=t.flowLevel<0||t.flowLevel>n);var d,p,h="[object Object]"===u||"[object Array]"===u;if(h&&(p=-1!==(d=t.duplicates.indexOf(r))),(null!==t.tag&&"?"!==t.tag||p||2!==t.indent&&n>0)&&(a=!1),p&&t.usedDuplicates[d])t.dump="*ref_"+d;else{if(h&&p&&!t.usedDuplicates[d]&&(t.usedDuplicates[d]=!0),"[object Object]"===u)o&&0!==Object.keys(t.dump).length?(function(t,n,r,o){var a,s,l,u,d,p,h="",f=t.tag,m=Object.keys(r);if(!0===t.sortKeys)m.sort();else if("function"==typeof t.sortKeys)m.sort(t.sortKeys);else if(t.sortKeys)throw new i("sortKeys must be a boolean or a function");for(a=0,s=m.length;a<s;a+=1)p="",o&&0===a||(p+=L(t,n)),u=r[l=m[a]],e(t,n+1,l,!0,!0,!0)&&((d=null!==t.tag&&"?"!==t.tag||t.dump&&t.dump.length>1024)&&(t.dump&&c===t.dump.charCodeAt(0)?p+="?":p+="? "),p+=t.dump,d&&(p+=L(t,n)),e(t,n+1,u,!0,d)&&(t.dump&&c===t.dump.charCodeAt(0)?p+=":":p+=": ",h+=p+=t.dump));t.tag=f,t.dump=h||"{}"}(t,
 n,t.dump,a),p&&(t.dump="&ref_"+d+t.dump)):(function(t,n,r){var i,o,a,s,l,u="",c=t.tag,d=Object.keys(r);for(i=0,o=d.length;i<

<TRUNCATED>

[3/3] knox git commit: KNOX-1202 - Added UI elements to indicate invalid param values

Posted by pz...@apache.org.
KNOX-1202 - Added UI elements to indicate invalid param values


Project: http://git-wip-us.apache.org/repos/asf/knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/2e8716d8
Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/2e8716d8
Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/2e8716d8

Branch: refs/heads/master
Commit: 2e8716d89854a407314e5910cb6b37db0400d050
Parents: 97d865e
Author: Phil Zampino <pz...@apache.org>
Authored: Wed Mar 14 13:31:43 2018 -0400
Committer: Phil Zampino <pz...@apache.org>
Committed: Wed Mar 14 14:17:45 2018 -0400

----------------------------------------------------------------------
 .../new-desc-wizard.component.html              | 33 ++++++++--
 .../new-desc-wizard.component.ts                | 41 ++++++++++--
 .../acls-authzn-provider-config.ts              | 17 ++++-
 .../cas-provider-config.ts                      | 54 ++++++++-------
 .../default-idassertion-provider-config.ts      | 38 ++++++-----
 .../display-binding-provider-config.ts          | 12 +++-
 .../kerberos-provider-config.ts                 | 41 ++++++++----
 .../ldap-provider-config.ts                     | 69 ++++++++++++--------
 .../oauth-provider-config.ts                    | 28 +++++++-
 .../oidc-provider-config.ts                     | 65 +++++++++++-------
 .../pam-provider-config.ts                      | 19 +++++-
 .../provider-config-wizard.component.html       |  1 +
 .../provider-config-wizard.component.ts         | 14 +++-
 .../regex-idassertion-provider-config.ts        | 19 +++++-
 .../saml-provider-config.ts                     | 44 +++++++++++--
 .../sso-cookie-provider-config.ts               | 28 +++++++-
 .../switchcase-idassertion-provider-config.ts   | 29 +++++---
 .../src/app/utils/validation-utils.ts           | 52 +++++++++++++++
 .../applications/admin-ui/app/index.html        |  2 +-
 .../app/inline.0c599dd7846e2462c94c.bundle.js   |  1 -
 .../app/inline.a7f3e89f1023e555e44a.bundle.js   |  1 +
 .../app/main.743b2fb8ac3467eb4d6e.bundle.js     |  1 +
 .../app/main.bfb4b6a3d7d72f4c8841.bundle.js     |  1 -
 23 files changed, 468 insertions(+), 142 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-admin-ui/src/app/new-desc-wizard/new-desc-wizard.component.html
----------------------------------------------------------------------
diff --git a/gateway-admin-ui/src/app/new-desc-wizard/new-desc-wizard.component.html b/gateway-admin-ui/src/app/new-desc-wizard/new-desc-wizard.component.html
index 4ab8bec..f1de99d 100644
--- a/gateway-admin-ui/src/app/new-desc-wizard/new-desc-wizard.component.html
+++ b/gateway-admin-ui/src/app/new-desc-wizard/new-desc-wizard.component.html
@@ -6,7 +6,10 @@
     <div class="panel-body">
 
       <div> <!-- Descriptor Name -->
-        <strong>Name</strong> <input type="text" [(ngModel)]="descriptorName">
+        <span>
+          <strong>Name</strong> <input type="text" [(ngModel)]="descriptorName">
+        </span>
+        <span *ngIf="!isValidDescriptorName()" style="color: red">invalid</span>
       </div> <!-- Descriptor Name -->
 
       <br>
@@ -72,19 +75,37 @@
           <table>
             <tr>
               <td><strong>Address</strong></td>
-              <td><input type="text" [(ngModel)]="descriptor.discoveryAddress"></td>
+              <td>
+                <span>
+                  <input type="text" [(ngModel)]="descriptor.discoveryAddress">
+                </span>
+                <span *ngIf="!isValidDiscoveryAddress()" style="color: red">invalid</span>
+              </td>
             </tr>
             <tr>
               <td><strong>Cluster</strong></td>
-              <td><input type="text" [(ngModel)]="descriptor.discoveryCluster"></td>
+              <td>
+                <span>
+                  <input type="text" [(ngModel)]="descriptor.discoveryCluster">
+                </span>
+                <span *ngIf="!isValidDiscoveryCluster()" style="color: red">invalid</span>
+              </td>
             </tr>
             <tr>
               <td><strong>Username</strong></td>
-              <td><input type="text" [(ngModel)]="descriptor.discoveryUser"></td>
+              <td>
+                <span>
+                  <input type="text" [(ngModel)]="descriptor.discoveryUser">
+                </span>
+              </td>
             </tr>
             <tr>
               <td><strong>Password Alias</strong></td>
-              <td><input type="text" [(ngModel)]="descriptor.discoveryPassAlias"></td>
+              <td>
+                <span>
+                  <input type="text" [(ngModel)]="descriptor.discoveryPassAlias">
+                </span>
+              </td>
             </tr>
           </table>
         </div>
@@ -99,7 +120,7 @@
             (click)="newDescriptorModal.dismiss()">Cancel</button>
     <button type="button"
             class="btn btn-primary btn-sm"
-            [disabled]="!descriptor || !descriptorName || !validate()"
+            [disabled]="!validate()"
             (click)="newDescriptorModal.close()">Ok</button>
   </bs-modal-footer>
 </bs-modal>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-admin-ui/src/app/new-desc-wizard/new-desc-wizard.component.ts
----------------------------------------------------------------------
diff --git a/gateway-admin-ui/src/app/new-desc-wizard/new-desc-wizard.component.ts b/gateway-admin-ui/src/app/new-desc-wizard/new-desc-wizard.component.ts
index 0759cae..d9752a1 100644
--- a/gateway-admin-ui/src/app/new-desc-wizard/new-desc-wizard.component.ts
+++ b/gateway-admin-ui/src/app/new-desc-wizard/new-desc-wizard.component.ts
@@ -167,13 +167,46 @@ export class NewDescWizardComponent implements OnInit {
   validate(): boolean {
     let isValid: boolean = true;
 
-    // Validate the discovery address
-    if (this.descriptor.discoveryAddress) {
-      isValid = isValid && ValidationUtils.isValidURL(this.descriptor.discoveryAddress);
-      isValid = isValid && ValidationUtils.isValidString(this.descriptor.discoveryCluster);
+    if (this.descriptor) {
+
+      isValid = isValid && this.isValidDescriptorName();
+
+      // Validate the discovery address
+      if (this.descriptor.discoveryAddress) {
+        isValid = isValid && this.isValidDiscoveryAddress();
+        isValid = isValid && this.isValidDiscoveryCluster();
+      }
+    } else {
+      isValid = false;
+    }
+
+    return isValid;
+  }
+
+  isValidDescriptorName(): boolean {
+    let isValid: boolean = false;
+
+    if (this.descriptorName) {
+      isValid = ValidationUtils.isValidString(this.descriptorName);
     }
 
     return isValid;
   }
 
+  isValidDiscoveryAddress(): boolean {
+    if (this.descriptor.discoveryAddress) {
+      return (ValidationUtils.isValidURL(this.descriptor.discoveryAddress));
+    } else {
+      return true;
+    }
+  }
+
+  isValidDiscoveryCluster(): boolean {
+    if (this.descriptor.discoveryAddress) {
+      return (ValidationUtils.isValidString(this.descriptor.discoveryCluster));
+    } else {
+      return true;
+    }
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-admin-ui/src/app/provider-config-wizard/acls-authzn-provider-config.ts
----------------------------------------------------------------------
diff --git a/gateway-admin-ui/src/app/provider-config-wizard/acls-authzn-provider-config.ts b/gateway-admin-ui/src/app/provider-config-wizard/acls-authzn-provider-config.ts
index a7a5291..d423887 100644
--- a/gateway-admin-ui/src/app/provider-config-wizard/acls-authzn-provider-config.ts
+++ b/gateway-admin-ui/src/app/provider-config-wizard/acls-authzn-provider-config.ts
@@ -49,7 +49,21 @@ export class ACLsAuthznProviderConfig extends DisplayBindingProviderConfig {
     return ACLsAuthznProviderConfig.displayPropertyNameBindings.get(name);
   }
 
-  isValid(): boolean {
+  isValidParamValue(paramName: string): boolean {
+    let isValid: boolean;
+
+    switch (paramName) {
+      case ACLsAuthznProviderConfig.DEFAULT_MODE:
+        isValid = this.isValidMode();
+        break;
+      default:
+        isValid = true;
+    }
+
+    return isValid;
+  }
+
+  private isValidMode(): boolean {
     let isValid: boolean = true;
 
     let defaultMode = this.getParam(this.getDisplayNamePropertyBinding(ACLsAuthznProviderConfig.DEFAULT_MODE));
@@ -59,4 +73,5 @@ export class ACLsAuthznProviderConfig extends DisplayBindingProviderConfig {
 
     return isValid;
   }
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-admin-ui/src/app/provider-config-wizard/cas-provider-config.ts
----------------------------------------------------------------------
diff --git a/gateway-admin-ui/src/app/provider-config-wizard/cas-provider-config.ts b/gateway-admin-ui/src/app/provider-config-wizard/cas-provider-config.ts
index 00a2437..644a0e3 100644
--- a/gateway-admin-ui/src/app/provider-config-wizard/cas-provider-config.ts
+++ b/gateway-admin-ui/src/app/provider-config-wizard/cas-provider-config.ts
@@ -40,8 +40,6 @@ export class CASProviderConfig extends AuthenticationProviderConfig {
                                         ]);
 
 
-  private static SUPPORTED_PROTOCOLS: string[] = [ 'CAS10', 'CAS20', 'CAS20_PROXY', 'CAS30', 'CAS30_PROXY', 'SAML' ];
-
   constructor() {
     super('pac4j', AuthenticationProviderConfig.FEDERATION_ROLE);
   }
@@ -54,34 +52,46 @@ export class CASProviderConfig extends AuthenticationProviderConfig {
     return CASProviderConfig.displayPropertyNameBindings.get(name);
   }
 
-  isValid(): boolean {
-    let isValid: boolean = true;
-
-    let cbURL = this.getParam(this.getDisplayNamePropertyBinding(CASProviderConfig.CALLBACK_URL));
-    if (cbURL) {
-      let isCBURLValid = ValidationUtils.isValidURL(cbURL);
-      if (!isCBURLValid) {
-        console.debug(CASProviderConfig.CALLBACK_URL + ' value is not a valid URL.');
-      }
-      isValid = isValid && isCBURLValid;
+  isValidParamValue(paramName: string): boolean {
+    let isValid: boolean;
+
+    switch (paramName) {
+      case CASProviderConfig.CALLBACK_URL:
+      case CASProviderConfig.LOGIN_URL:
+        isValid = this.isValidURL(paramName);
+        break;
+      case CASProviderConfig.PROTOCOL:
+        isValid = this.isValidProtocol();
+        break;
+      default:
+        isValid = true;
     }
 
-    let loginURL = this.getParam(this.getDisplayNamePropertyBinding(CASProviderConfig.LOGIN_URL));
-    if (loginURL) {
-      let isLoginURLValid = ValidationUtils.isValidURL(loginURL);
-      if (!isLoginURLValid) {
-        console.debug(CASProviderConfig.LOGIN_URL + ' value is not a valid URL.');
+    return isValid;
+  }
+
+  private isValidURL(param: string): boolean {
+    let isValid: boolean = true;
+    let url = this.getParam(this.getDisplayNamePropertyBinding(param));
+    if (url) {
+      isValid = ValidationUtils.isValidHttpURL(url);
+      if (!isValid) {
+        console.debug(param + ' value is not a valid URL.');
       }
-      isValid = isValid && isLoginURLValid;
     }
+    return isValid;
+  }
+
+  private isValidProtocol(): boolean {
+    let isValid: boolean = true;
 
     let protocol = this.getParam(this.getDisplayNamePropertyBinding(CASProviderConfig.PROTOCOL));
     if (protocol) {
-      let isProtocolValid = (CASProviderConfig.SUPPORTED_PROTOCOLS.indexOf(protocol) > -1);
-      if (!isProtocolValid) {
-        console.debug(CASProviderConfig.PROTOCOL + ' value is not a supported protocol');
+      isValid = isValid = ValidationUtils.isValidCASProtocol(protocol);
+      if (!isValid) {
+        console.debug(CASProviderConfig.PROTOCOL + ' value is not a valid protocol: ' +
+                      ValidationUtils.CAS_PROTOCOLS.toString());
       }
-      isValid = isValid && isProtocolValid;
     }
 
     return isValid;

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-admin-ui/src/app/provider-config-wizard/default-idassertion-provider-config.ts
----------------------------------------------------------------------
diff --git a/gateway-admin-ui/src/app/provider-config-wizard/default-idassertion-provider-config.ts b/gateway-admin-ui/src/app/provider-config-wizard/default-idassertion-provider-config.ts
index aa119a1..a4b1830 100644
--- a/gateway-admin-ui/src/app/provider-config-wizard/default-idassertion-provider-config.ts
+++ b/gateway-admin-ui/src/app/provider-config-wizard/default-idassertion-provider-config.ts
@@ -16,6 +16,7 @@
  */
 
 import {IdentityAssertionProviderConfig} from "./identity-assertion-provider-config";
+import {ValidationUtils} from "../utils/validation-utils";
 
 export class DefaultIdAssertionProviderConfig extends IdentityAssertionProviderConfig {
 
@@ -32,8 +33,6 @@ export class DefaultIdAssertionProviderConfig extends IdentityAssertionProviderC
       [DefaultIdAssertionProviderConfig.GROUP_PRINCIPAL_MAPPING, 'group.principal.mapping']
     ]);
 
-  private static MAPPING_REGEXP = new RegExp('^(?:(?:[\\w\\*\\,]*=(?:[\\w][^\\*\\=])+[;]?)*)$');
-
   constructor() {
     console.debug('new DefaultIdAssertionProviderConfig()');
     super('Default');
@@ -47,25 +46,30 @@ export class DefaultIdAssertionProviderConfig extends IdentityAssertionProviderC
     return DefaultIdAssertionProviderConfig.displayPropertyNameBindings.get(name);
   }
 
-  isValid(): boolean {
-    let isValid: boolean = true;
+  isValidParamValue(paramName: string): boolean {
+    let isValid: boolean;
 
-    let pMap = this.getParam(this.getDisplayNamePropertyBinding(DefaultIdAssertionProviderConfig.PRINCIPAL_MAPPING));
-    if (pMap) {
-      let isPMapValid = DefaultIdAssertionProviderConfig.MAPPING_REGEXP.test(pMap);
-      if (!isPMapValid) {
-        console.debug(DefaultIdAssertionProviderConfig.PRINCIPAL_MAPPING + ' value is not a valid mapping');
-      }
-      isValid = isValid && isPMapValid;
+    switch (paramName) {
+      case DefaultIdAssertionProviderConfig.PRINCIPAL_MAPPING:
+      case DefaultIdAssertionProviderConfig.GROUP_PRINCIPAL_MAPPING:
+        isValid = this.isValidPrincipalMapping(paramName);
+        break;
+      default:
+        isValid = true;
     }
 
-    let gpMap = this.getParam(this.getDisplayNamePropertyBinding(DefaultIdAssertionProviderConfig.GROUP_PRINCIPAL_MAPPING));
-    if (gpMap) {
-      let isGMapValid = DefaultIdAssertionProviderConfig.MAPPING_REGEXP.test(gpMap);
-      if (!isGMapValid) {
-        console.debug(DefaultIdAssertionProviderConfig.GROUP_PRINCIPAL_MAPPING + ' value is not a valid mapping');
+    return isValid;
+  }
+
+  private isValidPrincipalMapping(param: string) {
+    let isValid: boolean = true;
+
+    let mapping = this.getParam(this.getDisplayNamePropertyBinding(param));
+    if (mapping) {
+      isValid = ValidationUtils.isValidPrincipalMapping(mapping);
+      if (!isValid) {
+        console.debug(param + ' value is not a valid principal mapping.')
       }
-      isValid = isValid && isGMapValid;
     }
 
     return isValid;

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-admin-ui/src/app/provider-config-wizard/display-binding-provider-config.ts
----------------------------------------------------------------------
diff --git a/gateway-admin-ui/src/app/provider-config-wizard/display-binding-provider-config.ts b/gateway-admin-ui/src/app/provider-config-wizard/display-binding-provider-config.ts
index 9ded8f6..2fb0eda 100644
--- a/gateway-admin-ui/src/app/provider-config-wizard/display-binding-provider-config.ts
+++ b/gateway-admin-ui/src/app/provider-config-wizard/display-binding-provider-config.ts
@@ -63,10 +63,20 @@ export abstract class DisplayBindingProviderConfig extends ProviderConfig {
     return false;
   }
 
-  isValid(): boolean {
+  isValidParamValue(paramName: string) {
     return true;
   }
 
+  isValid(): boolean {
+    let isValid: boolean = true;
+
+    for (let param of this.getDisplayPropertyNames()) {
+      isValid = isValid && this.isValidParamValue(param);
+    }
+
+    return isValid;
+  }
+
   abstract getDisplayPropertyNames(): string[];
 
   abstract getDisplayNamePropertyBinding(name: string): string;

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-admin-ui/src/app/provider-config-wizard/kerberos-provider-config.ts
----------------------------------------------------------------------
diff --git a/gateway-admin-ui/src/app/provider-config-wizard/kerberos-provider-config.ts b/gateway-admin-ui/src/app/provider-config-wizard/kerberos-provider-config.ts
index e615c44..dff3124 100644
--- a/gateway-admin-ui/src/app/provider-config-wizard/kerberos-provider-config.ts
+++ b/gateway-admin-ui/src/app/provider-config-wizard/kerberos-provider-config.ts
@@ -111,27 +111,46 @@ export class KerberosProviderConfig extends AuthenticationProviderConfig {
     }
   }
 
-  isValid(): boolean {
+  isValidParamValue(paramName: string): boolean {
     let isValid: boolean = true;
 
-    let allowAnon = this.getParam(this.getDisplayNamePropertyBinding(KerberosProviderConfig.ANON_ALLOWED));
-    if (allowAnon) {
-      let isValidAllowAnon = ValidationUtils.isValidBoolean(allowAnon);
-      if (!isValidAllowAnon) {
-        console.debug(KerberosProviderConfig.ANON_ALLOWED + ' value is not valid.');
-      }
-      isValid = isValid && isValidAllowAnon;
+    switch (paramName) {
+      case KerberosProviderConfig.ANON_ALLOWED:
+        isValid = this.isValidAllowAnon();
+        break;
+      case KerberosProviderConfig.TOKEN_VALIDITY:
+        isValid = this.isValidTokenExpiration();
+        break;
+      default:
+        isValid = true;
     }
 
+    return isValid;
+  }
+
+  private isValidTokenExpiration(): boolean {
+    let isValid: boolean = true;
+
     let tokenExpiration = this.getParam(this.getDisplayNamePropertyBinding(KerberosProviderConfig.TOKEN_VALIDITY));
     if (tokenExpiration) {
-      let isValidTokenExpiration = ValidationUtils.isValidNumber(tokenExpiration);
-      if (!isValidTokenExpiration) {
+      isValid = ValidationUtils.isValidNumber(tokenExpiration);
+      if (!isValid) {
         console.debug(KerberosProviderConfig.TOKEN_VALIDITY + ' value is not valid.');
       }
-      isValid = isValid && isValidTokenExpiration;
     }
+    return isValid;
+  }
 
+  private isValidAllowAnon(): boolean {
+    let isValid: boolean = true;
+
+    let allowAnon = this.getParam(this.getDisplayNamePropertyBinding(KerberosProviderConfig.ANON_ALLOWED));
+    if (allowAnon) {
+      isValid = ValidationUtils.isValidBoolean(allowAnon);
+      if (!isValid) {
+        console.debug(KerberosProviderConfig.ANON_ALLOWED + ' value is not valid.');
+      }
+    }
     return isValid;
   }
 

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-admin-ui/src/app/provider-config-wizard/ldap-provider-config.ts
----------------------------------------------------------------------
diff --git a/gateway-admin-ui/src/app/provider-config-wizard/ldap-provider-config.ts b/gateway-admin-ui/src/app/provider-config-wizard/ldap-provider-config.ts
index 719124a..ada9f99 100644
--- a/gateway-admin-ui/src/app/provider-config-wizard/ldap-provider-config.ts
+++ b/gateway-admin-ui/src/app/provider-config-wizard/ldap-provider-config.ts
@@ -21,19 +21,6 @@ import {ValidationUtils} from "../utils/validation-utils";
 
 export class LDAPProviderConfig extends AuthenticationProviderConfig implements OrderedParamContainer {
 
-  private static DN_TEMPLATE_REGEXP: RegExp =
-    new RegExp('(?:[A-Za-z][\\w-]*|\\d+(?:\\.\\d+)*)' +
-               '=(?:#(?:[\\dA-Fa-f]{2})+|(?:[^,=\\+<>#;\\"]|\\[,=\\+<>#;\\"]|\\[\\dA-Fa-f]{2})*|"(?:[^\\"]|\\[,=\\+<>#;\\"]|\\[\\dA-Fa-f]{2})*")' +
-               '(?:\\+(?:[A-Za-z][\\w-]*|\\d+(?:\\.\\d+)*)' +
-               '=(?:#(?:[\\dA-Fa-f]{2})' +
-               '+|(?:[^,=\\+<>#;\\"]|\\[,=\\+<>#;\\"]|\\[\\dA-Fa-f]{2})*|"(?:[^\\"]|\\[,=\\+<>#;\\"]|\\[\\dA-Fa-f]{2})*"))' +
-               '*(?:,(?:[A-Za-z][\\w-]*|\\d+(?:\\.\\d+)*)' +
-               '=(?:#(?:[\\dA-Fa-f]{2})+|(?:[^,=\\+<>#;\\"]|\\[,=\\+<>#;\\"]|\\[\\dA-Fa-f]{2})*|"(?:[^\\"]|\\[,=\\+<>#;\\"]|\\[\\dA-Fa-f]{2})*")' +
-               '(?:\\+(?:[A-Za-z][\\w-]*|\\d+(?:\\.\\d+)*)=(?:#(?:[\\dA-Fa-f]{2})+|(?:[^,=\\+<>#;\\"]|\\[,=\\+<>#;\\"]|\\[\\dA-Fa-f]{2})*|"(?:[^\\"]|\\[,=\\+<>#;\\"]|\\[\\dA-Fa-f]{2})*"))*)*');
-
-
-  private static LDAP_URL_SCHEMES: string[] = [ 'ldap', 'ldaps' ];
-
   private static SESSION_TIMEOUT       = 'Session Timeout';
   private static DN_TEMPLATE           = 'User DN Template';
   private static URL                   = 'URL';
@@ -115,39 +102,65 @@ export class LDAPProviderConfig extends AuthenticationProviderConfig implements
     return result;
   }
 
-  isValid(): boolean {
+  isValidParamValue(paramName: string): boolean {
+    let isValid: boolean;
+
+    switch (paramName) {
+      case LDAPProviderConfig.SESSION_TIMEOUT:
+        isValid = this.isTimeoutValid();
+        break;
+      case LDAPProviderConfig.DN_TEMPLATE:
+        isValid = this.isDnTemplateValid();
+        break;
+      case LDAPProviderConfig.URL:
+        isValid = this.isLdapURLValid();
+        break;
+      default:
+        isValid = true;
+    }
+
+    return isValid;
+  }
+
+  private isTimeoutValid(): boolean {
     let isValid: boolean = true;
 
     let timeout = this.getParam(this.getDisplayNamePropertyBinding(LDAPProviderConfig.SESSION_TIMEOUT));
     if (timeout) {
-      let isTimeoutValid = ValidationUtils.isValidNumber(timeout);
-      if (!isTimeoutValid) {
+      isValid = ValidationUtils.isValidNumber(timeout);
+      if (!isValid) {
         console.debug(LDAPProviderConfig.SESSION_TIMEOUT + ' value is not valid.');
       }
-      isValid = (isValid && isTimeoutValid);
     }
+    return isValid;
+  }
+
+  private isLdapURLValid(): boolean {
+    let isValid: boolean = true;
 
     let url = this.getParam(this.getDisplayNamePropertyBinding(LDAPProviderConfig.URL));
     if (url) {
-      // Ensure that it's a valid LDAP(S) URL
-      let isURLValid = ValidationUtils.isValidURLOfScheme(url, LDAPProviderConfig.LDAP_URL_SCHEMES);
-      if (!isURLValid) {
-        console.debug(LDAPProviderConfig.URL + ' value is not valid.');
+      isValid = ValidationUtils.isValidLdapURL(url);
+      if (!isValid) {
+        console.debug(LDAPProviderConfig.URL+ ' value is not valid.');
       }
-      isValid = isValid && isURLValid;
     } else {
-      isValid = false;
+      isValid = false; // URL must be specified
     }
 
+    return isValid;
+  }
+
+  private isDnTemplateValid(): boolean {
+    let isValid: boolean = true;
+
     let dnTemplate = this.getParam(this.getDisplayNamePropertyBinding(LDAPProviderConfig.DN_TEMPLATE));
     if (dnTemplate) {
-      let isDNTemplateValid = LDAPProviderConfig.DN_TEMPLATE_REGEXP.test(dnTemplate);
-      if (!isDNTemplateValid) {
-        console.debug(LDAPProviderConfig.DN_TEMPLATE + ' value is not a valid DN template.');
+      isValid = ValidationUtils.isValidDNTemplate(dnTemplate);
+      if (!isValid) {
+        console.debug(LDAPProviderConfig.DN_TEMPLATE + ' value is not valid.');
       }
-      isValid = isValid && isDNTemplateValid;
     }
-
     return isValid;
   }
 

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-admin-ui/src/app/provider-config-wizard/oauth-provider-config.ts
----------------------------------------------------------------------
diff --git a/gateway-admin-ui/src/app/provider-config-wizard/oauth-provider-config.ts b/gateway-admin-ui/src/app/provider-config-wizard/oauth-provider-config.ts
index 777690f..b359a5d 100644
--- a/gateway-admin-ui/src/app/provider-config-wizard/oauth-provider-config.ts
+++ b/gateway-admin-ui/src/app/provider-config-wizard/oauth-provider-config.ts
@@ -46,8 +46,32 @@ export class OAUTHProviderConfig extends AuthenticationProviderConfig {
     return OAUTHProviderConfig.displayPropertyNameBindings.get(name);
   }
 
-  isValid(): boolean {
-    return ValidationUtils.isValidURL(this.getParam(this.getDisplayNamePropertyBinding(OAUTHProviderConfig.CALLBACK_URL)));
+  isValidParamValue(paramName: string): boolean {
+    let isValid: boolean;
+
+    switch (paramName) {
+      case OAUTHProviderConfig.CALLBACK_URL:
+        isValid = this.isValidCallbackURL();
+        break;
+      default:
+        isValid = true;
+    }
+
+    return isValid;
+  }
+
+  private isValidCallbackURL(): boolean {
+    let isValid: boolean = true;
+
+    let url = this.getParam(this.getDisplayNamePropertyBinding(OAUTHProviderConfig.CALLBACK_URL));
+    if (url) {
+      isValid = ValidationUtils.isValidHttpURL(url);
+      if (!isValid) {
+        console.debug(OAUTHProviderConfig.CALLBACK_URL + ' value is not a valid URL.');
+      }
+    }
+
+    return isValid;
   }
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-admin-ui/src/app/provider-config-wizard/oidc-provider-config.ts
----------------------------------------------------------------------
diff --git a/gateway-admin-ui/src/app/provider-config-wizard/oidc-provider-config.ts b/gateway-admin-ui/src/app/provider-config-wizard/oidc-provider-config.ts
index 00528f0..49d2b4e 100644
--- a/gateway-admin-ui/src/app/provider-config-wizard/oidc-provider-config.ts
+++ b/gateway-admin-ui/src/app/provider-config-wizard/oidc-provider-config.ts
@@ -17,7 +17,6 @@
 
 import {AuthenticationProviderConfig} from "./authentication-provider-config";
 import {ValidationUtils} from "../utils/validation-utils";
-import {SAMLProviderConfig} from "./saml-provider-config";
 
 export class OIDCProviderConfig extends AuthenticationProviderConfig {
 
@@ -70,43 +69,65 @@ export class OIDCProviderConfig extends AuthenticationProviderConfig {
     return (name === OIDCProviderConfig.PROVIDER_SECRET);
   }
 
-  isValid(): boolean {
+  isValidParamValue(paramName: string): boolean {
+    let isValid: boolean;
+
+    switch (paramName) {
+      case OIDCProviderConfig.CALLBACK_URL:
+      case OIDCProviderConfig.PROVIDER_DISCOVERY_URL:
+        isValid = this.isValidURL(paramName);
+        break;
+      case OIDCProviderConfig.USE_NONCE:
+        isValid = this.isValidUseNonce();
+        break;
+      case OIDCProviderConfig.MAX_CLOCK_SKEW:
+        isValid = this.isValidClockSkew();
+        break;
+      default:
+        isValid = true;
+    }
+
+    return isValid;
+  }
+
+  private isValidURL(param: string): boolean {
     let isValid: boolean = true;
 
-    let cbURL = this.getParam(this.getDisplayNamePropertyBinding(OIDCProviderConfig.CALLBACK_URL));
-    if (cbURL) {
-      let isCBURLValid = ValidationUtils.isValidURL(cbURL);
-      if (!isCBURLValid) {
-        console.debug(OIDCProviderConfig.CALLBACK_URL + ' value is not a valid URL.');
+    let url = this.getParam(this.getDisplayNamePropertyBinding(param));
+    if (url) {
+      isValid = ValidationUtils.isValidHttpURL(url);
+      if (!isValid) {
+        console.debug(param + ' value is not a valid URL.');
       }
-      isValid = isValid && isCBURLValid;
     }
 
-    let pdURL = this.getParam(this.getDisplayNamePropertyBinding(OIDCProviderConfig.PROVIDER_DISCOVERY_URL));
-    if (pdURL) {
-      let isPDURLValid = ValidationUtils.isValidURL(pdURL);
-      if (!isPDURLValid) {
-        console.debug(OIDCProviderConfig.PROVIDER_DISCOVERY_URL + ' value is not a valid URL.');
-      }
-      isValid = isValid && isPDURLValid;
-    }
+    return isValid;
+  }
+
+
+  private isValidUseNonce(): boolean {
+    let isValid: boolean = true;
 
     let useNonce = this.getParam(this.getDisplayNamePropertyBinding(OIDCProviderConfig.USE_NONCE));
     if (useNonce) {
-      let isNonceValid = ValidationUtils.isValidBoolean(useNonce);
-      if (!isNonceValid) {
+      isValid = ValidationUtils.isValidBoolean(useNonce);
+      if (!isValid) {
         console.debug(OIDCProviderConfig.USE_NONCE + ' value is not a valid boolean.');
       }
-      isValid = isValid && isNonceValid;
     }
 
+    return isValid;
+  }
+
+  private isValidClockSkew(): boolean {
+    let isValid: boolean = true;
+
     let clockSkew = this.getParam(this.getDisplayNamePropertyBinding(OIDCProviderConfig.MAX_CLOCK_SKEW));
     if (clockSkew) {
-      let isSkewValid = ValidationUtils.isValidNumber(clockSkew);
-      if (!isSkewValid) {
+      isValid = ValidationUtils.isValidNumber(clockSkew);
+      if (!isValid) {
         console.debug(OIDCProviderConfig.MAX_CLOCK_SKEW + ' value is not a valid number');
       }
-      isValid = isValid && isSkewValid;
     }
 
     return isValid;

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-admin-ui/src/app/provider-config-wizard/pam-provider-config.ts
----------------------------------------------------------------------
diff --git a/gateway-admin-ui/src/app/provider-config-wizard/pam-provider-config.ts b/gateway-admin-ui/src/app/provider-config-wizard/pam-provider-config.ts
index 243a4e0..9aa05e0 100644
--- a/gateway-admin-ui/src/app/provider-config-wizard/pam-provider-config.ts
+++ b/gateway-admin-ui/src/app/provider-config-wizard/pam-provider-config.ts
@@ -76,10 +76,23 @@ export class PAMProviderConfig extends AuthenticationProviderConfig implements O
     return result;
   }
 
-  isValid(): boolean {
-    let isValid = true;
+  isValidParamValue(paramName: string): boolean {
+    let isValid: boolean;
+
+    switch (paramName) {
+      case PAMProviderConfig.SESSION_TIMEOUT:
+        isValid = this.isValidTimeout();
+        break;
+      default:
+        isValid = true;
+    }
+
+    return isValid;
+  }
+
+  private isValidTimeout(): boolean {
+    let isValid: boolean = true;
 
-    // Since the other properties are set internally, just validate the session timeout value
     let timeout = this.getParam(this.getDisplayNamePropertyBinding(PAMProviderConfig.SESSION_TIMEOUT));
     if (timeout) {
       isValid = ValidationUtils.isValidNumber(timeout);

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-admin-ui/src/app/provider-config-wizard/provider-config-wizard.component.html
----------------------------------------------------------------------
diff --git a/gateway-admin-ui/src/app/provider-config-wizard/provider-config-wizard.component.html b/gateway-admin-ui/src/app/provider-config-wizard/provider-config-wizard.component.html
index c6ffec8..50a470d 100644
--- a/gateway-admin-ui/src/app/provider-config-wizard/provider-config-wizard.component.html
+++ b/gateway-admin-ui/src/app/provider-config-wizard/provider-config-wizard.component.html
@@ -92,6 +92,7 @@
                      [checked]="getPasswordDisplay(pt)"
                      (click)="togglePasswordDisplay(pt)">show
             </span>
+            <span *ngIf="!isValidParamValue(pt)" style="color: red">invalid</span>
           </td>
         </tr>
       </table>

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-admin-ui/src/app/provider-config-wizard/provider-config-wizard.component.ts
----------------------------------------------------------------------
diff --git a/gateway-admin-ui/src/app/provider-config-wizard/provider-config-wizard.component.ts b/gateway-admin-ui/src/app/provider-config-wizard/provider-config-wizard.component.ts
index 6fc9afe..65adb2a 100644
--- a/gateway-admin-ui/src/app/provider-config-wizard/provider-config-wizard.component.ts
+++ b/gateway-admin-ui/src/app/provider-config-wizard/provider-config-wizard.component.ts
@@ -236,7 +236,7 @@ export class ProviderConfigWizardComponent implements OnInit {
             pc.setParam(property, value);
             console.debug('ProviderConfigWizard --> Set ProviderConfig param value: ' + property + '=' + value);
           } else {
-            console.debug('No provider property configured for ' + name);
+            console.debug('ProviderConfigWizard --> No provider property configured for ' + name);
           }
         }
       }
@@ -288,10 +288,20 @@ export class ProviderConfigWizardComponent implements OnInit {
     return result;
   }
 
+  isValidParamValue(paramName: string) {
+    let isValid: boolean = true;
+    let pc: ProviderConfig = this.getCategoryWizard().getProviderConfig();
+    if (pc) {
+      if (pc instanceof DisplayBindingProviderConfig) {
+        isValid = (pc as DisplayBindingProviderConfig).isValidParamValue(paramName);
+      }
+    }
+    return isValid;
+  }
+
   isProviderConfigValid(pc: ProviderConfig): boolean {
     let isValid: boolean = true;
     if (pc instanceof DisplayBindingProviderConfig) {
-      console.debug('Checking validity of ' + this.selectedCategory + ' ' + (pc as DisplayBindingProviderConfig).getType() + ' provider...');
       isValid = (pc as DisplayBindingProviderConfig).isValid();
     }
     return isValid;

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-admin-ui/src/app/provider-config-wizard/regex-idassertion-provider-config.ts
----------------------------------------------------------------------
diff --git a/gateway-admin-ui/src/app/provider-config-wizard/regex-idassertion-provider-config.ts b/gateway-admin-ui/src/app/provider-config-wizard/regex-idassertion-provider-config.ts
index 8ca0f1f..cdf6685 100644
--- a/gateway-admin-ui/src/app/provider-config-wizard/regex-idassertion-provider-config.ts
+++ b/gateway-admin-ui/src/app/provider-config-wizard/regex-idassertion-provider-config.ts
@@ -51,15 +51,28 @@ export class RegexAssertionProviderConfig extends IdentityAssertionProviderConfi
     return RegexAssertionProviderConfig.displayPropertyNameBindings.get(name);
   }
 
-  isValid(): boolean {
+  isValidParamValue(paramName: string): boolean {
+    let isValid: boolean;
+
+    switch (paramName) {
+      case RegexAssertionProviderConfig.ORIG_ON_FAIL:
+        isValid = this.isValidUseOriginal();
+        break;
+      default:
+        isValid = true;
+    }
+
+    return isValid;
+  }
+
+  private isValidUseOriginal(): boolean {
     let isValid: boolean = true;
 
     let useOrig = this.getParam(this.getDisplayNamePropertyBinding(RegexAssertionProviderConfig.ORIG_ON_FAIL));
     if (useOrig) {
       isValid = ValidationUtils.isValidBoolean(useOrig);
       if (!isValid) {
-        console.debug('RegexAssertionProviderConfig --> ' + RegexAssertionProviderConfig.ORIG_ON_FAIL +
-                      ' value is not a valid boolean.')
+        console.debug(RegexAssertionProviderConfig.ORIG_ON_FAIL + ' value is not a valid boolean.')
       }
     }
 

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-admin-ui/src/app/provider-config-wizard/saml-provider-config.ts
----------------------------------------------------------------------
diff --git a/gateway-admin-ui/src/app/provider-config-wizard/saml-provider-config.ts b/gateway-admin-ui/src/app/provider-config-wizard/saml-provider-config.ts
index 139cfe8..78f7d8f 100644
--- a/gateway-admin-ui/src/app/provider-config-wizard/saml-provider-config.ts
+++ b/gateway-admin-ui/src/app/provider-config-wizard/saml-provider-config.ts
@@ -74,16 +74,46 @@ export class SAMLProviderConfig extends AuthenticationProviderConfig {
     return (name && SAMLProviderConfig.SECRET_PROPERTIES.indexOf(name) > -1);
   }
 
-  isValid(): boolean {
+  isValidParamValue(paramName: string): boolean {
+    let isValid: boolean;
+
+    switch (paramName) {
+      case SAMLProviderConfig.CALLBACK_URL:
+        isValid = this.isValidCallbackURL();
+        break;
+      case SAMLProviderConfig.MAX_AUTH_LIFETIME:
+        isValid = this.isValidMaxAuthLifetime();
+        break;
+      default:
+        isValid = true;
+    }
+
+    return isValid;
+  }
+
+  private isValidCallbackURL(): boolean {
+    let isValid: boolean = true;
+
+    let url = this.getParam(this.getDisplayNamePropertyBinding(SAMLProviderConfig.CALLBACK_URL));
+    if (url) {
+      isValid = ValidationUtils.isValidHttpURL(url);
+      if (!isValid) {
+        console.debug(SAMLProviderConfig.CALLBACK_URL + ' value is not a valid URL.');
+      }
+    }
+
+    return isValid;
+  }
+
+  private isValidMaxAuthLifetime(): boolean {
     let isValid: boolean = true;
 
-    let cb = this.getParam(this.getDisplayNamePropertyBinding(SAMLProviderConfig.CALLBACK_URL));
-    if (cb) {
-      let isValidCB = ValidationUtils.isValidURL(cb);
-      if (!isValidCB) {
-        console.debug('SAMLProviderConfig --> ' + SAMLProviderConfig.CALLBACK_URL + ' value is not a valid URL.');
+    let malt = this.getParam(this.getDisplayNamePropertyBinding(SAMLProviderConfig.MAX_AUTH_LIFETIME));
+    if (malt) {
+      isValid = ValidationUtils.isValidNumber(malt);
+      if (!isValid) {
+        console.debug(SAMLProviderConfig.MAX_AUTH_LIFETIME + ' value is not a valid number.');
       }
-      isValid = isValidCB && isValidCB;
     }
 
     return isValid;

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-admin-ui/src/app/provider-config-wizard/sso-cookie-provider-config.ts
----------------------------------------------------------------------
diff --git a/gateway-admin-ui/src/app/provider-config-wizard/sso-cookie-provider-config.ts b/gateway-admin-ui/src/app/provider-config-wizard/sso-cookie-provider-config.ts
index ba94197..3ec308b 100644
--- a/gateway-admin-ui/src/app/provider-config-wizard/sso-cookie-provider-config.ts
+++ b/gateway-admin-ui/src/app/provider-config-wizard/sso-cookie-provider-config.ts
@@ -41,7 +41,31 @@ export class SSOCookieProviderConfig extends AuthenticationProviderConfig {
     return SSOCookieProviderConfig.displayPropertyNameBindings.get(name);
   }
 
-  isValid(): boolean {
-    return ValidationUtils.isValidURL(this.getParam(this.getDisplayNamePropertyBinding(SSOCookieProviderConfig.PROVIDER_URL)));
+  isValidParamValue(paramName: string): boolean {
+    let isValid: boolean;
+
+    switch (paramName) {
+      case SSOCookieProviderConfig.PROVIDER_URL:
+        isValid = this.isValidProviderURL();
+        break;
+      default:
+        isValid = true;
+    }
+
+    return isValid;
+  }
+
+  private isValidProviderURL(): boolean {
+    let isValid: boolean = true;
+
+    let url = this.getParam(this.getDisplayNamePropertyBinding(SSOCookieProviderConfig.PROVIDER_URL));
+    if (url) {
+      isValid = ValidationUtils.isValidHttpURL(url);
+      if (!isValid) {
+        console.debug(SSOCookieProviderConfig.PROVIDER_URL + ' value is not a valid URL.');
+      }
+    }
+    return isValid;
   }
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-admin-ui/src/app/provider-config-wizard/switchcase-idassertion-provider-config.ts
----------------------------------------------------------------------
diff --git a/gateway-admin-ui/src/app/provider-config-wizard/switchcase-idassertion-provider-config.ts b/gateway-admin-ui/src/app/provider-config-wizard/switchcase-idassertion-provider-config.ts
index 3667ae0..65ac856 100644
--- a/gateway-admin-ui/src/app/provider-config-wizard/switchcase-idassertion-provider-config.ts
+++ b/gateway-admin-ui/src/app/provider-config-wizard/switchcase-idassertion-provider-config.ts
@@ -46,17 +46,30 @@ export class SwitchCaseAssertionProviderConfig extends IdentityAssertionProvider
     return SwitchCaseAssertionProviderConfig.displayPropertyNameBindings.get(name);
   }
 
-  isValid(): boolean {
-    let isValid: boolean = true;
+  isValidParamValue(paramName: string): boolean {
+    let isValid: boolean;
 
-    let pc = this.getParam(this.getDisplayNamePropertyBinding(SwitchCaseAssertionProviderConfig.PRINCIPAL_CASE));
-    if (pc) {
-      isValid = isValid && (SwitchCaseAssertionProviderConfig.CASE_VALUES.indexOf(pc.toLowerCase()) > -1);
+    switch (paramName) {
+      case SwitchCaseAssertionProviderConfig.PRINCIPAL_CASE:
+      case SwitchCaseAssertionProviderConfig.GROUP_PRINCIPAL_CASE:
+        isValid = this.isValidCase(paramName);
+        break;
+      default:
+        isValid = true;
     }
 
-    let gpc = this.getParam(this.getDisplayNamePropertyBinding(SwitchCaseAssertionProviderConfig.GROUP_PRINCIPAL_CASE));
-    if (gpc) {
-      isValid = isValid && (SwitchCaseAssertionProviderConfig.CASE_VALUES.indexOf(gpc.toLowerCase()) > -1);
+    return isValid;
+  }
+
+  private isValidCase(param: string): boolean {
+    let isValid: boolean = true;
+
+    let value = this.getParam(this.getDisplayNamePropertyBinding(param));
+    if (value) {
+      isValid = (SwitchCaseAssertionProviderConfig.CASE_VALUES.indexOf(value.toLowerCase()) > -1);
+      if (!isValid) {
+        console.debug(param + ' value is not a valid case: ' + SwitchCaseAssertionProviderConfig.CASE_VALUES.toString());
+      }
     }
 
     return isValid;

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-admin-ui/src/app/utils/validation-utils.ts
----------------------------------------------------------------------
diff --git a/gateway-admin-ui/src/app/utils/validation-utils.ts b/gateway-admin-ui/src/app/utils/validation-utils.ts
index f7dcfcc..a3f1707 100644
--- a/gateway-admin-ui/src/app/utils/validation-utils.ts
+++ b/gateway-admin-ui/src/app/utils/validation-utils.ts
@@ -16,6 +16,8 @@
  */
 
 
+import {CASProviderConfig} from "../provider-config-wizard/cas-provider-config";
+
 export class ParsedURL {
 
   static REGEXP: RegExp = new RegExp('^(([^:\/?#]+):)?\/\/(([^\/?#]+):([^\/?#]+))?([^?#]*)(\/?([^#]*))?(#(.*))?');
@@ -48,6 +50,25 @@ export class ParsedURL {
 
 export class ValidationUtils {
 
+  private static DN_TEMPLATE_REGEXP: RegExp =
+    new RegExp('(?:[A-Za-z][\\w-]*|\\d+(?:\\.\\d+)*)' +
+      '=(?:#(?:[\\dA-Fa-f]{2})+|(?:[^,=\\+<>#;\\"]|\\[,=\\+<>#;\\"]|\\[\\dA-Fa-f]{2})*|"(?:[^\\"]|\\[,=\\+<>#;\\"]|\\[\\dA-Fa-f]{2})*")' +
+      '(?:\\+(?:[A-Za-z][\\w-]*|\\d+(?:\\.\\d+)*)' +
+      '=(?:#(?:[\\dA-Fa-f]{2})' +
+      '+|(?:[^,=\\+<>#;\\"]|\\[,=\\+<>#;\\"]|\\[\\dA-Fa-f]{2})*|"(?:[^\\"]|\\[,=\\+<>#;\\"]|\\[\\dA-Fa-f]{2})*"))' +
+      '*(?:,(?:[A-Za-z][\\w-]*|\\d+(?:\\.\\d+)*)' +
+      '=(?:#(?:[\\dA-Fa-f]{2})+|(?:[^,=\\+<>#;\\"]|\\[,=\\+<>#;\\"]|\\[\\dA-Fa-f]{2})*|"(?:[^\\"]|\\[,=\\+<>#;\\"]|\\[\\dA-Fa-f]{2})*")' +
+      '(?:\\+(?:[A-Za-z][\\w-]*|\\d+(?:\\.\\d+)*)=(?:#(?:[\\dA-Fa-f]{2})+|(?:[^,=\\+<>#;\\"]|\\[,=\\+<>#;\\"]|\\[\\dA-Fa-f]{2})*|"(?:[^\\"]|\\[,=\\+<>#;\\"]|\\[\\dA-Fa-f]{2})*"))*)*');
+
+
+  private static PRINCIPAL_MAPPING_REGEXP = new RegExp('^(?:(?:[a-zA-Z\\*]+[\\,]?)+=[a-zA-Z]+[;]?)*$');
+
+  static LDAP_URL_SCHEMES: string[] = [ 'ldap', 'ldaps' ];
+
+  static HTTP_URL_SCHEMES: string[] = [ 'http', 'https' ];
+
+  static CAS_PROTOCOLS: string[] = [ 'CAS10', 'CAS20', 'CAS20_PROXY', 'CAS30', 'CAS30_PROXY', 'SAML' ];
+
 
   static parseBoolean(value: string): boolean {
     let parsed: boolean;
@@ -132,4 +153,35 @@ export class ValidationUtils {
     return isValid;
   }
 
+  static isValidLdapURL(url: string): boolean {
+    return ValidationUtils.isValidURLOfScheme(url, ValidationUtils.LDAP_URL_SCHEMES);
+  }
+
+  static isValidHttpURL(url: string): boolean {
+    return ValidationUtils.isValidURLOfScheme(url, ValidationUtils.HTTP_URL_SCHEMES);
+  }
+
+  static isValidDNTemplate(dnTemplate: string): boolean {
+    return ValidationUtils.DN_TEMPLATE_REGEXP.test(dnTemplate);
+  }
+
+  static isValidCASProtocol(protocol: string): boolean {
+    let isValid: boolean = false;
+
+    if (protocol) {
+      isValid = (ValidationUtils.CAS_PROTOCOLS.indexOf(protocol) > -1);
+    }
+
+    return isValid;
+  }
+
+  static isValidPrincipalMapping(mapping: string): boolean {
+    let isValid: boolean = false;
+
+    if (mapping) {
+      isValid = ValidationUtils.PRINCIPAL_MAPPING_REGEXP.test(mapping)
+    }
+
+    return isValid;
+  }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-applications/src/main/resources/applications/admin-ui/app/index.html
----------------------------------------------------------------------
diff --git a/gateway-applications/src/main/resources/applications/admin-ui/app/index.html b/gateway-applications/src/main/resources/applications/admin-ui/app/index.html
index 52a28a4..e7a9514 100644
--- a/gateway-applications/src/main/resources/applications/admin-ui/app/index.html
+++ b/gateway-applications/src/main/resources/applications/admin-ui/app/index.html
@@ -11,4 +11,4 @@
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
---><!doctype html><html><head><meta charset="utf-8"><title>Apache Knox Manager</title><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" type="image/x-icon" href="favicon.ico"><meta name="viewport" content="width=device-width,initial-scale=1"><!-- Latest compiled and minified CSS --><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"><!-- Optional theme --><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"><!-- Custom styles for this template --><link href="assets/sticky-footer.css" rel="stylesheet"><script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script><!-- Latest compiled and minified JavaScript --><scr
 ipt src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script><script src="assets/vkbeautify.js"></script><link href="styles.2ee5b7f4cd59a6cf015e.bundle.css" rel="stylesheet"/></head><body><div class="navbar-wrapper"><div class="container-fluid"><nav class="navbar navbar-inverse navbar-static-top"><div class="container-fluid"><div class="navbar-header"><button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"><span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span></button> <a class="navbar-brand" href="#"><img style="max-width:200px; margin-top: -9px;" src="assets/knox-logo-transparent.gif" alt="Apache Knox Manager"></a></div></div></nav></div><!-- Content --><resource-management></res
 ource-management><footer class="footer"><div class="container-fluid"><div>Knox Manager Version 0.1.0</div><gateway-version></gateway-version></div></footer><script type="text/javascript" src="inline.0c599dd7846e2462c94c.bundle.js"></script><script type="text/javascript" src="scripts.c50bb762c438ae0f8842.bundle.js"></script><script type="text/javascript" src="main.bfb4b6a3d7d72f4c8841.bundle.js"></script></div></body></html>
\ No newline at end of file
+--><!doctype html><html><head><meta charset="utf-8"><title>Apache Knox Manager</title><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" type="image/x-icon" href="favicon.ico"><meta name="viewport" content="width=device-width,initial-scale=1"><!-- Latest compiled and minified CSS --><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"><!-- Optional theme --><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"><!-- Custom styles for this template --><link href="assets/sticky-footer.css" rel="stylesheet"><script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script><!-- Latest compiled and minified JavaScript --><scr
 ipt src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script><script src="assets/vkbeautify.js"></script><link href="styles.2ee5b7f4cd59a6cf015e.bundle.css" rel="stylesheet"/></head><body><div class="navbar-wrapper"><div class="container-fluid"><nav class="navbar navbar-inverse navbar-static-top"><div class="container-fluid"><div class="navbar-header"><button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"><span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span></button> <a class="navbar-brand" href="#"><img style="max-width:200px; margin-top: -9px;" src="assets/knox-logo-transparent.gif" alt="Apache Knox Manager"></a></div></div></nav></div><!-- Content --><resource-management></res
 ource-management><footer class="footer"><div class="container-fluid"><div>Knox Manager Version 0.1.0</div><gateway-version></gateway-version></div></footer><script type="text/javascript" src="inline.a7f3e89f1023e555e44a.bundle.js"></script><script type="text/javascript" src="scripts.c50bb762c438ae0f8842.bundle.js"></script><script type="text/javascript" src="main.743b2fb8ac3467eb4d6e.bundle.js"></script></div></body></html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-applications/src/main/resources/applications/admin-ui/app/inline.0c599dd7846e2462c94c.bundle.js
----------------------------------------------------------------------
diff --git a/gateway-applications/src/main/resources/applications/admin-ui/app/inline.0c599dd7846e2462c94c.bundle.js b/gateway-applications/src/main/resources/applications/admin-ui/app/inline.0c599dd7846e2462c94c.bundle.js
deleted file mode 100644
index 074de3a..0000000
--- a/gateway-applications/src/main/resources/applications/admin-ui/app/inline.0c599dd7846e2462c94c.bundle.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e){var n=window.webpackJsonp;window.webpackJsonp=function(r,c,u){for(var a,i,f,l=0,s=[];l<r.length;l++)t[i=r[l]]&&s.push(t[i][0]),t[i]=0;for(a in c)Object.prototype.hasOwnProperty.call(c,a)&&(e[a]=c[a]);for(n&&n(r,c,u);s.length;)s.shift()();if(u)for(l=0;l<u.length;l++)f=o(o.s=u[l]);return f};var r={},t={2:0};function o(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.e=function(e){var n=t[e];if(0===n)return new Promise(function(e){e()});if(n)return n[2];var r=new Promise(function(r,o){n=t[e]=[r,o]});n[2]=r;var c=document.getElementsByTagName("head")[0],u=document.createElement("script");u.type="text/javascript",u.charset="utf-8",u.async=!0,u.timeout=12e4,o.nc&&u.setAttribute("nonce",o.nc),u.src=o.p+""+e+"."+{0:"bfb4b6a3d7d72f4c8841",1:"aed76669724804835353"}[e]+".chunk.js";var a=setTimeout(i,12e4);function i(){u.onerror=u.onload=null,clearTimeout(a);var n=t[e];0!==n&&(n&&n[1](new Error("Loading chu
 nk "+e+" failed.")),t[e]=void 0)}return u.onerror=u.onload=i,c.appendChild(u),r},o.m=e,o.c=r,o.d=function(e,n,r){o.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},o.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(n,"a",n),n},o.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},o.p="",o.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/knox/blob/2e8716d8/gateway-applications/src/main/resources/applications/admin-ui/app/inline.a7f3e89f1023e555e44a.bundle.js
----------------------------------------------------------------------
diff --git a/gateway-applications/src/main/resources/applications/admin-ui/app/inline.a7f3e89f1023e555e44a.bundle.js b/gateway-applications/src/main/resources/applications/admin-ui/app/inline.a7f3e89f1023e555e44a.bundle.js
new file mode 100644
index 0000000..a852b61
--- /dev/null
+++ b/gateway-applications/src/main/resources/applications/admin-ui/app/inline.a7f3e89f1023e555e44a.bundle.js
@@ -0,0 +1 @@
+!function(e){var n=window.webpackJsonp;window.webpackJsonp=function(r,c,u){for(var a,i,f,l=0,s=[];l<r.length;l++)t[i=r[l]]&&s.push(t[i][0]),t[i]=0;for(a in c)Object.prototype.hasOwnProperty.call(c,a)&&(e[a]=c[a]);for(n&&n(r,c,u);s.length;)s.shift()();if(u)for(l=0;l<u.length;l++)f=o(o.s=u[l]);return f};var r={},t={2:0};function o(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.e=function(e){var n=t[e];if(0===n)return new Promise(function(e){e()});if(n)return n[2];var r=new Promise(function(r,o){n=t[e]=[r,o]});n[2]=r;var c=document.getElementsByTagName("head")[0],u=document.createElement("script");u.type="text/javascript",u.charset="utf-8",u.async=!0,u.timeout=12e4,o.nc&&u.setAttribute("nonce",o.nc),u.src=o.p+""+e+"."+{0:"743b2fb8ac3467eb4d6e",1:"aed76669724804835353"}[e]+".chunk.js";var a=setTimeout(i,12e4);function i(){u.onerror=u.onload=null,clearTimeout(a);var n=t[e];0!==n&&(n&&n[1](new Error("Loading chu
 nk "+e+" failed.")),t[e]=void 0)}return u.onerror=u.onload=i,c.appendChild(u),r},o.m=e,o.c=r,o.d=function(e,n,r){o.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},o.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(n,"a",n),n},o.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},o.p="",o.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file