define(["angular","app/utils/cloneUrlParser","cjt/util/locale","cjt/validator/validator-utils","cjt/validator/ip-validators","cjt/validator/domain-validators","cjt/validator/validateDirectiveFactory"],(function(t,a,i,e,l,o){"use strict";var r={validCloneUrl:function(t){var r=e.initializeValidationResult();if(null==t)return r.isValid=!1,r.add("cloneURLValidator",i.maketext("You must specify a valid clone URL.")),r;var d=a.parse(t),n=d.scheme,s=d.userInfo,u=d.ipv6Authority,c=d.authority,v=d.path,m=d.unparsed,p=/^(?:git|ssh|https?)(?::\/\/)$/i.test(n);if(/^\S+:\S+@/i.test(s))return r.isValid=!1,r.add("cloneURLValidator",i.maketext("The clone URL [output,strong,cannot] include a password.")),r;var f=/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@/i.test(s),h=!1;if(p&&f&&(h=!0),p^f){if(!p&&null!==n)return r.isValid=!1,r.add("cloneURLValidator",i.maketext("The provided clone URL [output,strong,must] include a valid protocol.")),r;h=!0}if(!h)return r.isValid=!1,r.add("cloneURLValidator",i.maketext("Clone URLs [output,strong,must] include a valid protocol or username.")),r;if(null!==u){var V=l.methods.ipv6(u);if(!V.isValid){var U=function(t){for(var a="",i=0,e=t.length;i<e;i++)a+=i!==e-1?t[i].message+" ":t[i].message;return a}(V.messages);return r.isValid=!1,r.add("cloneURLValidator",U),r}}if(null!==c&&""!==c){var R=l.methods.ipv4(c),g=o.methods.fqdn(c);if(!R.isValid&&!g.isValid)return r.isValid=!1,r.add("cloneURLValidator",i.maketext("The clone URL [output,strong,must] include a valid IP address or a fully-qualified domain name.")),r}else if(null===u)return r.isValid=!1,r.add("cloneURLValidator",i.maketext("The clone URL [output,strong,must] include a valid IP address or a fully-qualified domain name.")),r;var L=/^:/i.test(v);if(p&&f&&L)return r.isValid=!1,r.add("cloneURLValidator",i.maketext("The repository path should [output,strong,not] begin with “:” if it includes the protocol.")),r;return/^(:|\/)\S*(\.git)?\/?/i.test(v)?""!==m?(r.isValid=!1,r.add("cloneURLValidator",i.maketext("The clone URL [output,strong,cannot] include whitespace characters.")),r):r:(r.isValid=!1,r.add("cloneURLValidator",i.maketext("The path or port number is [output,strong,not] valid.")),r)}};return t.module("cjt2.validate").run(["validatorFactory",function(t){t.generate(r)}]),{methods:r,name:"clone-url-validator",description:"Validation on git-based clone URLs.",version:1}}));