/
main.js.map
1 lines (1 loc) · 281 KB
/
main.js.map
1
{"version":3,"sources":["webpack:///webpack/bootstrap 49badf6393381c406c4e","webpack:///./lib/main.js","webpack:///./lib/ast.js","webpack:///./~/ast-types/lib/types.js","webpack:///./~/ast-types/lib/shared.js","webpack:///./~/ast-types/lib/node-path.js","webpack:///./~/ast-types/lib/path.js","webpack:///./~/ast-types/lib/scope.js","webpack:///./~/ast-types/lib/path-visitor.js","webpack:///./lib/util.js","webpack:///./lib/parser.jison","webpack:///./~/process/browser.js","webpack:///(webpack)/buildin/module.js","webpack:///./lib/evaluator.js","webpack:///./~/timespec/timespec.js","webpack:///./~/path-browserify/index.js"],"names":["parse","query","ast","evaluator","parser","def","Type","or","builtin","builtInTypes","isString","string","isNumber","number","isBoolean","boolean","defaults","geq","field","null","bases","build","false","finalize","exports","namedTypes","builders","defineMethod","getFieldNames","getFieldValue","eachField","someField","getSupertypeNames","NodePath","require","PathVisitor","visit","capitalize","s","toUpperCase","slice","toLowerCase","capitalizeClass","split","map","module","join","regexpEscape","String","replace","loc","location","b","sourceLocation","position","first_line","first_column","last_line","last_column","formatLocation","astnode","l","start","line","end","column","comparison","operator","left","right","mode","visitComparison","path","traverse","node","length","Error","visitBoolean","value","visitString","visitNumber","visitDate","toISOString","error","visitAndExpression","visitOrExpression","visitNotExpression","expression","visitQuery","visitParentesizedExpression","visitBlockExpression","visitSubquery","unshift","shift","endpoint","visitRegexpNodeMatch","visitIdentifierPath","regexp","components","visitRegexpIdentifier","name","visitIdentifier","parentPath","visitResource","title","type","res_type","andExpr","exported","parameters","push"],"mappings":"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4BAA4B;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,SAAS;AAC5B;;AAEA;AACA,wBAAuB,SAAS;AAChC;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;AACL;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,UAAS;AACT,MAAK;AACL,kBAAiB,4BAA4B;AAC7C,MAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gBAAe,cAAc;AAC7B,gBAAe,cAAc;AAC7B,kBAAiB;AACjB;;AAEA;AACA,iCAAgC;AAChC;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAmB,kBAAkB;AACrC,qBAAoB,YAAY;AAChC,qBAAoB,6BAA6B;;AAEjD;AACA,yBAAwB,6BAA6B;AACrD,yBAAwB,YAAY;AACpC,qBAAoB,6BAA6B;AACjD,sBAAqB,YAAY;;AAEjC;AACA;AACA;AACA,cAAa;AACb;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA,wBAAuB,4BAA4B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,2CAA0C;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL,iBAAgB;AAChB;;AAEA;AACA,yCAAwC,eAAe;;AAEvD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA2C,uBAAuB;;AAElE;AACA,+CAA8C,cAAc;;AAE5D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa;;AAEb;AACA,4BAA2B;AAC3B,cAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL,iBAAgB;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,yCAAwC,eAAe;;AAEvD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET,mDAAkD,cAAc;;AAEhE;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,sBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mDAAkD,YAAY;AAC9D;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;;;;;;;AC3zBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,cAAc;AACtC,+BAA8B,YAAY;AAC1C,0BAAyB,eAAe;AACxC,yBAAwB,cAAc;AACtC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;ACxCD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2BAA0B,aAAa;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,MAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAmB,WAAW;AAC9B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,oBAAmB,SAAS;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,wBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,oBAAmB,UAAU;AAC7B;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAmB,UAAU;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAmB,UAAU;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAuB,WAAW;AAClC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAuB,WAAW;AAClC;AACA;;AAEA;AACA;AACA;AACA;;AAEA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA,MAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;;;;;;;AC7WA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA,gBAAe,cAAc;AAC7B,gBAAe,oBAAoB;AACnC,oBAAmB,wCAAwC;AAC3D,iBAAgB,eAAe;AAC/B,kBAAiB,qBAAqB;AACtC,oBAAmB,UAAU,EAAE;AAC/B,iBAAgB,UAAU,EAAE;AAC5B,MAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,MAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,MAAK;AACL;AACA;AACA,UAAS;;AAET,MAAK;AACL;AACA;AACA,UAAS;;AAET;;AAEA,MAAK;AACL;;AAEA,MAAK;AACL;AACA;;AAEA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,MAAK;AACL;;AAEA,MAAK;AACL;AACA;;AAEA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;;AAET,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;;AAET,MAAK;AACL;AACA;;AAEA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA,2BAA0B,OAAO;AACjC;AACA;AACA;AACA;;AAEA;AACA,2BAA0B,OAAO;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC1VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAmB,UAAU;AAC7B;AACA;;AAEA;AACA,iCAAgC,gBAAgB;AAChD;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,mBAAkB;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,wBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAuB,gBAAgB;AACvC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;A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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA,kCAAiC;AACjC,sBAAqB;AACrB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL,sDAAqD;AACrD;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;AACL,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,mB;AACA;AACA,mB;AACA;AACA,mB;AACA;AACA,mB;AACA;AACA,mB;AACA;AACA,mB;AACA;AACA,mB;AACA;AACA,mB;AACA;AACA,mB;AACA;AACA,oB;AACA;AACA,oB;AACA;AACA,oB;AACA;AACA,oB;AACA;AACA,oB;AACA;AACA,oB;AACA;AACA,oB;AACA;AACA,mB;AACA;AACA,mB;AACA;AACA,mB;AACA;AACA,oB;AACA;AACA,oB;AACA;AACA,oB;AACA;AACA,wCAAuC,W;AACvC;AACA,wCAAuC,W;AACvC;AACA,oB;AACA;AACA,oB;AACA;AACA,oB;AACA;AACA,oB;AACA;AACA,mB;AACA;AACA;AACA,EAAC;AACD,mEAAkE,UAAU;AAC5E,cAAa,WAAW;AACxB,EAAC;AACD;AACA,EAAC;AACD;AACA;AACA;AACA;AACA,2BAA0B;AAC1B;AACA,EAAC;;;AAGD;AACA;AACA;AACA,8BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;;AC7uBA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;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AAgCO,KAAhC,CAFF,EAGE,CAAC,GAAD,EAAM,UAAN,EAAkBhC,KAAKE,IAAL,CAAUkC,QAA5B,CAHF,CAAhB;AAIA,WAAIpC,KAAKE,IAAL,CAAUmC,UAAd,EAA0B;AACxBF,iBAAQG,IAAR,CAAatC,KAAKE,IAAL,CAAUmC,UAAvB;AACD;AACD,cAAO,CAAC,IAAD,EAAO,UAAP,EACL,CAAC,SAAD,EAAY,UAAZ,EACE,CAAC,kBAAD,EAAqBF,OAArB,CADF,CADK,CAAP;AAGD;AA3He,IAAX,CAAP;AA6HD,E;;;;;;AC1ID;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wBAAuB,eAAe;AACtC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC,WAAW,EAAE;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC,UAAU,EAAE;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC;AACnC;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC;AACnC;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,kCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC;AACrC;AACA;AACA;AACA,oCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC;AACvC;AACA;AACA;AACA,sCAAqC;AACrC;AACA;AACA;AACA,oCAAmC;AACnC;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC;AACvC;AACA;AACA;AACA,sCAAqC;AACrC;AACA;AACA;AACA,oCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,sCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8DAA6D;AAC7D;AACA;AACA;AACA,mEAAkE;AAClE;AACA;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,wCAAuC,UAAU,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,0CAAyC,UAAU,EAAE;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,4CAA2C,UAAU,EAAE;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,8CAA6C,UAAU,EAAE;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C,UAAU,EAAE;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA,kDAAiD,UAAU,EAAE;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA,oDAAmD,UAAU,EAAE;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA;AACA,sDAAqD,UAAU,EAAE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA,wDAAuD,UAAU,EAAE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;AACA;AACA,0DAAyD,UAAU,EAAE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;AACA,4DAA2D,WAAW,EAAE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA,8DAA6D,WAAW,EAAE;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,wCAAuC,UAAU,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,0CAAyC,UAAU,EAAE;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,4CAA2C,UAAU,EAAE;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,8CAA6C,UAAU,EAAE;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,gDAA+C,UAAU,EAAE;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA,kDAAiD,UAAU,EAAE;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA,oDAAmD,UAAU,EAAE;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,wCAAuC,SAAS,wCAAwC,EAAE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,0CAAyC,SAAS,wCAAwC,EAAE;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,4CAA2C,SAAS,wCAAwC,EAAE;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,8CAA6C,SAAS,wCAAwC,EAAE;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,gDAA+C,SAAS,wCAAwC,EAAE;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA,kDAAiD,SAAS,wCAAwC,EAAE;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,wBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAuB,yCAAyC;AAChE;AACA;AACA,2BAA0B,QAAQ;AAClC;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;AAEA,iBAAgB;AAChB;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA,2BAA0B,qBAAqB;AAC/C;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,EAAC;;;;;;;;;;;;;ACviGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,QAAQ;AACxC;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU,MAAM;AAChB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,8BAA6B,IAAI;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,qCAAoC,8BAA8B;AAClE;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU,oBAAoB;AAC9B;AACA;;AAEA;AACA,WAAU,UAAU;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,kBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAA+B,sBAAsB;AACrD;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAmB,eAAe;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA","file":"main.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 49badf6393381c406c4e","import astlib from './ast';\nimport './util';\nimport parser from './parser.jison';\nimport evaluator from './evaluator';\n\nconst parse = (query) => {\n const ast = parser.parse(query);\n return evaluator(ast);\n};\n\nexport {\n evaluator,\n parser,\n parse,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/main.js","import types from 'ast-types/lib/types';\nimport shared from 'ast-types/lib/shared';\n\nconst def = types.Type.def;\nconst or = types.Type.or;\nconst builtin = types.builtInTypes;\nconst isString = builtin.string;\nconst isNumber = builtin.number;\nconst isBoolean = builtin.boolean;\nconst defaults = shared.defaults;\nconst geq = shared.geq;\n\ndef('Printable')\n .field('loc',\n or(def('SourceLocation'), null),\n defaults.null,\n true);\n\ndef('Node')\n .bases('Printable')\n .field('type', isString);\n\ndef('SourceLocation')\n .build('start', 'end', 'source')\n .field('start', def('Position'))\n .field('end', def('Position'))\n .field('source', or(isString, null), defaults.null);\n\ndef('Position')\n .build('line', 'column')\n .field('line', geq(1))\n .field('column', geq(0));\n\ndef('Literal')\n .bases('Node');\n\n// Merge literals into Literal type?\ndef('Boolean')\n .bases('Literal')\n .build('value')\n .field('value', isBoolean);\n\ndef('String')\n .bases('Literal')\n .build('value')\n .field('value', isString);\n\ndef('Number')\n .bases('Literal')\n .build('value')\n .field('value', isNumber);\n\ndef('Date')\n .bases('Literal')\n .build('value')\n .field('value', isString);\n\ndef('Expression')\n .bases('Node');\n\ndef('BinaryExpression')\n .bases('Expression')\n .field('left', def('Expression'))\n .field('right', def('Expression'));\n\ndef('UnaryExpression')\n .bases('Expression')\n .field('expression', def('Expression'));\n\ndef('AndExpression')\n .bases('BinaryExpression')\n .build('left', 'right');\n\ndef('OrExpression')\n .bases('BinaryExpression')\n .build('left', 'right');\n\ndef('NotExpression')\n .bases('UnaryExpression')\n .build('expression');\n\ndef('ParentesizedExpression')\n .bases('UnaryExpression')\n .build('expression');\n\ndef('BlockExpression')\n .bases('UnaryExpression')\n .build('expression');\n\ndef('Comparison')\n .bases('Expression')\n .build('operator', 'left', 'right')\n .field('operator', or('=', '>=', '<=', '<', '>', '!=', '~', '!~'))\n .field('left', def('IdentifierPath'))\n .field('right', def('Literal'));\n\ndef('Identifier')\n .bases('Node')\n .build('name')\n .field('name', or(isString, isNumber));\n\ndef('RegexpIdentifier')\n .bases('Identifier')\n .build('name');\n\ndef('IdentifierPath')\n .bases('Node')\n .build('components', 'regexp')\n .field('components', [or(def('Identifier'), null)])\n .field('regexp', isBoolean, defaults.false);\n\ndef('Query')\n .bases('Node')\n .build('expression')\n .field('expression',\n or(def('Expression'), null),\n defaults.null);\n\ndef('Subquery')\n .bases('Expression')\n .build('endpoint', 'expression')\n .field('endpoint', isString)\n .field('expression', def('Expression'));\n\ndef('Resource')\n .bases('Expression')\n .build('res_type', 'title', 'exported', 'parameters')\n .field('res_type', isString)\n .field('title', def('Identifier'))\n .field('exported', isBoolean)\n .field('parameters',\n or(def('BlockExpression'), null),\n defaults.null);\n\ndef('RegexpNodeMatch')\n .bases('Expression')\n .build('value')\n // TODO: his is a bit silly, should just have the string directly here\n .field('value', def('IdentifierPath'));\n\ntypes.finalize();\n\nexports.Type = types.Type;\nexports.builtInTypes = types.builtInTypes;\nexports.namedTypes = types.namedTypes;\nexports.builders = types.builders;\nexports.defineMethod = types.defineMethod;\nexports.getFieldNames = types.getFieldNames;\nexports.getFieldValue = types.getFieldValue;\nexports.eachField = types.eachField;\nexports.someField = types.someField;\nexports.getSupertypeNames = types.getSupertypeNames;\nexports.finalize = types.finalize;\nexports.NodePath = require('ast-types/lib/node-path');\nexports.PathVisitor = require('ast-types/lib/path-visitor');\n\nexports.visit = exports.PathVisitor.visit;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ast.js","var Ap = Array.prototype;\nvar slice = Ap.slice;\nvar map = Ap.map;\nvar each = Ap.forEach;\nvar Op = Object.prototype;\nvar objToStr = Op.toString;\nvar funObjStr = objToStr.call(function(){});\nvar strObjStr = objToStr.call(\"\");\nvar hasOwn = Op.hasOwnProperty;\n\n// A type is an object with a .check method that takes a value and returns\n// true or false according to whether the value matches the type.\n\nfunction Type(check, name) {\n var self = this;\n if (!(self instanceof Type)) {\n throw new Error(\"Type constructor cannot be invoked without 'new'\");\n }\n\n // Unfortunately we can't elegantly reuse isFunction and isString,\n // here, because this code is executed while defining those types.\n if (objToStr.call(check) !== funObjStr) {\n throw new Error(check + \" is not a function\");\n }\n\n // The `name` parameter can be either a function or a string.\n var nameObjStr = objToStr.call(name);\n if (!(nameObjStr === funObjStr ||\n nameObjStr === strObjStr)) {\n throw new Error(name + \" is neither a function nor a string\");\n }\n\n Object.defineProperties(self, {\n name: { value: name },\n check: {\n value: function(value, deep) {\n var result = check.call(self, value, deep);\n if (!result && deep && objToStr.call(deep) === funObjStr)\n deep(self, value);\n return result;\n }\n }\n });\n}\n\nvar Tp = Type.prototype;\n\n// Throughout this file we use Object.defineProperty to prevent\n// redefinition of exported properties.\nexports.Type = Type;\n\n// Like .check, except that failure triggers an AssertionError.\nTp.assert = function(value, deep) {\n if (!this.check(value, deep)) {\n var str = shallowStringify(value);\n throw new Error(str + \" does not match type \" + this);\n }\n return true;\n};\n\nfunction shallowStringify(value) {\n if (isObject.check(value))\n return \"{\" + Object.keys(value).map(function(key) {\n return key + \": \" + value[key];\n }).join(\", \") + \"}\";\n\n if (isArray.check(value))\n return \"[\" + value.map(shallowStringify).join(\", \") + \"]\";\n\n return JSON.stringify(value);\n}\n\nTp.toString = function() {\n var name = this.name;\n\n if (isString.check(name))\n return name;\n\n if (isFunction.check(name))\n return name.call(this) + \"\";\n\n return name + \" type\";\n};\n\nvar builtInCtorFns = [];\nvar builtInCtorTypes = [];\nvar builtInTypes = {};\nexports.builtInTypes = builtInTypes;\n\nfunction defBuiltInType(example, name) {\n var objStr = objToStr.call(example);\n\n var type = new Type(function(value) {\n return objToStr.call(value) === objStr;\n }, name);\n\n builtInTypes[name] = type;\n\n if (example && typeof example.constructor === \"function\") {\n builtInCtorFns.push(example.constructor);\n builtInCtorTypes.push(type);\n }\n\n return type;\n}\n\n// These types check the underlying [[Class]] attribute of the given\n// value, rather than using the problematic typeof operator. Note however\n// that no subtyping is considered; so, for instance, isObject.check\n// returns false for [], /./, new Date, and null.\nvar isString = defBuiltInType(\"truthy\", \"string\");\nvar isFunction = defBuiltInType(function(){}, \"function\");\nvar isArray = defBuiltInType([], \"array\");\nvar isObject = defBuiltInType({}, \"object\");\nvar isRegExp = defBuiltInType(/./, \"RegExp\");\nvar isDate = defBuiltInType(new Date, \"Date\");\nvar isNumber = defBuiltInType(3, \"number\");\nvar isBoolean = defBuiltInType(true, \"boolean\");\nvar isNull = defBuiltInType(null, \"null\");\nvar isUndefined = defBuiltInType(void 0, \"undefined\");\n\n// There are a number of idiomatic ways of expressing types, so this\n// function serves to coerce them all to actual Type objects. Note that\n// providing the name argument is not necessary in most cases.\nfunction toType(from, name) {\n // The toType function should of course be idempotent.\n if (from instanceof Type)\n return from;\n\n // The Def type is used as a helper for constructing compound\n // interface types for AST nodes.\n if (from instanceof Def)\n return from.type;\n\n // Support [ElemType] syntax.\n if (isArray.check(from))\n return Type.fromArray(from);\n\n // Support { someField: FieldType, ... } syntax.\n if (isObject.check(from))\n return Type.fromObject(from);\n\n if (isFunction.check(from)) {\n var bicfIndex = builtInCtorFns.indexOf(from);\n if (bicfIndex >= 0) {\n return builtInCtorTypes[bicfIndex];\n }\n\n // If isFunction.check(from), and from is not a built-in\n // constructor, assume from is a binary predicate function we can\n // use to define the type.\n return new Type(from, name);\n }\n\n // As a last resort, toType returns a type that matches any value that\n // is === from. This is primarily useful for literal values like\n // toType(null), but it has the additional advantage of allowing\n // toType to be a total function.\n return new Type(function(value) {\n return value === from;\n }, isUndefined.check(name) ? function() {\n return from + \"\";\n } : name);\n}\n\n// Returns a type that matches the given value iff any of type1, type2,\n// etc. match the value.\nType.or = function(/* type1, type2, ... */) {\n var types = [];\n var len = arguments.length;\n for (var i = 0; i < len; ++i)\n types.push(toType(arguments[i]));\n\n return new Type(function(value, deep) {\n for (var i = 0; i < len; ++i)\n if (types[i].check(value, deep))\n return true;\n return false;\n }, function() {\n return types.join(\" | \");\n });\n};\n\nType.fromArray = function(arr) {\n if (!isArray.check(arr)) {\n throw new Error(\"\");\n }\n if (arr.length !== 1) {\n throw new Error(\"only one element type is permitted for typed arrays\");\n }\n return toType(arr[0]).arrayOf();\n};\n\nTp.arrayOf = function() {\n var elemType = this;\n return new Type(function(value, deep) {\n return isArray.check(value) && value.every(function(elem) {\n return elemType.check(elem, deep);\n });\n }, function() {\n return \"[\" + elemType + \"]\";\n });\n};\n\nType.fromObject = function(obj) {\n var fields = Object.keys(obj).map(function(name) {\n return new Field(name, obj[name]);\n });\n\n return new Type(function(value, deep) {\n return isObject.check(value) && fields.every(function(field) {\n return field.type.check(value[field.name], deep);\n });\n }, function() {\n return \"{ \" + fields.join(\", \") + \" }\";\n });\n};\n\nfunction Field(name, type, defaultFn, hidden) {\n var self = this;\n\n if (!(self instanceof Field)) {\n throw new Error(\"Field constructor cannot be invoked without 'new'\");\n }\n isString.assert(name);\n\n type = toType(type);\n\n var properties = {\n name: { value: name },\n type: { value: type },\n hidden: { value: !!hidden }\n };\n\n if (isFunction.check(defaultFn)) {\n properties.defaultFn = { value: defaultFn };\n }\n\n Object.defineProperties(self, properties);\n}\n\nvar Fp = Field.prototype;\n\nFp.toString = function() {\n return JSON.stringify(this.name) + \": \" + this.type;\n};\n\nFp.getValue = function(obj) {\n var value = obj[this.name];\n\n if (!isUndefined.check(value))\n return value;\n\n if (this.defaultFn)\n value = this.defaultFn.call(obj);\n\n return value;\n};\n\n// Define a type whose name is registered in a namespace (the defCache) so\n// that future definitions will return the same type given the same name.\n// In particular, this system allows for circular and forward definitions.\n// The Def object d returned from Type.def may be used to configure the\n// type d.type by calling methods such as d.bases, d.build, and d.field.\nType.def = function(typeName) {\n isString.assert(typeName);\n return hasOwn.call(defCache, typeName)\n ? defCache[typeName]\n : defCache[typeName] = new Def(typeName);\n};\n\n// In order to return the same Def instance every time Type.def is called\n// with a particular name, those instances need to be stored in a cache.\nvar defCache = Object.create(null);\n\nfunction Def(typeName) {\n var self = this;\n if (!(self instanceof Def)) {\n throw new Error(\"Def constructor cannot be invoked without 'new'\");\n }\n\n Object.defineProperties(self, {\n typeName: { value: typeName },\n baseNames: { value: [] },\n ownFields: { value: Object.create(null) },\n\n // These two are populated during finalization.\n allSupertypes: { value: Object.create(null) }, // Includes own typeName.\n supertypeList: { value: [] }, // Linear inheritance hierarchy.\n allFields: { value: Object.create(null) }, // Includes inherited fields.\n fieldNames: { value: [] }, // Non-hidden keys of allFields.\n\n type: {\n value: new Type(function(value, deep) {\n return self.check(value, deep);\n }, typeName)\n }\n });\n}\n\nDef.fromValue = function(value) {\n if (value && typeof value === \"object\") {\n var type = value.type;\n if (typeof type === \"string\" &&\n hasOwn.call(defCache, type)) {\n var d = defCache[type];\n if (d.finalized) {\n return d;\n }\n }\n }\n\n return null;\n};\n\nvar Dp = Def.prototype;\n\nDp.isSupertypeOf = function(that) {\n if (that instanceof Def) {\n if (this.finalized !== true ||\n that.finalized !== true) {\n throw new Error(\"\");\n }\n return hasOwn.call(that.allSupertypes, this.typeName);\n } else {\n throw new Error(that + \" is not a Def\");\n }\n};\n\n// Note that the list returned by this function is a copy of the internal\n// supertypeList, *without* the typeName itself as the first element.\nexports.getSupertypeNames = function(typeName) {\n if (!hasOwn.call(defCache, typeName)) {\n throw new Error(\"\");\n }\n var d = defCache[typeName];\n if (d.finalized !== true) {\n throw new Error(\"\");\n }\n return d.supertypeList.slice(1);\n};\n\n// Returns an object mapping from every known type in the defCache to the\n// most specific supertype whose name is an own property of the candidates\n// object.\nexports.computeSupertypeLookupTable = function(candidates) {\n var table = {};\n var typeNames = Object.keys(defCache);\n var typeNameCount = typeNames.length;\n\n for (var i = 0; i < typeNameCount; ++i) {\n var typeName = typeNames[i];\n var d = defCache[typeName];\n if (d.finalized !== true) {\n throw new Error(\"\" + typeName);\n }\n for (var j = 0; j < d.supertypeList.length; ++j) {\n var superTypeName = d.supertypeList[j];\n if (hasOwn.call(candidates, superTypeName)) {\n table[typeName] = superTypeName;\n break;\n }\n }\n }\n\n return table;\n};\n\nDp.checkAllFields = function(value, deep) {\n var allFields = this.allFields;\n if (this.finalized !== true) {\n throw new Error(\"\" + this.typeName);\n }\n\n function checkFieldByName(name) {\n var field = allFields[name];\n var type = field.type;\n var child = field.getValue(value);\n return type.check(child, deep);\n }\n\n return isObject.check(value)\n && Object.keys(allFields).every(checkFieldByName);\n};\n\nDp.check = function(value, deep) {\n if (this.finalized !== true) {\n throw new Error(\n \"prematurely checking unfinalized type \" + this.typeName\n );\n }\n\n // A Def type can only match an object value.\n if (!isObject.check(value))\n return false;\n\n var vDef = Def.fromValue(value);\n if (!vDef) {\n // If we couldn't infer the Def associated with the given value,\n // and we expected it to be a SourceLocation or a Position, it was\n // probably just missing a \"type\" field (because Esprima does not\n // assign a type property to such nodes). Be optimistic and let\n // this.checkAllFields make the final decision.\n if (this.typeName === \"SourceLocation\" ||\n this.typeName === \"Position\") {\n return this.checkAllFields(value, deep);\n }\n\n // Calling this.checkAllFields for any other type of node is both\n // bad for performance and way too forgiving.\n return false;\n }\n\n // If checking deeply and vDef === this, then we only need to call\n // checkAllFields once. Calling checkAllFields is too strict when deep\n // is false, because then we only care about this.isSupertypeOf(vDef).\n if (deep && vDef === this)\n return this.checkAllFields(value, deep);\n\n // In most cases we rely exclusively on isSupertypeOf to make O(1)\n // subtyping determinations. This suffices in most situations outside\n // of unit tests, since interface conformance is checked whenever new\n // instances are created using builder functions.\n if (!this.isSupertypeOf(vDef))\n return false;\n\n // The exception is when deep is true; then, we recursively check all\n // fields.\n if (!deep)\n return true;\n\n // Use the more specific Def (vDef) to perform the deep check, but\n // shallow-check fields defined by the less specific Def (this).\n return vDef.checkAllFields(value, deep)\n && this.checkAllFields(value, false);\n};\n\nDp.bases = function() {\n var args = slice.call(arguments);\n var bases = this.baseNames;\n\n if (this.finalized) {\n if (args.length !== bases.length) {\n throw new Error(\"\");\n }\n for (var i = 0; i < args.length; i++) {\n if (args[i] !== bases[i]) {\n throw new Error(\"\");\n }\n }\n return this;\n }\n\n args.forEach(function(baseName) {\n isString.assert(baseName);\n\n // This indexOf lookup may be O(n), but the typical number of base\n // names is very small, and indexOf is a native Array method.\n if (bases.indexOf(baseName) < 0)\n bases.push(baseName);\n });\n\n return this; // For chaining.\n};\n\n// False by default until .build(...) is called on an instance.\nObject.defineProperty(Dp, \"buildable\", { value: false });\n\nvar builders = {};\nexports.builders = builders;\n\n// This object is used as prototype for any node created by a builder.\nvar nodePrototype = {};\n\n// Call this function to define a new method to be shared by all AST\n// nodes. The replaced method (if any) is returned for easy wrapping.\nexports.defineMethod = function(name, func) {\n var old = nodePrototype[name];\n\n // Pass undefined as func to delete nodePrototype[name].\n if (isUndefined.check(func)) {\n delete nodePrototype[name];\n\n } else {\n isFunction.assert(func);\n\n Object.defineProperty(nodePrototype, name, {\n enumerable: true, // For discoverability.\n configurable: true, // For delete proto[name].\n value: func\n });\n }\n\n return old;\n};\n\nvar isArrayOfString = isString.arrayOf();\n\n// Calling the .build method of a Def simultaneously marks the type as\n// buildable (by defining builders[getBuilderName(typeName)]) and\n// specifies the order of arguments that should be passed to the builder\n// function to create an instance of the type.\nDp.build = function(/* param1, param2, ... */) {\n var self = this;\n\n var newBuildParams = slice.call(arguments);\n isArrayOfString.assert(newBuildParams);\n\n // Calling Def.prototype.build multiple times has the effect of merely\n // redefining this property.\n Object.defineProperty(self, \"buildParams\", {\n value: newBuildParams,\n writable: false,\n enumerable: false,\n configurable: true\n });\n\n if (self.buildable) {\n // If this Def is already buildable, update self.buildParams and\n // continue using the old builder function.\n return self;\n }\n\n // Every buildable type will have its \"type\" field filled in\n // automatically. This includes types that are not subtypes of Node,\n // like SourceLocation, but that seems harmless (TODO?).\n self.field(\"type\", String, function() { return self.typeName });\n\n // Override Dp.buildable for this Def instance.\n Object.defineProperty(self, \"buildable\", { value: true });\n\n Object.defineProperty(builders, getBuilderName(self.typeName), {\n enumerable: true,\n\n value: function() {\n var args = arguments;\n var argc = args.length;\n var built = Object.create(nodePrototype);\n\n if (!self.finalized) {\n throw new Error(\n \"attempting to instantiate unfinalized type \" +\n self.typeName\n );\n }\n\n function add(param, i) {\n if (hasOwn.call(built, param))\n return;\n\n var all = self.allFields;\n if (!hasOwn.call(all, param)) {\n throw new Error(\"\" + param);\n }\n\n var field = all[param];\n var type = field.type;\n var value;\n\n if (isNumber.check(i) && i < argc) {\n value = args[i];\n } else if (field.defaultFn) {\n // Expose the partially-built object to the default\n // function as its `this` object.\n value = field.defaultFn.call(built);\n } else {\n var message = \"no value or default function given for field \" +\n JSON.stringify(param) + \" of \" + self.typeName + \"(\" +\n self.buildParams.map(function(name) {\n return all[name];\n }).join(\", \") + \")\";\n throw new Error(message);\n }\n\n if (!type.check(value)) {\n throw new Error(\n shallowStringify(value) +\n \" does not match field \" + field +\n \" of type \" + self.typeName\n );\n }\n\n // TODO Could attach getters and setters here to enforce\n // dynamic type safety.\n built[param] = value;\n }\n\n self.buildParams.forEach(function(param, i) {\n add(param, i);\n });\n\n Object.keys(self.allFields).forEach(function(param) {\n add(param); // Use the default value.\n });\n\n // Make sure that the \"type\" field was filled automatically.\n if (built.type !== self.typeName) {\n throw new Error(\"\");\n }\n\n return built;\n }\n });\n\n return self; // For chaining.\n};\n\nfunction getBuilderName(typeName) {\n return typeName.replace(/^[A-Z]+/, function(upperCasePrefix) {\n var len = upperCasePrefix.length;\n switch (len) {\n case 0: return \"\";\n // If there's only one initial capital letter, just lower-case it.\n case 1: return upperCasePrefix.toLowerCase();\n default:\n // If there's more than one initial capital letter, lower-case\n // all but the last one, so that XMLDefaultDeclaration (for\n // example) becomes xmlDefaultDeclaration.\n return upperCasePrefix.slice(\n 0, len - 1).toLowerCase() +\n upperCasePrefix.charAt(len - 1);\n }\n });\n}\nexports.getBuilderName = getBuilderName;\n\nfunction getStatementBuilderName(typeName) {\n typeName = getBuilderName(typeName);\n return typeName.replace(/(Expression)?$/, \"Statement\");\n}\nexports.getStatementBuilderName = getStatementBuilderName;\n\n// The reason fields are specified using .field(...) instead of an object\n// literal syntax is somewhat subtle: the object literal syntax would\n// support only one key and one value, but with .field(...) we can pass\n// any number of arguments to specify the field.\nDp.field = function(name, type, defaultFn, hidden) {\n if (this.finalized) {\n console.error(\"Ignoring attempt to redefine field \" +\n JSON.stringify(name) + \" of finalized type \" +\n JSON.stringify(this.typeName));\n return this;\n }\n this.ownFields[name] = new Field(name, type, defaultFn, hidden);\n return this; // For chaining.\n};\n\nvar namedTypes = {};\nexports.namedTypes = namedTypes;\n\n// Like Object.keys, but aware of what fields each AST type should have.\nfunction getFieldNames(object) {\n var d = Def.fromValue(object);\n if (d) {\n return d.fieldNames.slice(0);\n }\n\n if (\"type\" in object) {\n throw new Error(\n \"did not recognize object of type \" +\n JSON.stringify(object.type)\n );\n }\n\n return Object.keys(object);\n}\nexports.getFieldNames = getFieldNames;\n\n// Get the value of an object property, taking object.type and default\n// functions into account.\nfunction getFieldValue(object, fieldName) {\n var d = Def.fromValue(object);\n if (d) {\n var field = d.allFields[fieldName];\n if (field) {\n return field.getValue(object);\n }\n }\n\n return object[fieldName];\n}\nexports.getFieldValue = getFieldValue;\n\n// Iterate over all defined fields of an object, including those missing\n// or undefined, passing each field name and effective value (as returned\n// by getFieldValue) to the callback. If the object has no corresponding\n// Def, the callback will never be called.\nexports.eachField = function(object, callback, context) {\n getFieldNames(object).forEach(function(name) {\n callback.call(this, name, getFieldValue(object, name));\n }, context);\n};\n\n// Similar to eachField, except that iteration stops as soon as the\n// callback returns a truthy value. Like Array.prototype.some, the final\n// result is either true or false to indicates whether the callback\n// returned true for any element or not.\nexports.someField = function(object, callback, context) {\n return getFieldNames(object).some(function(name) {\n return callback.call(this, name, getFieldValue(object, name));\n }, context);\n};\n\n// This property will be overridden as true by individual Def instances\n// when they are finalized.\nObject.defineProperty(Dp, \"finalized\", { value: false });\n\nDp.finalize = function() {\n var self = this;\n\n // It's not an error to finalize a type more than once, but only the\n // first call to .finalize does anything.\n if (!self.finalized) {\n var allFields = self.allFields;\n var allSupertypes = self.allSupertypes;\n\n self.baseNames.forEach(function(name) {\n var def = defCache[name];\n if (def instanceof Def) {\n def.finalize();\n extend(allFields, def.allFields);\n extend(allSupertypes, def.allSupertypes);\n } else {\n var message = \"unknown supertype name \" +\n JSON.stringify(name) +\n \" for subtype \" +\n JSON.stringify(self.typeName);\n throw new Error(message);\n }\n });\n\n // TODO Warn if fields are overridden with incompatible types.\n extend(allFields, self.ownFields);\n allSupertypes[self.typeName] = self;\n\n self.fieldNames.length = 0;\n for (var fieldName in allFields) {\n if (hasOwn.call(allFields, fieldName) &&\n !allFields[fieldName].hidden) {\n self.fieldNames.push(fieldName);\n }\n }\n\n // Types are exported only once they have been finalized.\n Object.defineProperty(namedTypes, self.typeName, {\n enumerable: true,\n value: self.type\n });\n\n Object.defineProperty(self, \"finalized\", { value: true });\n\n // A linearization of the inheritance hierarchy.\n populateSupertypeList(self.typeName, self.supertypeList);\n\n if (self.buildable && self.supertypeList.lastIndexOf(\"Expression\") >= 0) {\n wrapExpressionBuilderWithStatement(self.typeName);\n }\n }\n};\n\n// Adds an additional builder for Expression subtypes\n// that wraps the built Expression in an ExpressionStatements.\nfunction wrapExpressionBuilderWithStatement(typeName) {\n var wrapperName = getStatementBuilderName(typeName);\n\n // skip if the builder already exists\n if (builders[wrapperName]) return;\n\n // the builder function to wrap with builders.ExpressionStatement\n var wrapped = builders[getBuilderName(typeName)];\n\n // skip if there is nothing to wrap\n if (!wrapped) return;\n\n builders[wrapperName] = function() {\n return builders.expressionStatement(wrapped.apply(builders, arguments));\n };\n}\n\nfunction populateSupertypeList(typeName, list) {\n list.length = 0;\n list.push(typeName);\n\n var lastSeen = Object.create(null);\n\n for (var pos = 0; pos < list.length; ++pos) {\n typeName = list[pos];\n var d = defCache[typeName];\n if (d.finalized !== true) {\n throw new Error(\"\");\n }\n\n // If we saw typeName earlier in the breadth-first traversal,\n // delete the last-seen occurrence.\n if (hasOwn.call(lastSeen, typeName)) {\n delete list[lastSeen[typeName]];\n }\n\n // Record the new index of the last-seen occurrence of typeName.\n lastSeen[typeName] = pos;\n\n // Enqueue the base names of this type.\n list.push.apply(list, d.baseNames);\n }\n\n // Compaction loop to remove array holes.\n for (var to = 0, from = to, len = list.length; from < len; ++from) {\n if (hasOwn.call(list, from)) {\n list[to++] = list[from];\n }\n }\n\n list.length = to;\n}\n\nfunction extend(into, from) {\n Object.keys(from).forEach(function(name) {\n into[name] = from[name];\n });\n\n return into;\n};\n\nexports.finalize = function() {\n Object.keys(defCache).forEach(function(name) {\n defCache[name].finalize();\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/ast-types/lib/types.js\n// module id = 3\n// module chunks = 0","var types = require(\"../lib/types\");\nvar Type = types.Type;\nvar builtin = types.builtInTypes;\nvar isNumber = builtin.number;\n\n// An example of constructing a new type with arbitrary constraints from\n// an existing type.\nexports.geq = function(than) {\n return new Type(function(value) {\n return isNumber.check(value) && value >= than;\n }, isNumber + \" >= \" + than);\n};\n\n// Default value-returning functions that may optionally be passed as a\n// third argument to Def.prototype.field.\nexports.defaults = {\n // Functions were used because (among other reasons) that's the most\n // elegant way to allow for the emptyArray one always to give a new\n // array instance.\n \"null\": function() { return null },\n \"emptyArray\": function() { return [] },\n \"false\": function() { return false },\n \"true\": function() { return true },\n \"undefined\": function() {}\n};\n\nvar naiveIsPrimitive = Type.or(\n builtin.string,\n builtin.number,\n builtin.boolean,\n builtin.null,\n builtin.undefined\n);\n\nexports.isPrimitive = new Type(function(value) {\n if (value === null)\n return true;\n var type = typeof value;\n return !(type === \"object\" ||\n type === \"function\");\n}, naiveIsPrimitive.toString());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/ast-types/lib/shared.js\n// module id = 4\n// module chunks = 0","var types = require(\"./types\");\nvar n = types.namedTypes;\nvar b = types.builders;\nvar isNumber = types.builtInTypes.number;\nvar isArray = types.builtInTypes.array;\nvar Path = require(\"./path\");\nvar Scope = require(\"./scope\");\n\nfunction NodePath(value, parentPath, name) {\n if (!(this instanceof NodePath)) {\n throw new Error(\"NodePath constructor cannot be invoked without 'new'\");\n }\n Path.call(this, value, parentPath, name);\n}\n\nvar NPp = NodePath.prototype = Object.create(Path.prototype, {\n constructor: {\n value: NodePath,\n enumerable: false,\n writable: true,\n configurable: true\n }\n});\n\nObject.defineProperties(NPp, {\n node: {\n get: function() {\n Object.defineProperty(this, \"node\", {\n configurable: true, // Enable deletion.\n value: this._computeNode()\n });\n\n return this.node;\n }\n },\n\n parent: {\n get: function() {\n Object.defineProperty(this, \"parent\", {\n configurable: true, // Enable deletion.\n value: this._computeParent()\n });\n\n return this.parent;\n }\n },\n\n scope: {\n get: function() {\n Object.defineProperty(this, \"scope\", {\n configurable: true, // Enable deletion.\n value: this._computeScope()\n });\n\n return this.scope;\n }\n }\n});\n\nNPp.replace = function() {\n delete this.node;\n delete this.parent;\n delete this.scope;\n return Path.prototype.replace.apply(this, arguments);\n};\n\nNPp.prune = function() {\n var remainingNodePath = this.parent;\n\n this.replace();\n\n return cleanUpNodesAfterPrune(remainingNodePath);\n};\n\n// The value of the first ancestor Path whose value is a Node.\nNPp._computeNode = function() {\n var value = this.value;\n if (n.Node.check(value)) {\n return value;\n }\n\n var pp = this.parentPath;\n return pp && pp.node || null;\n};\n\n// The first ancestor Path whose value is a Node distinct from this.node.\nNPp._computeParent = function() {\n var value = this.value;\n var pp = this.parentPath;\n\n if (!n.Node.check(value)) {\n while (pp && !n.Node.check(pp.value)) {\n pp = pp.parentPath;\n }\n\n if (pp) {\n pp = pp.parentPath;\n }\n }\n\n while (pp && !n.Node.check(pp.value)) {\n pp = pp.parentPath;\n }\n\n return pp || null;\n};\n\n// The closest enclosing scope that governs this node.\nNPp._computeScope = function() {\n var value = this.value;\n var pp = this.parentPath;\n var scope = pp && pp.scope;\n\n if (n.Node.check(value) &&\n Scope.isEstablishedBy(value)) {\n scope = new Scope(this, scope);\n }\n\n return scope || null;\n};\n\nNPp.getValueProperty = function(name) {\n return types.getFieldValue(this.value, name);\n};\n\n/**\n * Determine whether this.node needs to be wrapped in parentheses in order\n * for a parser to reproduce the same local AST structure.\n *\n * For instance, in the expression `(1 + 2) * 3`, the BinaryExpression\n * whose operator is \"+\" needs parentheses, because `1 + 2 * 3` would\n * parse differently.\n *\n * If assumeExpressionContext === true, we don't worry about edge cases\n * like an anonymous FunctionExpression appearing lexically first in its\n * enclosing statement and thus needing parentheses to avoid being parsed\n * as a FunctionDeclaration with a missing name.\n */\nNPp.needsParens = function(assumeExpressionContext) {\n var pp = this.parentPath;\n if (!pp) {\n return false;\n }\n\n var node = this.value;\n\n // Only expressions need parentheses.\n if (!n.Expression.check(node)) {\n return false;\n }\n\n // Identifiers never need parentheses.\n if (node.type === \"Identifier\") {\n return false;\n }\n\n while (!n.Node.check(pp.value)) {\n pp = pp.parentPath;\n if (!pp) {\n return false;\n }\n }\n\n var parent = pp.value;\n\n switch (node.type) {\n case \"UnaryExpression\":\n case \"SpreadElement\":\n case \"SpreadProperty\":\n return parent.type === \"MemberExpression\"\n && this.name === \"object\"\n && parent.object === node;\n\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n switch (parent.type) {\n case \"CallExpression\":\n return this.name === \"callee\"\n && parent.callee === node;\n\n case \"UnaryExpression\":\n case \"SpreadElement\":\n case \"SpreadProperty\":\n return true;\n\n case \"MemberExpression\":\n return this.name === \"object\"\n && parent.object === node;\n\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n var po = parent.operator;\n var pp = PRECEDENCE[po];\n var no = node.operator;\n var np = PRECEDENCE[no];\n\n if (pp > np) {\n return true;\n }\n\n if (pp === np && this.name === \"right\") {\n if (parent.right !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n return true;\n }\n\n default:\n return false;\n }\n\n case \"SequenceExpression\":\n switch (parent.type) {\n case \"ForStatement\":\n // Although parentheses wouldn't hurt around sequence\n // expressions in the head of for loops, traditional style\n // dictates that e.g. i++, j++ should not be wrapped with\n // parentheses.\n return false;\n\n case \"ExpressionStatement\":\n return this.name !== \"expression\";\n\n default:\n // Otherwise err on the side of overparenthesization, adding\n // explicit exceptions above if this proves overzealous.\n return true;\n }\n\n case \"YieldExpression\":\n switch (parent.type) {\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n case \"UnaryExpression\":\n case \"SpreadElement\":\n case \"SpreadProperty\":\n case \"CallExpression\":\n case \"MemberExpression\":\n case \"NewExpression\":\n case \"ConditionalExpression\":\n case \"YieldExpression\":\n return true;\n\n default:\n return false;\n }\n\n case \"Literal\":\n return parent.type === \"MemberExpression\"\n && isNumber.check(node.value)\n && this.name === \"object\"\n && parent.object === node;\n\n case \"AssignmentExpression\":\n case \"ConditionalExpression\":\n switch (parent.type) {\n case \"UnaryExpression\":\n case \"SpreadElement\":\n case \"SpreadProperty\":\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n return true;\n\n case \"CallExpression\":\n return this.name === \"callee\"\n && parent.callee === node;\n\n case \"ConditionalExpression\":\n return this.name === \"test\"\n && parent.test === node;\n\n case \"MemberExpression\":\n return this.name === \"object\"\n && parent.object === node;\n\n default:\n return false;\n }\n\n default:\n if (parent.type === \"NewExpression\" &&\n this.name === \"callee\" &&\n parent.callee === node) {\n return containsCallExpression(node);\n }\n }\n\n if (assumeExpressionContext !== true &&\n !this.canBeFirstInStatement() &&\n this.firstInStatement())\n return true;\n\n return false;\n};\n\nfunction isBinary(node) {\n return n.BinaryExpression.check(node)\n || n.LogicalExpression.check(node);\n}\n\nfunction isUnaryLike(node) {\n return n.UnaryExpression.check(node)\n // I considered making SpreadElement and SpreadProperty subtypes\n // of UnaryExpression, but they're not really Expression nodes.\n || (n.SpreadElement && n.SpreadElement.check(node))\n || (n.SpreadProperty && n.SpreadProperty.check(node));\n}\n\nvar PRECEDENCE = {};\n[[\"||\"],\n [\"&&\"],\n [\"|\"],\n [\"^\"],\n [\"&\"],\n [\"==\", \"===\", \"!=\", \"!==\"],\n [\"<\", \">\", \"<=\", \">=\", \"in\", \"instanceof\"],\n [\">>\", \"<<\", \">>>\"],\n [\"+\", \"-\"],\n [\"*\", \"/\", \"%\"]\n].forEach(function(tier, i) {\n tier.forEach(function(op) {\n PRECEDENCE[op] = i;\n });\n});\n\nfunction containsCallExpression(node) {\n if (n.CallExpression.check(node)) {\n return true;\n }\n\n if (isArray.check(node)) {\n return node.some(containsCallExpression);\n }\n\n if (n.Node.check(node)) {\n return types.someField(node, function(name, child) {\n return containsCallExpression(child);\n });\n }\n\n return false;\n}\n\nNPp.canBeFirstInStatement = function() {\n var node = this.node;\n return !n.FunctionExpression.check(node)\n && !n.ObjectExpression.check(node);\n};\n\nNPp.firstInStatement = function() {\n return firstInStatement(this);\n};\n\nfunction firstInStatement(path) {\n for (var node, parent; path.parent; path = path.parent) {\n node = path.node;\n parent = path.parent.node;\n\n if (n.BlockStatement.check(parent) &&\n path.parent.name === \"body\" &&\n path.name === 0) {\n if (parent.body[0] !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n return true;\n }\n\n if (n.ExpressionStatement.check(parent) &&\n path.name === \"expression\") {\n if (parent.expression !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n return true;\n }\n\n if (n.SequenceExpression.check(parent) &&\n path.parent.name === \"expressions\" &&\n path.name === 0) {\n if (parent.expressions[0] !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n continue;\n }\n\n if (n.CallExpression.check(parent) &&\n path.name === \"callee\") {\n if (parent.callee !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n continue;\n }\n\n if (n.MemberExpression.check(parent) &&\n path.name === \"object\") {\n if (parent.object !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n continue;\n }\n\n if (n.ConditionalExpression.check(parent) &&\n path.name === \"test\") {\n if (parent.test !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n continue;\n }\n\n if (isBinary(parent) &&\n path.name === \"left\") {\n if (parent.left !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n continue;\n }\n\n if (n.UnaryExpression.check(parent) &&\n !parent.prefix &&\n path.name === \"argument\") {\n if (parent.argument !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n continue;\n }\n\n return false;\n }\n\n return true;\n}\n\n/**\n * Pruning certain nodes will result in empty or incomplete nodes, here we clean those nodes up.\n */\nfunction cleanUpNodesAfterPrune(remainingNodePath) {\n if (n.VariableDeclaration.check(remainingNodePath.node)) {\n var declarations = remainingNodePath.get('declarations').value;\n if (!declarations || declarations.length === 0) {\n return remainingNodePath.prune();\n }\n } else if (n.ExpressionStatement.check(remainingNodePath.node)) {\n if (!remainingNodePath.get('expression').value) {\n return remainingNodePath.prune();\n }\n } else if (n.IfStatement.check(remainingNodePath.node)) {\n cleanUpIfStatementAfterPrune(remainingNodePath);\n }\n\n return remainingNodePath;\n}\n\nfunction cleanUpIfStatementAfterPrune(ifStatement) {\n var testExpression = ifStatement.get('test').value;\n var alternate = ifStatement.get('alternate').value;\n var consequent = ifStatement.get('consequent').value;\n\n if (!consequent && !alternate) {\n var testExpressionStatement = b.expressionStatement(testExpression);\n\n ifStatement.replace(testExpressionStatement);\n } else if (!consequent && alternate) {\n var negatedTestExpression = b.unaryExpression('!', testExpression, true);\n\n if (n.UnaryExpression.check(testExpression) && testExpression.operator === '!') {\n negatedTestExpression = testExpression.argument;\n }\n\n ifStatement.get(\"test\").replace(negatedTestExpression);\n ifStatement.get(\"consequent\").replace(alternate);\n ifStatement.get(\"alternate\").replace();\n }\n}\n\nmodule.exports = NodePath;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/ast-types/lib/node-path.js\n// module id = 5\n// module chunks = 0","var Op = Object.prototype;\nvar hasOwn = Op.hasOwnProperty;\nvar types = require(\"./types\");\nvar isArray = types.builtInTypes.array;\nvar isNumber = types.builtInTypes.number;\nvar Ap = Array.prototype;\nvar slice = Ap.slice;\nvar map = Ap.map;\n\nfunction Path(value, parentPath, name) {\n if (!(this instanceof Path)) {\n throw new Error(\"Path constructor cannot be invoked without 'new'\");\n }\n\n if (parentPath) {\n if (!(parentPath instanceof Path)) {\n throw new Error(\"\");\n }\n } else {\n parentPath = null;\n name = null;\n }\n\n // The value encapsulated by this Path, generally equal to\n // parentPath.value[name] if we have a parentPath.\n this.value = value;\n\n // The immediate parent Path of this Path.\n this.parentPath = parentPath;\n\n // The name of the property of parentPath.value through which this\n // Path's value was reached.\n this.name = name;\n\n // Calling path.get(\"child\") multiple times always returns the same\n // child Path object, for both performance and consistency reasons.\n this.__childCache = null;\n}\n\nvar Pp = Path.prototype;\n\nfunction getChildCache(path) {\n // Lazily create the child cache. This also cheapens cache\n // invalidation, since you can just reset path.__childCache to null.\n return path.__childCache || (path.__childCache = Object.create(null));\n}\n\nfunction getChildPath(path, name) {\n var cache = getChildCache(path);\n var actualChildValue = path.getValueProperty(name);\n var childPath = cache[name];\n if (!hasOwn.call(cache, name) ||\n // Ensure consistency between cache and reality.\n childPath.value !== actualChildValue) {\n childPath = cache[name] = new path.constructor(\n actualChildValue, path, name\n );\n }\n return childPath;\n}\n\n// This method is designed to be overridden by subclasses that need to\n// handle missing properties, etc.\nPp.getValueProperty = function getValueProperty(name) {\n return this.value[name];\n};\n\nPp.get = function get(name) {\n var path = this;\n var names = arguments;\n var count = names.length;\n\n for (var i = 0; i < count; ++i) {\n path = getChildPath(path, names[i]);\n }\n\n return path;\n};\n\nPp.each = function each(callback, context) {\n var childPaths = [];\n var len = this.value.length;\n var i = 0;\n\n // Collect all the original child paths before invoking the callback.\n for (var i = 0; i < len; ++i) {\n if (hasOwn.call(this.value, i)) {\n childPaths[i] = this.get(i);\n }\n }\n\n // Invoke the callback on just the original child paths, regardless of\n // any modifications made to the array by the callback. I chose these\n // semantics over cleverly invoking the callback on new elements because\n // this way is much easier to reason about.\n context = context || this;\n for (i = 0; i < len; ++i) {\n if (hasOwn.call(childPaths, i)) {\n callback.call(context, childPaths[i]);\n }\n }\n};\n\nPp.map = function map(callback, context) {\n var result = [];\n\n this.each(function(childPath) {\n result.push(callback.call(this, childPath));\n }, context);\n\n return result;\n};\n\nPp.filter = function filter(callback, context) {\n var result = [];\n\n this.each(function(childPath) {\n if (callback.call(this, childPath)) {\n result.push(childPath);\n }\n }, context);\n\n return result;\n};\n\nfunction emptyMoves() {}\nfunction getMoves(path, offset, start, end) {\n isArray.assert(path.value);\n\n if (offset === 0) {\n return emptyMoves;\n }\n\n var length = path.value.length;\n if (length < 1) {\n return emptyMoves;\n }\n\n var argc = arguments.length;\n if (argc === 2) {\n start = 0;\n end = length;\n } else if (argc === 3) {\n start = Math.max(start, 0);\n end = length;\n } else {\n start = Math.max(start, 0);\n end = Math.min(end, length);\n }\n\n isNumber.assert(start);\n isNumber.assert(end);\n\n var moves = Object.create(null);\n var cache = getChildCache(path);\n\n for (var i = start; i < end; ++i) {\n if (hasOwn.call(path.value, i)) {\n var childPath = path.get(i);\n if (childPath.name !== i) {\n throw new Error(\"\");\n }\n var newIndex = i + offset;\n childPath.name = newIndex;\n moves[newIndex] = childPath;\n delete cache[i];\n }\n }\n\n delete cache.length;\n\n return function() {\n for (var newIndex in moves) {\n var childPath = moves[newIndex];\n if (childPath.name !== +newIndex) {\n throw new Error(\"\");\n }\n cache[newIndex] = childPath;\n path.value[newIndex] = childPath.value;\n }\n };\n}\n\nPp.shift = function shift() {\n var move = getMoves(this, -1);\n var result = this.value.shift();\n move();\n return result;\n};\n\nPp.unshift = function unshift(node) {\n var move = getMoves(this, arguments.length);\n var result = this.value.unshift.apply(this.value, arguments);\n move();\n return result;\n};\n\nPp.push = function push(node) {\n isArray.assert(this.value);\n delete getChildCache(this).length\n return this.value.push.apply(this.value, arguments);\n};\n\nPp.pop = function pop() {\n isArray.assert(this.value);\n var cache = getChildCache(this);\n delete cache[this.value.length - 1];\n delete cache.length;\n return this.value.pop();\n};\n\nPp.insertAt = function insertAt(index, node) {\n var argc = arguments.length;\n var move = getMoves(this, argc - 1, index);\n if (move === emptyMoves) {\n return this;\n }\n\n index = Math.max(index, 0);\n\n for (var i = 1; i < argc; ++i) {\n this.value[index + i - 1] = arguments[i];\n }\n\n move();\n\n return this;\n};\n\nPp.insertBefore = function insertBefore(node) {\n var pp = this.parentPath;\n var argc = arguments.length;\n var insertAtArgs = [this.name];\n for (var i = 0; i < argc; ++i) {\n insertAtArgs.push(arguments[i]);\n }\n return pp.insertAt.apply(pp, insertAtArgs);\n};\n\nPp.insertAfter = function insertAfter(node) {\n var pp = this.parentPath;\n var argc = arguments.length;\n var insertAtArgs = [this.name + 1];\n for (var i = 0; i < argc; ++i) {\n insertAtArgs.push(arguments[i]);\n }\n return pp.insertAt.apply(pp, insertAtArgs);\n};\n\nfunction repairRelationshipWithParent(path) {\n if (!(path instanceof Path)) {\n throw new Error(\"\");\n }\n\n var pp = path.parentPath;\n if (!pp) {\n // Orphan paths have no relationship to repair.\n return path;\n }\n\n var parentValue = pp.value;\n var parentCache = getChildCache(pp);\n\n // Make sure parentCache[path.name] is populated.\n if (parentValue[path.name] === path.value) {\n parentCache[path.name] = path;\n } else if (isArray.check(parentValue)) {\n // Something caused path.name to become out of date, so attempt to\n // recover by searching for path.value in parentValue.\n var i = parentValue.indexOf(path.value);\n if (i >= 0) {\n parentCache[path.name = i] = path;\n }\n } else {\n // If path.value disagrees with parentValue[path.name], and\n // path.name is not an array index, let path.value become the new\n // parentValue[path.name] and update parentCache accordingly.\n parentValue[path.name] = path.value;\n parentCache[path.name] = path;\n }\n\n if (parentValue[path.name] !== path.value) {\n throw new Error(\"\");\n }\n if (path.parentPath.get(path.name) !== path) {\n throw new Error(\"\");\n }\n\n return path;\n}\n\nPp.replace = function replace(replacement) {\n var results = [];\n var parentValue = this.parentPath.value;\n var parentCache = getChildCache(this.parentPath);\n var count = arguments.length;\n\n repairRelationshipWithParent(this);\n\n if (isArray.check(parentValue)) {\n var originalLength = parentValue.length;\n var move = getMoves(this.parentPath, count - 1, this.name + 1);\n\n var spliceArgs = [this.name, 1];\n for (var i = 0; i < count; ++i) {\n spliceArgs.push(arguments[i]);\n }\n\n var splicedOut = parentValue.splice.apply(parentValue, spliceArgs);\n\n if (splicedOut[0] !== this.value) {\n throw new Error(\"\");\n }\n if (parentValue.length !== (originalLength - 1 + count)) {\n throw new Error(\"\");\n }\n\n move();\n\n if (count === 0) {\n delete this.value;\n delete parentCache[this.name];\n this.__childCache = null;\n\n } else {\n if (parentValue[this.name] !== replacement) {\n throw new Error(\"\");\n }\n\n if (this.value !== replacement) {\n this.value = replacement;\n this.__childCache = null;\n }\n\n for (i = 0; i < count; ++i) {\n results.push(this.parentPath.get(this.name + i));\n }\n\n if (results[0] !== this) {\n throw new Error(\"\");\n }\n }\n\n } else if (count === 1) {\n if (this.value !== replacement) {\n this.__childCache = null;\n }\n this.value = parentValue[this.name] = replacement;\n results.push(this);\n\n } else if (count === 0) {\n delete parentValue[this.name];\n delete this.value;\n this.__childCache = null;\n\n // Leave this path cached as parentCache[this.name], even though\n // it no longer has a value defined.\n\n } else {\n throw new Error(\"Could not replace path\");\n }\n\n return results;\n};\n\nmodule.exports = Path;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/ast-types/lib/path.js\n// module id = 6\n// module chunks = 0","var types = require(\"./types\");\nvar Type = types.Type;\nvar namedTypes = types.namedTypes;\nvar Node = namedTypes.Node;\nvar Expression = namedTypes.Expression;\nvar isArray = types.builtInTypes.array;\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar b = types.builders;\n\nfunction Scope(path, parentScope) {\n if (!(this instanceof Scope)) {\n throw new Error(\"Scope constructor cannot be invoked without 'new'\");\n }\n if (!(path instanceof require(\"./node-path\"))) {\n throw new Error(\"\");\n }\n ScopeType.assert(path.value);\n\n var depth;\n\n if (parentScope) {\n if (!(parentScope instanceof Scope)) {\n throw new Error(\"\");\n }\n depth = parentScope.depth + 1;\n } else {\n parentScope = null;\n depth = 0;\n }\n\n Object.defineProperties(this, {\n path: { value: path },\n node: { value: path.value },\n isGlobal: { value: !parentScope, enumerable: true },\n depth: { value: depth },\n parent: { value: parentScope },\n bindings: { value: {} },\n types: { value: {} },\n });\n}\n\nvar scopeTypes = [\n // Program nodes introduce global scopes.\n namedTypes.Program,\n\n // Function is the supertype of FunctionExpression,\n // FunctionDeclaration, ArrowExpression, etc.\n namedTypes.Function,\n\n // In case you didn't know, the caught parameter shadows any variable\n // of the same name in an outer scope.\n namedTypes.CatchClause\n];\n\nvar ScopeType = Type.or.apply(Type, scopeTypes);\n\nScope.isEstablishedBy = function(node) {\n return ScopeType.check(node);\n};\n\nvar Sp = Scope.prototype;\n\n// Will be overridden after an instance lazily calls scanScope.\nSp.didScan = false;\n\nSp.declares = function(name) {\n this.scan();\n return hasOwn.call(this.bindings, name);\n};\n\nSp.declaresType = function(name) {\n this.scan();\n return hasOwn.call(this.types, name);\n};\n\nSp.declareTemporary = function(prefix) {\n if (prefix) {\n if (!/^[a-z$_]/i.test(prefix)) {\n throw new Error(\"\");\n }\n } else {\n prefix = \"t$\";\n }\n\n // Include this.depth in the name to make sure the name does not\n // collide with any variables in nested/enclosing scopes.\n prefix += this.depth.toString(36) + \"$\";\n\n this.scan();\n\n var index = 0;\n while (this.declares(prefix + index)) {\n ++index;\n }\n\n var name = prefix + index;\n return this.bindings[name] = types.builders.identifier(name);\n};\n\nSp.injectTemporary = function(identifier, init) {\n identifier || (identifier = this.declareTemporary());\n\n var bodyPath = this.path.get(\"body\");\n if (namedTypes.BlockStatement.check(bodyPath.value)) {\n bodyPath = bodyPath.get(\"body\");\n }\n\n bodyPath.unshift(\n b.variableDeclaration(\n \"var\",\n [b.variableDeclarator(identifier, init || null)]\n )\n );\n\n return identifier;\n};\n\nSp.scan = function(force) {\n if (force || !this.didScan) {\n for (var name in this.bindings) {\n // Empty out this.bindings, just in cases.\n delete this.bindings[name];\n }\n scanScope(this.path, this.bindings, this.types);\n this.didScan = true;\n }\n};\n\nSp.getBindings = function () {\n this.scan();\n return this.bindings;\n};\n\nSp.getTypes = function () {\n this.scan();\n return this.types;\n};\n\nfunction scanScope(path, bindings, scopeTypes) {\n var node = path.value;\n ScopeType.assert(node);\n\n if (namedTypes.CatchClause.check(node)) {\n // A catch clause establishes a new scope but the only variable\n // bound in that scope is the catch parameter. Any other\n // declarations create bindings in the outer scope.\n addPattern(path.get(\"param\"), bindings);\n\n } else {\n recursiveScanScope(path, bindings, scopeTypes);\n }\n}\n\nfunction recursiveScanScope(path, bindings, scopeTypes) {\n var node = path.value;\n\n if (path.parent &&\n namedTypes.FunctionExpression.check(path.parent.node) &&\n path.parent.node.id) {\n addPattern(path.parent.get(\"id\"), bindings);\n }\n\n if (!node) {\n // None of the remaining cases matter if node is falsy.\n\n } else if (isArray.check(node)) {\n path.each(function(childPath) {\n recursiveScanChild(childPath, bindings, scopeTypes);\n });\n\n } else if (namedTypes.Function.check(node)) {\n path.get(\"params\").each(function(paramPath) {\n addPattern(paramPath, bindings);\n });\n\n recursiveScanChild(path.get(\"body\"), bindings, scopeTypes);\n\n } else if (namedTypes.TypeAlias && namedTypes.TypeAlias.check(node)) {\n addTypePattern(path.get(\"id\"), scopeTypes);\n\n } else if (namedTypes.VariableDeclarator.check(node)) {\n addPattern(path.get(\"id\"), bindings);\n recursiveScanChild(path.get(\"init\"), bindings, scopeTypes);\n\n } else if (node.type === \"ImportSpecifier\" ||\n node.type === \"ImportNamespaceSpecifier\" ||\n node.type === \"ImportDefaultSpecifier\") {\n addPattern(\n // Esprima used to use the .name field to refer to the local\n // binding identifier for ImportSpecifier nodes, but .id for\n // ImportNamespaceSpecifier and ImportDefaultSpecifier nodes.\n // ESTree/Acorn/ESpree use .local for all three node types.\n path.get(node.local ? \"local\" :\n node.name ? \"name\" : \"id\"),\n bindings\n );\n\n } else if (Node.check(node) && !Expression.check(node)) {\n types.eachField(node, function(name, child) {\n var childPath = path.get(name);\n if (! pathHasValue(childPath, child)) {\n throw new Error(\"\");\n }\n recursiveScanChild(childPath, bindings, scopeTypes);\n });\n }\n}\n\nfunction pathHasValue(path, value) {\n if (path.value === value) {\n return true;\n }\n\n // Empty arrays are probably produced by defaults.emptyArray, in which\n // case is makes sense to regard them as equivalent, if not ===.\n if (Array.isArray(path.value) &&\n path.value.length === 0 &&\n Array.isArray(value) &&\n value.length === 0) {\n return true;\n }\n\n return false;\n}\n\nfunction recursiveScanChild(path, bindings, scopeTypes) {\n var node = path.value;\n\n if (!node || Expression.check(node)) {\n // Ignore falsy values and Expressions.\n\n } else if (namedTypes.FunctionDeclaration.check(node)) {\n addPattern(path.get(\"id\"), bindings);\n\n } else if (namedTypes.ClassDeclaration &&\n namedTypes.ClassDeclaration.check(node)) {\n addPattern(path.get(\"id\"), bindings);\n\n } else if (ScopeType.check(node)) {\n if (namedTypes.CatchClause.check(node)) {\n var catchParamName = node.param.name;\n var hadBinding = hasOwn.call(bindings, catchParamName);\n\n // Any declarations that occur inside the catch body that do\n // not have the same name as the catch parameter should count\n // as bindings in the outer scope.\n recursiveScanScope(path.get(\"body\"), bindings, scopeTypes);\n\n // If a new binding matching the catch parameter name was\n // created while scanning the catch body, ignore it because it\n // actually refers to the catch parameter and not the outer\n // scope that we're currently scanning.\n if (!hadBinding) {\n delete bindings[catchParamName];\n }\n }\n\n } else {\n recursiveScanScope(path, bindings, scopeTypes);\n }\n}\n\nfunction addPattern(patternPath, bindings) {\n var pattern = patternPath.value;\n namedTypes.Pattern.assert(pattern);\n\n if (namedTypes.Identifier.check(pattern)) {\n if (hasOwn.call(bindings, pattern.name)) {\n bindings[pattern.name].push(patternPath);\n } else {\n bindings[pattern.name] = [patternPath];\n }\n\n } else if (namedTypes.ObjectPattern &&\n namedTypes.ObjectPattern.check(pattern)) {\n patternPath.get('properties').each(function(propertyPath) {\n var property = propertyPath.value;\n if (namedTypes.Pattern.check(property)) {\n addPattern(propertyPath, bindings);\n } else if (namedTypes.Property.check(property)) {\n addPattern(propertyPath.get('value'), bindings);\n } else if (namedTypes.SpreadProperty &&\n namedTypes.SpreadProperty.check(property)) {\n addPattern(propertyPath.get('argument'), bindings);\n }\n });\n\n } else if (namedTypes.ArrayPattern &&\n namedTypes.ArrayPattern.check(pattern)) {\n patternPath.get('elements').each(function(elementPath) {\n var element = elementPath.value;\n if (namedTypes.Pattern.check(element)) {\n addPattern(elementPath, bindings);\n } else if (namedTypes.SpreadElement &&\n namedTypes.SpreadElement.check(element)) {\n addPattern(elementPath.get(\"argument\"), bindings);\n }\n });\n\n } else if (namedTypes.PropertyPattern &&\n namedTypes.PropertyPattern.check(pattern)) {\n addPattern(patternPath.get('pattern'), bindings);\n\n } else if ((namedTypes.SpreadElementPattern &&\n namedTypes.SpreadElementPattern.check(pattern)) ||\n (namedTypes.SpreadPropertyPattern &&\n namedTypes.SpreadPropertyPattern.check(pattern))) {\n addPattern(patternPath.get('argument'), bindings);\n }\n}\n\nfunction addTypePattern(patternPath, types) {\n var pattern = patternPath.value;\n namedTypes.Pattern.assert(pattern);\n\n if (namedTypes.Identifier.check(pattern)) {\n if (hasOwn.call(types, pattern.name)) {\n types[pattern.name].push(patternPath);\n } else {\n types[pattern.name] = [patternPath];\n }\n\n }\n}\n\nSp.lookup = function(name) {\n for (var scope = this; scope; scope = scope.parent)\n if (scope.declares(name))\n break;\n return scope;\n};\n\nSp.lookupType = function(name) {\n for (var scope = this; scope; scope = scope.parent)\n if (scope.declaresType(name))\n break;\n return scope;\n};\n\nSp.getGlobalScope = function() {\n var scope = this;\n while (!scope.isGlobal)\n scope = scope.parent;\n return scope;\n};\n\nmodule.exports = Scope;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/ast-types/lib/scope.js\n// module id = 7\n// module chunks = 0","var types = require(\"./types\");\nvar NodePath = require(\"./node-path\");\nvar Printable = types.namedTypes.Printable;\nvar isArray = types.builtInTypes.array;\nvar isObject = types.builtInTypes.object;\nvar isFunction = types.builtInTypes.function;\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar undefined;\n\nfunction PathVisitor() {\n if (!(this instanceof PathVisitor)) {\n throw new Error(\n \"PathVisitor constructor cannot be invoked without 'new'\"\n );\n }\n\n // Permanent state.\n this._reusableContextStack = [];\n\n this._methodNameTable = computeMethodNameTable(this);\n this._shouldVisitComments =\n hasOwn.call(this._methodNameTable, \"Block\") ||\n hasOwn.call(this._methodNameTable, \"Line\");\n\n this.Context = makeContextConstructor(this);\n\n // State reset every time PathVisitor.prototype.visit is called.\n this._visiting = false;\n this._changeReported = false;\n}\n\nfunction computeMethodNameTable(visitor) {\n var typeNames = Object.create(null);\n\n for (var methodName in visitor) {\n if (/^visit[A-Z]/.test(methodName)) {\n typeNames[methodName.slice(\"visit\".length)] = true;\n }\n }\n\n var supertypeTable = types.computeSupertypeLookupTable(typeNames);\n var methodNameTable = Object.create(null);\n\n var typeNames = Object.keys(supertypeTable);\n var typeNameCount = typeNames.length;\n for (var i = 0; i < typeNameCount; ++i) {\n var typeName = typeNames[i];\n methodName = \"visit\" + supertypeTable[typeName];\n if (isFunction.check(visitor[methodName])) {\n methodNameTable[typeName] = methodName;\n }\n }\n\n return methodNameTable;\n}\n\nPathVisitor.fromMethodsObject = function fromMethodsObject(methods) {\n if (methods instanceof PathVisitor) {\n return methods;\n }\n\n if (!isObject.check(methods)) {\n // An empty visitor?\n return new PathVisitor;\n }\n\n function Visitor() {\n if (!(this instanceof Visitor)) {\n throw new Error(\n \"Visitor constructor cannot be invoked without 'new'\"\n );\n }\n PathVisitor.call(this);\n }\n\n var Vp = Visitor.prototype = Object.create(PVp);\n Vp.constructor = Visitor;\n\n extend(Vp, methods);\n extend(Visitor, PathVisitor);\n\n isFunction.assert(Visitor.fromMethodsObject);\n isFunction.assert(Visitor.visit);\n\n return new Visitor;\n};\n\nfunction extend(target, source) {\n for (var property in source) {\n if (hasOwn.call(source, property)) {\n target[property] = source[property];\n }\n }\n\n return target;\n}\n\nPathVisitor.visit = function visit(node, methods) {\n return PathVisitor.fromMethodsObject(methods).visit(node);\n};\n\nvar PVp = PathVisitor.prototype;\n\nPVp.visit = function() {\n if (this._visiting) {\n throw new Error(\n \"Recursively calling visitor.visit(path) resets visitor state. \" +\n \"Try this.visit(path) or this.traverse(path) instead.\"\n );\n }\n\n // Private state that needs to be reset before every traversal.\n this._visiting = true;\n this._changeReported = false;\n this._abortRequested = false;\n\n var argc = arguments.length;\n var args = new Array(argc)\n for (var i = 0; i < argc; ++i) {\n args[i] = arguments[i];\n }\n\n if (!(args[0] instanceof NodePath)) {\n args[0] = new NodePath({ root: args[0] }).get(\"root\");\n }\n\n // Called with the same arguments as .visit.\n this.reset.apply(this, args);\n\n try {\n var root = this.visitWithoutReset(args[0]);\n var didNotThrow = true;\n } finally {\n this._visiting = false;\n\n if (!didNotThrow && this._abortRequested) {\n // If this.visitWithoutReset threw an exception and\n // this._abortRequested was set to true, return the root of\n // the AST instead of letting the exception propagate, so that\n // client code does not have to provide a try-catch block to\n // intercept the AbortRequest exception. Other kinds of\n // exceptions will propagate without being intercepted and\n // rethrown by a catch block, so their stacks will accurately\n // reflect the original throwing context.\n return args[0].value;\n }\n }\n\n return root;\n};\n\nPVp.AbortRequest = function AbortRequest() {};\nPVp.abort = function() {\n var visitor = this;\n visitor._abortRequested = true;\n var request = new visitor.AbortRequest();\n\n // If you decide to catch this exception and stop it from propagating,\n // make sure to call its cancel method to avoid silencing other\n // exceptions that might be thrown later in the traversal.\n request.cancel = function() {\n visitor._abortRequested = false;\n };\n\n throw request;\n};\n\nPVp.reset = function(path/*, additional arguments */) {\n // Empty stub; may be reassigned or overridden by subclasses.\n};\n\nPVp.visitWithoutReset = function(path) {\n if (this instanceof this.Context) {\n // Since this.Context.prototype === this, there's a chance we\n // might accidentally call context.visitWithoutReset. If that\n // happens, re-invoke the method against context.visitor.\n return this.visitor.visitWithoutReset(path);\n }\n\n if (!(path instanceof NodePath)) {\n throw new Error(\"\");\n }\n\n var value = path.value;\n\n var methodName = value &&\n typeof value === \"object\" &&\n typeof value.type === \"string\" &&\n this._methodNameTable[value.type];\n\n if (methodName) {\n var context = this.acquireContext(path);\n try {\n return context.invokeVisitorMethod(methodName);\n } finally {\n this.releaseContext(context);\n }\n\n } else {\n // If there was no visitor method to call, visit the children of\n // this node generically.\n return visitChildren(path, this);\n }\n};\n\nfunction visitChildren(path, visitor) {\n if (!(path instanceof NodePath)) {\n throw new Error(\"\");\n }\n if (!(visitor instanceof PathVisitor)) {\n throw new Error(\"\");\n }\n\n var value = path.value;\n\n if (isArray.check(value)) {\n path.each(visitor.visitWithoutReset, visitor);\n } else if (!isObject.check(value)) {\n // No children to visit.\n } else {\n var childNames = types.getFieldNames(value);\n\n // The .comments field of the Node type is hidden, so we only\n // visit it if the visitor defines visitBlock or visitLine, and\n // value.comments is defined.\n if (visitor._shouldVisitComments &&\n value.comments &&\n childNames.indexOf(\"comments\") < 0) {\n childNames.push(\"comments\");\n }\n\n var childCount = childNames.length;\n var childPaths = [];\n\n for (var i = 0; i < childCount; ++i) {\n var childName = childNames[i];\n if (!hasOwn.call(value, childName)) {\n value[childName] = types.getFieldValue(value, childName);\n }\n childPaths.push(path.get(childName));\n }\n\n for (var i = 0; i < childCount; ++i) {\n visitor.visitWithoutReset(childPaths[i]);\n }\n }\n\n return path.value;\n}\n\nPVp.acquireContext = function(path) {\n if (this._reusableContextStack.length === 0) {\n return new this.Context(path);\n }\n return this._reusableContextStack.pop().reset(path);\n};\n\nPVp.releaseContext = function(context) {\n if (!(context instanceof this.Context)) {\n throw new Error(\"\");\n }\n this._reusableContextStack.push(context);\n context.currentPath = null;\n};\n\nPVp.reportChanged = function() {\n this._changeReported = true;\n};\n\nPVp.wasChangeReported = function() {\n return this._changeReported;\n};\n\nfunction makeContextConstructor(visitor) {\n function Context(path) {\n if (!(this instanceof Context)) {\n throw new Error(\"\");\n }\n if (!(this instanceof PathVisitor)) {\n throw new Error(\"\");\n }\n if (!(path instanceof NodePath)) {\n throw new Error(\"\");\n }\n\n Object.defineProperty(this, \"visitor\", {\n value: visitor,\n writable: false,\n enumerable: true,\n configurable: false\n });\n\n this.currentPath = path;\n this.needToCallTraverse = true;\n\n Object.seal(this);\n }\n\n if (!(visitor instanceof PathVisitor)) {\n throw new Error(\"\");\n }\n\n // Note that the visitor object is the prototype of Context.prototype,\n // so all visitor methods are inherited by context objects.\n var Cp = Context.prototype = Object.create(visitor);\n\n Cp.constructor = Context;\n extend(Cp, sharedContextProtoMethods);\n\n return Context;\n}\n\n// Every PathVisitor has a different this.Context constructor and\n// this.Context.prototype object, but those prototypes can all use the\n// same reset, invokeVisitorMethod, and traverse function objects.\nvar sharedContextProtoMethods = Object.create(null);\n\nsharedContextProtoMethods.reset =\nfunction reset(path) {\n if (!(this instanceof this.Context)) {\n throw new Error(\"\");\n }\n if (!(path instanceof NodePath)) {\n throw new Error(\"\");\n }\n\n this.currentPath = path;\n this.needToCallTraverse = true;\n\n return this;\n};\n\nsharedContextProtoMethods.invokeVisitorMethod =\nfunction invokeVisitorMethod(methodName) {\n if (!(this instanceof this.Context)) {\n throw new Error(\"\");\n }\n if (!(this.currentPath instanceof NodePath)) {\n throw new Error(\"\");\n }\n\n var result = this.visitor[methodName].call(this, this.currentPath);\n\n if (result === false) {\n // Visitor methods return false to indicate that they have handled\n // their own traversal needs, and we should not complain if\n // this.needToCallTraverse is still true.\n this.needToCallTraverse = false;\n\n } else if (result !== undefined) {\n // Any other non-undefined value returned from the visitor method\n // is interpreted as a replacement value.\n this.currentPath = this.currentPath.replace(result)[0];\n\n if (this.needToCallTraverse) {\n // If this.traverse still hasn't been called, visit the\n // children of the replacement node.\n this.traverse(this.currentPath);\n }\n }\n\n if (this.needToCallTraverse !== false) {\n throw new Error(\n \"Must either call this.traverse or return false in \" + methodName\n );\n }\n\n var path = this.currentPath;\n return path && path.value;\n};\n\nsharedContextProtoMethods.traverse =\nfunction traverse(path, newVisitor) {\n if (!(this instanceof this.Context)) {\n throw new Error(\"\");\n }\n if (!(path instanceof NodePath)) {\n throw new Error(\"\");\n }\n if (!(this.currentPath instanceof NodePath)) {\n throw new Error(\"\");\n }\n\n this.needToCallTraverse = false;\n\n return visitChildren(path, PathVisitor.fromMethodsObject(\n newVisitor || this.visitor\n ));\n};\n\nsharedContextProtoMethods.visit =\nfunction visit(path, newVisitor) {\n if (!(this instanceof this.Context)) {\n throw new Error(\"\");\n }\n if (!(path instanceof NodePath)) {\n throw new Error(\"\");\n }\n if (!(this.currentPath instanceof NodePath)) {\n throw new Error(\"\");\n }\n\n this.needToCallTraverse = false;\n\n return PathVisitor.fromMethodsObject(\n newVisitor || this.visitor\n ).visitWithoutReset(path);\n};\n\nsharedContextProtoMethods.reportChanged = function reportChanged() {\n this.visitor.reportChanged();\n};\n\nsharedContextProtoMethods.abort = function abort() {\n this.needToCallTraverse = false;\n this.visitor.abort();\n};\n\nmodule.exports = PathVisitor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/ast-types/lib/path-visitor.js\n// module id = 8\n// module chunks = 0","import ast from './ast';\n\nconst capitalize = s => s[0].toUpperCase() + s.slice(1).toLowerCase();\nconst capitalizeClass = s => s.split('::').map(module.exports.capitalize)\n .join('::');\n\nconst regexpEscape = s => String(s).replace(/([-()\\[\\]{}+?*.$\\^|,:#<!\\\\])/g, '\\\\$1');\n\nconst loc = (location) => {\n const b = ast.builders;\n return b.sourceLocation(\n b.position(location.first_line, location.first_column),\n b.position(location.last_line, location.last_column)\n );\n};\n\nconst formatLocation = (astnode) => {\n if (astnode.loc != null) {\n const l = astnode.loc;\n if (l.start.line === l.end.line && l.start.column === l.end.column) {\n return `line ${l.start.line}:${l.start.column}`;\n }\n return `line ${l.start.line}:${l.start.column} - line ${l.end.line}:${l.end.column}`;\n }\n return '';\n};\n\nexport {\n capitalize,\n capitalizeClass,\n regexpEscape,\n loc,\n formatLocation,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/util.js","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,5],$V1=[1,6],$V2=[1,16],$V3=[1,17],$V4=[1,14],$V5=[1,13],$V6=[1,19],$V7=[1,18],$V8=[1,21],$V9=[1,22],$Va=[5,8,9,11,38],$Vb=[1,25],$Vc=[1,26],$Vd=[1,27],$Ve=[1,28],$Vf=[1,29],$Vg=[1,30],$Vh=[1,31],$Vi=[1,32],$Vj=[1,23],$Vk=[5,8,9,11,22,23,24,25,26,27,28,29,34,38],$Vl=[2,25],$Vm=[5,8,9,11,22,23,24,25,26,27,28,29,34,38,40],$Vn=[2,43],$Vo=[20,42,43,44],$Vp=[1,59];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"query\":3,\"expression\":4,\"EOF\":5,\"identifier_path\":6,\"not\":7,\"and\":8,\"or\":9,\"(\":10,\")\":11,\"resource_expression\":12,\"comparison_expression\":13,\"subquery\":14,\"literal\":15,\"boolean\":16,\"string\":17,\"integer\":18,\"float\":19,\"@\":20,\"comparison_op\":21,\"~\":22,\"!~\":23,\"=\":24,\"!=\":25,\">\":26,\">=\":27,\"<\":28,\"<=\":29,\"literal_identifier\":30,\"regexp_identifier\":31,\"*\":32,\"identifier\":33,\".\":34,\"#\":35,\"block_expression\":36,\"{\":37,\"}\":38,\"[\":39,\"]\":40,\"@@\":41,\"Boolean\":42,\"Number\":43,\"String\":44,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",7:\"not\",8:\"and\",9:\"or\",10:\"(\",11:\")\",20:\"@\",22:\"~\",23:\"!~\",24:\"=\",25:\"!=\",26:\">\",27:\">=\",28:\"<\",29:\"<=\",32:\"*\",34:\".\",35:\"#\",37:\"{\",38:\"}\",39:\"[\",40:\"]\",41:\"@@\",42:\"Boolean\",43:\"Number\",44:\"String\"},\nproductions_: [0,[3,2],[3,1],[4,1],[4,2],[4,3],[4,3],[4,3],[4,1],[4,1],[4,1],[15,1],[15,1],[15,1],[15,1],[15,2],[21,1],[21,1],[21,1],[21,1],[21,1],[21,1],[21,1],[21,1],[13,3],[30,1],[30,1],[31,2],[31,1],[33,1],[33,1],[6,1],[6,1],[6,3],[6,3],[14,4],[14,3],[36,3],[12,4],[12,5],[12,5],[12,6],[16,1],[18,1],[17,1],[19,3]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n this.$ = ast.query($$[$0-1]); this.$.loc = loc(this._$); return this.$; \nbreak;\ncase 2:\n this.$ = ast.query(); this.$.loc = loc(this._$); return this.$;\nbreak;\ncase 3:\n this.$ = ast.regexpNodeMatch($$[$0]); this.$.loc = loc(this._$); \nbreak;\ncase 4:\n this.$ = ast.notExpression($$[$0]); this.$.loc = loc(this._$); \nbreak;\ncase 5:\n this.$ = ast.andExpression($$[$0-2], $$[$0]); this.$.loc = loc(this._$); \nbreak;\ncase 6:\n this.$ = ast.orExpression($$[$0-2], $$[$0]); this.$.loc = loc(this._$); \nbreak;\ncase 7:\n this.$ = ast.parentesizedExpression($$[$0-1]); this.$.loc = loc(this._$); \nbreak;\ncase 11:\n this.$ = ast.boolean($$[$0]); this.$.loc = loc(this._$); \nbreak;\ncase 12:\n this.$ = ast.string($$[$0]); this.$.loc = loc(this._$); \nbreak;\ncase 13: case 14:\n this.$ = ast.number($$[$0]); this.$.loc = loc(this._$); \nbreak;\ncase 15:\n this.$ = ast.date($$[$0]); this.$.loc = loc(this._$); \nbreak;\ncase 24:\n this.$ = ast.comparison($$[$0-1], $$[$0-2], $$[$0]); this.$.loc = loc(this._$); \nbreak;\ncase 25: case 26:\n this.$ = ast.identifier($$[$0]); this.$.loc = loc(this._$); \nbreak;\ncase 27:\n this.$ = ast.regexpIdentifier($$[$0]); this.$.loc = loc(this._$); \nbreak;\ncase 28:\n this.$ = ast.regexpIdentifier(\".*\"); this.$.loc = loc(this._$); \nbreak;\ncase 31:\n this.$ = ast.identifierPath([$$[$0]], false); this.$.loc = loc(this._$); \nbreak;\ncase 32:\n this.$ = ast.identifierPath([$$[$0]], true); this.$.loc = loc(this._$); \nbreak;\ncase 33:\n $$[$0-2].components.push($$[$0]); this.$ = $$[$0-2]; this.$.loc = loc(this._$); \nbreak;\ncase 34:\n $$[$0-2].components.push($$[$0]); $$[$0-2].regexp = true; this.$ = $$[$0-2]; this.$.loc = loc(this._$); \nbreak;\ncase 35:\n this.$ = ast.subquery($$[$0-2], $$[$0]); this.$.loc = loc(this._$); \nbreak;\ncase 36:\n this.$ = ast.subquery($$[$0-1], $$[$0]); this.$.loc = loc(this._$); \nbreak;\ncase 37:\n this.$ = ast.blockExpression($$[$0-1]); this.$.loc = loc(this._$); \nbreak;\ncase 38:\n this.$ = ast.resource($$[$0-3], $$[$0-1], false); this.$.loc = loc(this._$); \nbreak;\ncase 39:\n this.$ = ast.resource($$[$0-4], $$[$0-2], false, $$[$0]); this.$.loc = loc(this._$); \nbreak;\ncase 40:\n this.$ = ast.resource($$[$0-3], $$[$0-1], true); this.$.loc = loc(this._$); \nbreak;\ncase 41:\n this.$ = ast.resource($$[$0-4], $$[$0-2], true, $$[$0]); this.$.loc = loc(this._$); \nbreak;\ncase 42:\n this.$ = yytext === 'true' ? true: false; \nbreak;\ncase 43:\n this.$ = parseInt(yytext, 10); \nbreak;\ncase 44:\n this.$ = yytext; \nbreak;\ncase 45:\n this.$ = parseFloat($$[$0-2] + '.' + $$[$0]) \nbreak;\n}\n},\ntable: [{3:1,4:2,5:[1,3],6:4,7:$V0,10:$V1,12:7,13:8,14:9,17:12,18:15,22:$V2,30:10,31:11,32:$V3,35:$V4,41:$V5,43:$V6,44:$V7},{1:[3]},{5:[1,20],8:$V8,9:$V9},{1:[2,2]},o($Va,[2,3],{21:24,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,28:$Vh,29:$Vi,34:$Vj}),{4:33,6:4,7:$V0,10:$V1,12:7,13:8,14:9,17:12,18:15,22:$V2,30:10,31:11,32:$V3,35:$V4,41:$V5,43:$V6,44:$V7},{4:34,6:4,7:$V0,10:$V1,12:7,13:8,14:9,17:12,18:15,22:$V2,30:10,31:11,32:$V3,35:$V4,41:$V5,43:$V6,44:$V7},o($Va,[2,8]),o($Va,[2,9]),o($Va,[2,10]),o($Vk,[2,31]),o($Vk,[2,32]),o($Vk,$Vl,{39:[1,35]}),{17:36,44:$V7},{17:37,44:$V7},o($Vm,[2,26]),{17:38,44:$V7},o($Vm,[2,28]),o([5,8,9,11,22,23,24,25,26,27,28,29,34,37,38,39,40],[2,44]),o($Vm,$Vn),{1:[2,1]},{4:39,6:4,7:$V0,10:$V1,12:7,13:8,14:9,17:12,18:15,22:$V2,30:10,31:11,32:$V3,35:$V4,41:$V5,43:$V6,44:$V7},{4:40,6:4,7:$V0,10:$V1,12:7,13:8,14:9,17:12,18:15,22:$V2,30:10,31:11,32:$V3,35:$V4,41:$V5,43:$V6,44:$V7},{17:43,18:15,22:$V2,30:41,31:42,32:$V3,43:$V6,44:$V7},{15:44,16:45,17:46,18:47,19:48,20:[1,49],42:[1,50],43:[1,51],44:$V7},o($Vo,[2,16]),o($Vo,[2,17]),o($Vo,[2,18]),o($Vo,[2,19]),o($Vo,[2,20]),o($Vo,[2,21]),o($Vo,[2,22]),o($Vo,[2,23]),o($Va,[2,4]),{8:$V8,9:$V9,11:[1,52]},{17:43,18:15,22:$V2,30:54,31:55,32:$V3,33:53,43:$V6,44:$V7},{39:[1,56]},{34:[1,57],36:58,37:$Vp},o($Vm,[2,27]),o($Va,[2,5]),o([5,9,11,38],[2,6],{8:$V8}),o($Vk,[2,33]),o($Vk,[2,34]),o($Vm,$Vl),o($Va,[2,24]),o($Va,[2,11]),o($Va,[2,12]),o($Va,[2,13]),o($Va,[2,14]),{17:60,44:$V7},o($Va,[2,42]),o($Va,$Vn,{34:[1,61]}),o($Va,[2,7]),{40:[1,62]},{40:[2,29]},{40:[2,30]},{17:43,18:15,22:$V2,30:54,31:55,32:$V3,33:63,43:$V6,44:$V7},{6:65,13:64,17:43,18:15,22:$V2,30:10,31:11,32:$V3,43:$V6,44:$V7},o($Va,[2,36]),{4:66,6:4,7:$V0,10:$V1,12:7,13:8,14:9,17:12,18:15,22:$V2,30:10,31:11,32:$V3,35:$V4,41:$V5,43:$V6,44:$V7},o($Va,[2,15]),{43:[1,67]},o($Va,[2,38],{36:68,37:$Vp}),{40:[1,69]},o($Va,[2,35]),{21:24,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,28:$Vh,29:$Vi,34:$Vj},{8:$V8,9:$V9,38:[1,70]},o($Va,[2,45]),o($Va,[2,39]),o($Va,[2,40],{36:71,37:$Vp}),o($Va,[2,37]),o($Va,[2,41])],\ndefaultActions: {3:[2,2],20:[2,1],54:[2,29],55:[2,30]},\nparseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack:\n var lex = function () {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n };\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n var astlib = require('./ast');\n var ast = astlib.builders;\n var evaluator = require('./evaluator');\n var loc = require('./util').loc;\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function (match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin(condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState(condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: /* whitespace no action */ \nbreak;\ncase 1: return 10; \nbreak;\ncase 2: return 11; \nbreak;\ncase 3: return 39; \nbreak;\ncase 4: return 40; \nbreak;\ncase 5: return 37; \nbreak;\ncase 6: return 38; \nbreak;\ncase 7: return 24; \nbreak;\ncase 8: return 25; \nbreak;\ncase 9: return 22; \nbreak;\ncase 10: return 23; \nbreak;\ncase 11: return 29; \nbreak;\ncase 12: return 27; \nbreak;\ncase 13: return 26; \nbreak;\ncase 14: return 28; \nbreak;\ncase 15: return 32; \nbreak;\ncase 16: return 35; \nbreak;\ncase 17: return 7; \nbreak;\ncase 18: return 8; \nbreak;\ncase 19: return 9; \nbreak;\ncase 20: return 42; \nbreak;\ncase 21: return 42; \nbreak;\ncase 22: return 43; \nbreak;\ncase 23: yy_.yytext = eval(yy_.yytext); return 44; \nbreak;\ncase 24: yy_.yytext = eval(yy_.yytext); return 44; \nbreak;\ncase 25: return 34; \nbreak;\ncase 26: return 44; \nbreak;\ncase 27: return 41; \nbreak;\ncase 28: return 20; \nbreak;\ncase 29: return 5; \nbreak;\n}\n},\nrules: [/^(?:\\s+)/,/^(?:\\()/,/^(?:\\))/,/^(?:\\[)/,/^(?:\\])/,/^(?:\\{)/,/^(?:\\})/,/^(?:=)/,/^(?:!=)/,/^(?:~)/,/^(?:!~)/,/^(?:<=)/,/^(?:>=)/,/^(?:>)/,/^(?:<)/,/^(?:\\*)/,/^(?:#)/,/^(?:not\\b)/,/^(?:and\\b)/,/^(?:or\\b)/,/^(?:true\\b)/,/^(?:false\\b)/,/^(?:-?\\d+)/,/^(?:\"(\\\\.|[^\\\\\"])*\")/,/^(?:'(\\\\.|[^\\\\'])*')/,/^(?:\\.)/,/^(?:[-\\w_:\\?]+)/,/^(?:@@)/,/^(?:@)/,/^(?:$)/],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain(args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/parser.jison\n// module id = 10\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process/browser.js\n// module id = 11\n// module chunks = 0","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 12\n// module chunks = 0","import timespec from 'timespec';\nimport { visit } from './ast';\nimport { formatLocation, capitalizeClass, regexpEscape, capitalize } from './util';\n\nconst comparison = (operator, left, right) => {\n if (operator === '!=' || operator === '!~') {\n return ['not', [operator[1], left, right]];\n }\n return [operator, left, right];\n};\n\nexport default (ast) => {\n const mode = ['fact'];\n return visit(ast, {\n visitComparison(path) {\n this.traverse(path);\n // Function to handle negating comparisons\n if (mode[0] === 'fact') {\n return ['in', 'certname',\n ['extract', 'certname',\n ['select_fact_contents',\n ['and',\n path.node.left,\n comparison(path.node.operator, 'value', path.node.right)]]]];\n } else if (mode[0] === 'subquery') {\n let left;\n if (path.node.left.length === 1) {\n left = path.node.left[0];\n } else {\n left = path.node.left;\n }\n return comparison(path.node.operator, left, path.node.right);\n } else if (mode[0] === 'resource') {\n if (path.node.left[0] === 'tag') {\n return comparison(path.node.operator, path.node.left[0], path.node.right);\n }\n return comparison(path.node.operator, ['parameter', path.node.left[0]], path.node.right);\n }\n throw Error(`Unknown mode ${mode}`);\n },\n visitBoolean(path) {\n // returning false to use it as a replacement doesn't work\n path.replace(path.node.value);\n return false;\n },\n visitString(path) {\n return path.node.value;\n },\n visitNumber(path) {\n return path.node.value;\n },\n visitDate(path) {\n try {\n return timespec.parse(path.node.value).toISOString();\n } catch (error) {\n const loc = formatLocation(path.node);\n throw new Error(`Failed to parse date: \"${path.node.value}\" at ${loc}`);\n }\n },\n visitAndExpression(path) {\n this.traverse(path);\n return ['and', path.node.left, path.node.right];\n },\n visitOrExpression(path) {\n this.traverse(path);\n return ['or', path.node.left, path.node.right];\n },\n visitNotExpression(path) {\n this.traverse(path);\n return ['not', path.node.expression];\n },\n visitQuery(path) {\n this.traverse(path);\n return path.node.expression;\n },\n visitParentesizedExpression(path) {\n this.traverse(path);\n return path.node.expression;\n },\n visitBlockExpression(path) {\n this.traverse(path);\n return path.node.expression;\n },\n visitSubquery(path) {\n mode.unshift('subquery');\n this.traverse(path);\n mode.shift();\n return ['in', 'certname',\n ['extract', 'certname',\n [`select_${path.node.endpoint}s`, path.node.expression]]];\n },\n visitRegexpNodeMatch(path) {\n mode.unshift('regexp');\n this.traverse(path);\n mode.shift();\n return ['~', 'certname', regexpEscape(path.node.value.join('.'))];\n },\n visitIdentifierPath(path) {\n this.traverse(path);\n if (mode[0] === 'fact') {\n return [\n (path.node.regexp ? '~>' : '='),\n 'path',\n path.node.components,\n ];\n }\n return path.node.components;\n },\n visitRegexpIdentifier(path) {\n return path.node.name;\n },\n visitIdentifier(path) {\n if (path.parentPath.node.regexp) {\n return regexpEscape(path.node.name);\n }\n return path.node.name;\n },\n visitResource(path) {\n const regexp = (path.node.title.type === 'RegexpIdentifier');\n mode.unshift('resource');\n this.traverse(path);\n mode.shift();\n let { title } = path.node;\n if (!regexp && capitalize(path.node.res_type) === 'Class') {\n title = capitalizeClass(title);\n }\n const andExpr = ['and',\n ['=', 'type', capitalizeClass(path.node.res_type)],\n [(regexp ? '~' : '='), 'title', title],\n ['=', 'exported', path.node.exported]];\n if (path.node.parameters) {\n andExpr.push(path.node.parameters);\n }\n return ['in', 'certname',\n ['extract', 'certname',\n ['select_resources', andExpr]]];\n },\n });\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/evaluator.js","module.exports = (function(){\n /*\n * Generated by PEG.js 0.7.0.\n *\n * http://pegjs.majda.cz/\n */\n \n function quote(s) {\n /*\n * ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a\n * string literal except for the closing quote character, backslash,\n * carriage return, line separator, paragraph separator, and line feed.\n * Any character may appear in the form of an escape sequence.\n *\n * For portability, we also escape escape all control and non-ASCII\n * characters. Note that \"\\0\" and \"\\v\" escape sequences are not used\n * because JSHint does not like the first and IE the second.\n */\n return '\"' + s\n .replace(/\\\\/g, '\\\\\\\\') // backslash\n .replace(/\"/g, '\\\\\"') // closing quote character\n .replace(/\\x08/g, '\\\\b') // backspace\n .replace(/\\t/g, '\\\\t') // horizontal tab\n .replace(/\\n/g, '\\\\n') // line feed\n .replace(/\\f/g, '\\\\f') // form feed\n .replace(/\\r/g, '\\\\r') // carriage return\n .replace(/[\\x00-\\x07\\x0B\\x0E-\\x1F\\x80-\\uFFFF]/g, escape)\n + '\"';\n }\n \n var result = {\n /*\n * Parses the input with a generated parser. If the parsing is successfull,\n * returns a value explicitly or implicitly specified by the grammar from\n * which the parser was generated (see |PEG.buildParser|). If the parsing is\n * unsuccessful, throws |PEG.parser.SyntaxError| describing the error.\n */\n parse: function(input, startRule) {\n var parseFunctions = {\n \"timespec\": parse_timespec,\n \"spec_base\": parse_spec_base,\n \"time_base\": parse_time_base,\n \"hr24clock_hr_min\": parse_hr24clock_hr_min,\n \"time_hour\": parse_time_hour,\n \"time_hour_min\": parse_time_hour_min,\n \"am_pm\": parse_am_pm,\n \"timezone_name\": parse_timezone_name,\n \"date\": parse_date,\n \"concatenated_date\": parse_concatenated_date,\n \"month_name\": parse_month_name,\n \"year_number\": parse_year_number,\n \"day_of_week\": parse_day_of_week,\n \"inc_or_dec\": parse_inc_or_dec,\n \"increment\": parse_increment,\n \"decrement\": parse_decrement,\n \"inc_dec_period\": parse_inc_dec_period,\n \"int1_2digit\": parse_int1_2digit,\n \"int2_or_4digit\": parse_int2_or_4digit,\n \"str5_8digit\": parse_str5_8digit,\n \"integer\": parse_integer,\n \"_\": parse__\n };\n \n if (startRule !== undefined) {\n if (parseFunctions[startRule] === undefined) {\n throw new Error(\"Invalid rule name: \" + quote(startRule) + \".\");\n }\n } else {\n startRule = \"timespec\";\n }\n \n var pos = 0;\n var reportFailures = 0;\n var rightmostFailuresPos = 0;\n var rightmostFailuresExpected = [];\n \n function padLeft(input, padding, length) {\n var result = input;\n \n var padLength = length - input.length;\n for (var i = 0; i < padLength; i++) {\n result = padding + result;\n }\n \n return result;\n }\n \n function escape(ch) {\n var charCode = ch.charCodeAt(0);\n var escapeChar;\n var length;\n \n if (charCode <= 0xFF) {\n escapeChar = 'x';\n length = 2;\n } else {\n escapeChar = 'u';\n length = 4;\n }\n \n return '\\\\' + escapeChar + padLeft(charCode.toString(16).toUpperCase(), '0', length);\n }\n \n function matchFailed(failure) {\n if (pos < rightmostFailuresPos) {\n return;\n }\n \n if (pos > rightmostFailuresPos) {\n rightmostFailuresPos = pos;\n rightmostFailuresExpected = [];\n }\n \n rightmostFailuresExpected.push(failure);\n }\n \n function parse_timespec() {\n var result0, result1, result2;\n var pos0, pos1, pos2;\n \n pos0 = pos;\n pos1 = pos;\n result0 = parse_spec_base();\n if (result0 !== null) {\n pos2 = pos;\n result1 = parse__();\n if (result1 !== null) {\n result2 = parse_inc_or_dec();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, base, tail) {\n if (typeof(tail) === 'object') {\n var count = tail[1]['count'];\n var amount = tail[1]['amount'];\n \n base.setFullYear(base.getFullYear() + (amount.y * count));\n base.setMonth(base.getMonth() + (amount.m * count));\n base.setDate(base.getDate() + (amount.d * count));\n base.setHours(base.getHours() + (amount.h * count));\n base.setMinutes(base.getMinutes() + (amount.i * count));\n }\n \n return base;\n })(pos0, result0[0], result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse_spec_base() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2, pos3;\n \n result0 = parse_date();\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n result0 = parse_time_base();\n if (result0 !== null) {\n pos2 = pos;\n pos3 = pos;\n result1 = parse__();\n if (result1 !== null) {\n result2 = parse_timezone_name();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos3;\n }\n } else {\n result1 = null;\n pos = pos3;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n pos3 = pos;\n result2 = parse__();\n if (result2 !== null) {\n result3 = parse_date();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos3;\n }\n } else {\n result2 = null;\n pos = pos3;\n }\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, t, tail) {\n var utc = false;\n var date = null;\n if (typeof(tail) === 'object') {\n if (typeof(tail[0]) === 'object') {\n utc = true;\n }\n if (typeof(tail[1]) === 'object') {\n date = tail[1][1];\n }\n }\n \n if (utc) {\n t = new Date(Date.UTC(\n t.getFullYear(),\n t.getMonth(),\n t.getDate(),\n t.getHours(),\n t.getMinutes(),\n t.getSeconds(),\n t.getMilliseconds()));\n }\n \n if (date) {\n if (utc) {\n t.setUTCFullYear(date.getFullYear());\n t.setUTCMonth(date.getMonth());\n t.setUTCDate(date.getDate());\n }\n else {\n t.setFullYear(date.getFullYear());\n t.setMonth(date.getMonth());\n t.setDate(date.getDate());\n }\n }\n else {\n /* If no date is specified and the time has already passed, follow\n * the behavior of 'at' and pick the same time tomorrow.\n */\n var now = new Date();\n if (t < now) {\n t.setDate(t.getDate() + 1);\n }\n }\n \n return t;\n })(pos0, result0[0], result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"now\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"NOW\\\"\");\n }\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n return new Date();\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n }\n }\n return result0;\n }\n \n function parse_time_base() {\n var result0, result1, result2;\n var pos0, pos1, pos2;\n \n result0 = parse_hr24clock_hr_min();\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n result0 = parse_time_hour();\n if (result0 !== null) {\n result1 = parse__();\n if (result1 !== null) {\n result2 = parse_am_pm();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, t, offset) {\n t.setHours(t.getHours() + offset);\n \n return t;\n })(pos0, result0[0], result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n result0 = parse_time_hour_min();\n if (result0 !== null) {\n pos2 = pos;\n result1 = parse__();\n if (result1 !== null) {\n result2 = parse_am_pm();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, t, tail) {\n if (typeof(tail) === 'object') {\n t.setHours(t.getHours() + tail[1]);\n }\n \n return t;\n })(pos0, result0[0], result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n if (input.substr(pos, 4).toLowerCase() === \"noon\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"NOON\\\"\");\n }\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n var today = new Date();\n \n today.setHours(12);\n today.setMinutes(0);\n today.setSeconds(0);\n today.setMilliseconds(0);\n \n return today;\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n if (input.substr(pos, 8).toLowerCase() === \"midnight\") {\n result0 = input.substr(pos, 8);\n pos += 8;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"MIDNIGHT\\\"\");\n }\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n var today = new Date();\n \n today.setHours(0);\n today.setMinutes(0);\n today.setSeconds(0);\n today.setMilliseconds(0);\n \n return today;\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n if (input.substr(pos, 7).toLowerCase() === \"teatime\") {\n result0 = input.substr(pos, 7);\n pos += 7;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"TEATIME\\\"\");\n }\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n var today = new Date();\n \n today.setHours(16);\n today.setMinutes(0);\n today.setSeconds(0);\n today.setMilliseconds(0);\n \n return today;\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n }\n }\n }\n }\n }\n return result0;\n }\n \n function parse_hr24clock_hr_min() {\n var result0, result1, result2;\n var pos0, pos1, pos2;\n \n pos0 = pos;\n pos1 = pos;\n pos2 = pos;\n if (/^[0-9]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result0 !== null) {\n if (/^[0-9]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos2;\n }\n } else {\n result0 = null;\n pos = pos2;\n }\n if (result0 !== null) {\n pos2 = pos;\n if (/^[0-9]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result1 !== null) {\n if (/^[0-9]/.test(input.charAt(pos))) {\n result2 = input.charAt(pos);\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, hour, minute) {\n var today = new Date();\n \n today.setHours(parseInt(hour.join(''), 10));\n today.setMinutes(parseInt(minute.join(''), 10));\n today.setSeconds(0);\n today.setMilliseconds(0);\n \n return today;\n })(pos0, result0[0], result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse_time_hour() {\n var result0;\n var pos0;\n \n pos0 = pos;\n result0 = parse_int1_2digit();\n if (result0 !== null) {\n result0 = (function(offset, hour) {\n var today = new Date();\n \n today.setHours(hour);\n today.setMinutes(0);\n today.setSeconds(0);\n today.setMilliseconds(0);\n \n return today;\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse_time_hour_min() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n \n pos0 = pos;\n pos1 = pos;\n pos2 = pos;\n if (/^[012]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[012]\");\n }\n }\n result0 = result0 !== null ? result0 : \"\";\n if (result0 !== null) {\n if (/^[0-9]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos2;\n }\n } else {\n result0 = null;\n pos = pos2;\n }\n if (result0 !== null) {\n if (/^[:'h,.]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[:'h,.]\");\n }\n }\n if (result1 !== null) {\n pos2 = pos;\n if (/^[0-9]/.test(input.charAt(pos))) {\n result2 = input.charAt(pos);\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result2 !== null) {\n if (/^[0-9]/.test(input.charAt(pos))) {\n result3 = input.charAt(pos);\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, hour, minute) {\n var today = new Date();\n \n today.setHours(hour.join(''));\n today.setMinutes(minute.join(''));\n today.setSeconds(0);\n today.setMilliseconds(0);\n \n return today;\n })(pos0, result0[0], result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse_am_pm() {\n var result0;\n var pos0;\n \n pos0 = pos;\n if (input.substr(pos, 2).toLowerCase() === \"am\") {\n result0 = input.substr(pos, 2);\n pos += 2;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"AM\\\"\");\n }\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 12; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n if (input.substr(pos, 2).toLowerCase() === \"pm\") {\n result0 = input.substr(pos, 2);\n pos += 2;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"PM\\\"\");\n }\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 0; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n }\n return result0;\n }\n \n function parse_timezone_name() {\n var result0;\n \n if (input.substr(pos, 3).toLowerCase() === \"utc\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"UTC\\\"\");\n }\n }\n return result0;\n }\n \n function parse_date() {\n var result0, result1, result2, result3, result4, result5;\n var pos0, pos1, pos2, pos3;\n \n pos0 = pos;\n pos1 = pos;\n result0 = parse_month_name();\n if (result0 !== null) {\n result1 = parse__();\n if (result1 !== null) {\n result2 = parse_int1_2digit();\n if (result2 !== null) {\n pos2 = pos;\n pos3 = pos;\n result3 = parse__();\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n if (input.charCodeAt(pos) === 44) {\n result4 = \",\";\n pos++;\n } else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n if (result4 !== null) {\n result3 = [result3, result4];\n } else {\n result3 = null;\n pos = pos3;\n }\n } else {\n result3 = null;\n pos = pos3;\n }\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n result4 = parse__();\n if (result4 !== null) {\n result5 = parse_year_number();\n if (result5 !== null) {\n result3 = [result3, result4, result5];\n } else {\n result3 = null;\n pos = pos2;\n }\n } else {\n result3 = null;\n pos = pos2;\n }\n } else {\n result3 = null;\n pos = pos2;\n }\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, month, day, tail) {\n var now = null;\n \n if (typeof(tail) === 'object') {\n now = new Date(tail[2], month, day);\n }\n else {\n now = new Date(new Date().getFullYear(), month, day);\n }\n \n return now;\n })(pos0, result0[0], result0[2], result0[3]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n result0 = parse_day_of_week();\n if (result0 !== null) {\n result0 = (function(offset, day) {\n var now = new Date();\n \n now.setDate(now.getDate() + (day - now.getDay()));\n \n return now;\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n if (input.substr(pos, 5).toLowerCase() === \"today\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"TODAY\\\"\");\n }\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n var now = new Date();\n \n now.setHours(0);\n now.setMinutes(0);\n now.setSeconds(0);\n now.setMilliseconds(0);\n \n return now;\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n if (input.substr(pos, 8).toLowerCase() === \"tomorrow\") {\n result0 = input.substr(pos, 8);\n pos += 8;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"TOMORROW\\\"\");\n }\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n var now = new Date();\n \n now.setDate(now.getDate() + 1);\n \n return now;\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n if (input.substr(pos, 9).toLowerCase() === \"yesterday\") {\n result0 = input.substr(pos, 9);\n pos += 9;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"YESTERDAY\\\"\");\n }\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n var now = new Date();\n \n now.setDate(now.getDate() - 1);\n \n return now;\n })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n result0 = parse_year_number();\n if (result0 !== null) {\n if (/^[\\-]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\-]\");\n }\n }\n if (result1 !== null) {\n result2 = parse_int1_2digit();\n if (result2 !== null) {\n if (/^[\\-]/.test(input.charAt(pos))) {\n result3 = input.charAt(pos);\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\-]\");\n }\n }\n if (result3 !== null) {\n result4 = parse_int1_2digit();\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, year, month, date) {\n return new Date(year, month - 1, date);\n })(pos0, result0[0], result0[2], result0[4]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n result0 = parse_int1_2digit();\n if (result0 !== null) {\n if (/^[.]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[.]\");\n }\n }\n if (result1 !== null) {\n result2 = parse_int1_2digit();\n if (result2 !== null) {\n if (/^[.]/.test(input.charAt(pos))) {\n result3 = input.charAt(pos);\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"[.]\");\n }\n }\n if (result3 !== null) {\n result4 = parse_year_number();\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, date, month, year) {\n return new Date(year, month - 1, date);\n })(pos0, result0[0], result0[2], result0[4]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n result0 = parse_int1_2digit();\n if (result0 !== null) {\n result1 = parse__();\n if (result1 !== null) {\n result2 = parse_month_name();\n if (result2 !== null) {\n pos2 = pos;\n result3 = parse__();\n if (result3 !== null) {\n result4 = parse_year_number();\n if (result4 !== null) {\n result3 = [result3, result4];\n } else {\n result3 = null;\n pos = pos2;\n }\n } else {\n result3 = null;\n pos = pos2;\n }\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, date, month, tail) {\n var now = null;\n \n if (typeof(tail) === 'object') {\n now = new Date(tail[1], month, date);\n }\n else {\n now = new Date(new Date().getFullYear(), month, date);\n }\n \n return now;\n })(pos0, result0[0], result0[2], result0[3]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n result0 = parse_int1_2digit();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 47) {\n result1 = \"/\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_int1_2digit();\n if (result2 !== null) {\n if (input.charCodeAt(pos) === 47) {\n result3 = \"/\";\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_year_number();\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, month, date, year) {\n return new Date(year, month - 1, date);\n })(pos0, result0[0], result0[2], result0[4]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n result0 = parse_concatenated_date();\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 4).toLowerCase() === \"next\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"NEXT\\\"\");\n }\n }\n if (result0 !== null) {\n pos2 = pos;\n result1 = parse__();\n if (result1 !== null) {\n result2 = parse_integer();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result2 = parse__();\n if (result2 !== null) {\n result3 = parse_inc_dec_period();\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, c, amount) {\n var now = new Date();\n var count = 1;\n \n if (typeof(c) === 'object') {\n count = c[1];\n }\n \n now.setFullYear(now.getFullYear() + (amount.y * count));\n now.setMonth(now.getMonth() + (amount.m * count));\n now.setDate(now.getDate() + (amount.d * count));\n now.setHours(now.getHours() + (amount.h * count));\n now.setMinutes(now.getMinutes() + (amount.i * count));\n \n return now;\n })(pos0, result0[1], result0[3]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 4).toLowerCase() === \"next\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"NEXT\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse__();\n if (result1 !== null) {\n result2 = parse_day_of_week();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, day) {\n var now = new Date();\n \n now.setDate(now.getDate() + (day - now.getDay()) + 7);\n \n return now;\n })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 4).toLowerCase() === \"last\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"LAST\\\"\");\n }\n }\n if (result0 !== null) {\n pos2 = pos;\n result1 = parse__();\n if (result1 !== null) {\n result2 = parse_integer();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result2 = parse__();\n if (result2 !== null) {\n result3 = parse_inc_dec_period();\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, c, amount) {\n var now = new Date();\n var count = 1;\n \n if (typeof(c) === 'object') {\n count = c[1];\n }\n \n now.setFullYear(now.getFullYear() + (amount.y * -count));\n now.setMonth(now.getMonth() + (amount.m * -count));\n now.setDate(now.getDate() + (amount.d * -count));\n now.setHours(now.getHours() + (amount.h * -count));\n now.setMinutes(now.getMinutes() + (amount.i * -count));\n \n return now;\n })(pos0, result0[1], result0[3]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 4).toLowerCase() === \"last\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"LAST\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse__();\n if (result1 !== null) {\n result2 = parse_day_of_week();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, day) {\n var now = new Date();\n \n if (now.getDay() === day) {\n now.setDate(now.getDate() - 7);\n }\n \n now.setDate(now.getDate() + (day - now.getDay()));\n \n return now;\n })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n \n function parse_concatenated_date() {\n var result0;\n var pos0;\n \n pos0 = pos;\n result0 = parse_str5_8digit();\n if (result0 !== null) {\n result0 = (function(offset, digits) {\n var year = 0;\n var month = 0;\n var day = 0;\n \n if (digits.length === 5 || digits.length === 6) { /* YearMonth */\n year = parseInt(digits.slice(0, 4), 10);\n month = parseInt(digits.slice(4), 10) - 1;\n }\n else if (digits.length === 7 || digits.length === 8) { /* YearMonthDay */\n year = parseInt(digits.slice(0, 4), 10);\n month = parseInt(digits.slice(4, 6), 10) - 1;\n day = parseInt(digits.slice(6), 10);\n }\n \n return new Date(year, month, day);\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse_month_name() {\n var result0, result1;\n var pos0, pos1;\n \n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"jan\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"JAN\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 4).toLowerCase() === \"uary\") {\n result1 = input.substr(pos, 4);\n pos += 4;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"UARY\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 0; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"feb\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"FEB\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 5).toLowerCase() === \"ruary\") {\n result1 = input.substr(pos, 5);\n pos += 5;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"RUARY\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 1; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"mar\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"MAR\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 2).toLowerCase() === \"ch\") {\n result1 = input.substr(pos, 2);\n pos += 2;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"CH\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 2; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"apr\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"APR\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 2).toLowerCase() === \"il\") {\n result1 = input.substr(pos, 2);\n pos += 2;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"IL\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 3; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"may\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"MAY\\\"\");\n }\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 4; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"jun\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"JUN\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 1).toLowerCase() === \"e\") {\n result1 = input.substr(pos, 1);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"E\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 5; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"jul\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"JUL\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 1).toLowerCase() === \"y\") {\n result1 = input.substr(pos, 1);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"Y\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 6; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"aug\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"AUG\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 3).toLowerCase() === \"ust\") {\n result1 = input.substr(pos, 3);\n pos += 3;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"UST\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 7; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"sep\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"SEP\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 6).toLowerCase() === \"tember\") {\n result1 = input.substr(pos, 6);\n pos += 6;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"TEMBER\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 8; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"oct\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"OCT\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 4).toLowerCase() === \"ober\") {\n result1 = input.substr(pos, 4);\n pos += 4;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"OBER\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 9; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"nov\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"NOV\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 5).toLowerCase() === \"ember\") {\n result1 = input.substr(pos, 5);\n pos += 5;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"EMBER\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 10; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"dec\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"DEC\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 5).toLowerCase() === \"ember\") {\n result1 = input.substr(pos, 5);\n pos += 5;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"EMBER\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 11; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n \n function parse_year_number() {\n var result0;\n var pos0;\n \n pos0 = pos;\n result0 = parse_int2_or_4digit();\n if (result0 !== null) {\n result0 = (function(offset, year) {\n if (year < 100) {\n return year + 2000;\n }\n \n return year;\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse_day_of_week() {\n var result0, result1;\n var pos0, pos1;\n \n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"sun\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"SUN\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 3).toLowerCase() === \"day\") {\n result1 = input.substr(pos, 3);\n pos += 3;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"DAY\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 0; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"mon\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"MON\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 3).toLowerCase() === \"day\") {\n result1 = input.substr(pos, 3);\n pos += 3;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"DAY\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 1; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"tue\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"TUE\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 4).toLowerCase() === \"sday\") {\n result1 = input.substr(pos, 4);\n pos += 4;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"SDAY\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 2; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"wed\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"WED\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 6).toLowerCase() === \"nesday\") {\n result1 = input.substr(pos, 6);\n pos += 6;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"NESDAY\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 3; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"thu\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"THU\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 5).toLowerCase() === \"rsday\") {\n result1 = input.substr(pos, 5);\n pos += 5;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"RSDAY\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 4; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"fri\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"FRI\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 3).toLowerCase() === \"day\") {\n result1 = input.substr(pos, 3);\n pos += 3;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"DAY\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 5; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"sat\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"SAT\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 5).toLowerCase() === \"urday\") {\n result1 = input.substr(pos, 5);\n pos += 5;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"URDAY\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return 6; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n \n function parse_inc_or_dec() {\n var result0;\n \n result0 = parse_increment();\n if (result0 === null) {\n result0 = parse_decrement();\n }\n return result0;\n }\n \n function parse_increment() {\n var result0, result1, result2, result3, result4;\n var pos0, pos1;\n \n pos0 = pos;\n pos1 = pos;\n if (input.charCodeAt(pos) === 43) {\n result0 = \"+\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse__();\n if (result1 !== null) {\n result2 = parse_integer();\n if (result2 !== null) {\n result3 = parse__();\n if (result3 !== null) {\n result4 = parse_inc_dec_period();\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, count, amount) {\n return { 'count': count, 'amount': amount };\n })(pos0, result0[2], result0[4]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse_decrement() {\n var result0, result1, result2, result3, result4;\n var pos0, pos1;\n \n pos0 = pos;\n pos1 = pos;\n if (input.charCodeAt(pos) === 45) {\n result0 = \"-\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse__();\n if (result1 !== null) {\n result2 = parse_integer();\n if (result2 !== null) {\n result3 = parse__();\n if (result3 !== null) {\n result4 = parse_inc_dec_period();\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, count, amount) {\n return { 'count': count * -1, 'amount': amount };\n })(pos0, result0[2], result0[4]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse_inc_dec_period() {\n var result0, result1;\n var pos0, pos1;\n \n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 6).toLowerCase() === \"minute\") {\n result0 = input.substr(pos, 6);\n pos += 6;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"MINUTE\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 1).toLowerCase() === \"s\") {\n result1 = input.substr(pos, 1);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"S\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return {'y': 0, 'm': 0, 'd': 0, 'h': 0, 'i': 1}; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 4).toLowerCase() === \"hour\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"HOUR\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 1).toLowerCase() === \"s\") {\n result1 = input.substr(pos, 1);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"S\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return {'y': 0, 'm': 0, 'd': 0, 'h': 1, 'i': 0}; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"day\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"DAY\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 1).toLowerCase() === \"s\") {\n result1 = input.substr(pos, 1);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"S\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return {'y': 0, 'm': 0, 'd': 1, 'h': 0, 'i': 0}; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 4).toLowerCase() === \"week\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"WEEK\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 1).toLowerCase() === \"s\") {\n result1 = input.substr(pos, 1);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"S\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return {'y': 0, 'm': 0, 'd': 7, 'h': 0, 'i': 0}; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 5).toLowerCase() === \"month\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"MONTH\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 1).toLowerCase() === \"s\") {\n result1 = input.substr(pos, 1);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"S\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return {'y': 0, 'm': 1, 'd': 0, 'h': 0, 'i': 0}; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 4).toLowerCase() === \"year\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"YEAR\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 1).toLowerCase() === \"s\") {\n result1 = input.substr(pos, 1);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"S\\\"\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) { return {'y': 1, 'm': 0, 'd': 0, 'h': 0, 'i': 0}; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n }\n }\n }\n }\n }\n return result0;\n }\n \n function parse_int1_2digit() {\n var result0, result1;\n var pos0, pos1;\n \n pos0 = pos;\n pos1 = pos;\n if (/^[0-9]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result0 !== null) {\n if (/^[0-9]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, digits) {\n return parseInt(digits.join(''), 10);\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse_int2_or_4digit() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n \n pos0 = pos;\n pos1 = pos;\n if (/^[0-9]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result0 !== null) {\n if (/^[0-9]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result1 !== null) {\n pos2 = pos;\n if (/^[0-9]/.test(input.charAt(pos))) {\n result2 = input.charAt(pos);\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result2 !== null) {\n if (/^[0-9]/.test(input.charAt(pos))) {\n result3 = input.charAt(pos);\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, digits) {\n var value = digits.slice(0, 2).join('');\n \n if (typeof(digits[2]) === 'object') {\n value += digits[2].join('');\n }\n \n return parseInt(value, 10);\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse_str5_8digit() {\n var result0, result1, result2, result3, result4, result5, result6, result7;\n var pos0, pos1, pos2;\n \n pos0 = pos;\n pos1 = pos;\n if (/^[0-9]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result0 !== null) {\n if (/^[0-9]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result1 !== null) {\n if (/^[0-9]/.test(input.charAt(pos))) {\n result2 = input.charAt(pos);\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result2 !== null) {\n if (/^[0-9]/.test(input.charAt(pos))) {\n result3 = input.charAt(pos);\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result3 !== null) {\n if (/^[0-9]/.test(input.charAt(pos))) {\n result4 = input.charAt(pos);\n pos++;\n } else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result4 !== null) {\n pos2 = pos;\n if (/^[0-9]/.test(input.charAt(pos))) {\n result5 = input.charAt(pos);\n pos++;\n } else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result5 !== null) {\n if (/^[0-9]/.test(input.charAt(pos))) {\n result6 = input.charAt(pos);\n pos++;\n } else {\n result6 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result6 !== null) {\n if (/^[0-9]/.test(input.charAt(pos))) {\n result7 = input.charAt(pos);\n pos++;\n } else {\n result7 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result7 !== null) {\n result5 = [result5, result6, result7];\n } else {\n result5 = null;\n pos = pos2;\n }\n } else {\n result5 = null;\n pos = pos2;\n }\n } else {\n result5 = null;\n pos = pos2;\n }\n if (result5 === null) {\n pos2 = pos;\n if (/^[0-9]/.test(input.charAt(pos))) {\n result5 = input.charAt(pos);\n pos++;\n } else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result5 !== null) {\n if (/^[0-9]/.test(input.charAt(pos))) {\n result6 = input.charAt(pos);\n pos++;\n } else {\n result6 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result6 !== null) {\n result5 = [result5, result6];\n } else {\n result5 = null;\n pos = pos2;\n }\n } else {\n result5 = null;\n pos = pos2;\n }\n if (result5 === null) {\n if (/^[0-9]/.test(input.charAt(pos))) {\n result5 = input.charAt(pos);\n pos++;\n } else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n }\n }\n result5 = result5 !== null ? result5 : \"\";\n if (result5 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, digits) {\n var value = digits.slice(0, 5).join('');\n \n if (typeof(digits[5]) === 'object') {\n value += digits[5].join('');\n }\n else {\n value += digits[5];\n }\n \n return value;\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse_integer() {\n var result0, result1;\n var pos0;\n \n pos0 = pos;\n if (/^[0-9]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n if (/^[0-9]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n }\n } else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function(offset, digits) {\n return parseInt(digits.join(''), 10);\n })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse__() {\n var result0, result1;\n \n result0 = [];\n if (/^[\\t\\n\\r _]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\t\\\\n\\\\r _]\");\n }\n }\n while (result1 !== null) {\n result0.push(result1);\n if (/^[\\t\\n\\r _]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\t\\\\n\\\\r _]\");\n }\n }\n }\n return result0;\n }\n \n \n function cleanupExpected(expected) {\n expected.sort();\n \n var lastExpected = null;\n var cleanExpected = [];\n for (var i = 0; i < expected.length; i++) {\n if (expected[i] !== lastExpected) {\n cleanExpected.push(expected[i]);\n lastExpected = expected[i];\n }\n }\n return cleanExpected;\n }\n \n function computeErrorPosition() {\n /*\n * The first idea was to use |String.split| to break the input up to the\n * error position along newlines and derive the line and column from\n * there. However IE's |split| implementation is so broken that it was\n * enough to prevent it.\n */\n \n var line = 1;\n var column = 1;\n var seenCR = false;\n \n for (var i = 0; i < Math.max(pos, rightmostFailuresPos); i++) {\n var ch = input.charAt(i);\n if (ch === \"\\n\") {\n if (!seenCR) { line++; }\n column = 1;\n seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n line++;\n column = 1;\n seenCR = true;\n } else {\n column++;\n seenCR = false;\n }\n }\n \n return { line: line, column: column };\n }\n \n \n var result = parseFunctions[startRule]();\n \n /*\n * The parser is now in one of the following three states:\n *\n * 1. The parser successfully parsed the whole input.\n *\n * - |result !== null|\n * - |pos === input.length|\n * - |rightmostFailuresExpected| may or may not contain something\n *\n * 2. The parser successfully parsed only a part of the input.\n *\n * - |result !== null|\n * - |pos < input.length|\n * - |rightmostFailuresExpected| may or may not contain something\n *\n * 3. The parser did not successfully parse any part of the input.\n *\n * - |result === null|\n * - |pos === 0|\n * - |rightmostFailuresExpected| contains at least one failure\n *\n * All code following this comment (including called functions) must\n * handle these states.\n */\n if (result === null || pos !== input.length) {\n var offset = Math.max(pos, rightmostFailuresPos);\n var found = offset < input.length ? input.charAt(offset) : null;\n var errorPosition = computeErrorPosition();\n \n throw new this.SyntaxError(\n cleanupExpected(rightmostFailuresExpected),\n found,\n offset,\n errorPosition.line,\n errorPosition.column\n );\n }\n \n return result;\n },\n \n /* Returns the parser source code. */\n toSource: function() { return this._source; }\n };\n \n /* Thrown when a parser encounters a syntax error. */\n \n result.SyntaxError = function(expected, found, offset, line, column) {\n function buildMessage(expected, found) {\n var expectedHumanized, foundHumanized;\n \n switch (expected.length) {\n case 0:\n expectedHumanized = \"end of input\";\n break;\n case 1:\n expectedHumanized = expected[0];\n break;\n default:\n expectedHumanized = expected.slice(0, expected.length - 1).join(\", \")\n + \" or \"\n + expected[expected.length - 1];\n }\n \n foundHumanized = found ? quote(found) : \"end of input\";\n \n return \"Expected \" + expectedHumanized + \" but \" + foundHumanized + \" found.\";\n }\n \n this.name = \"SyntaxError\";\n this.expected = expected;\n this.found = found;\n this.message = buildMessage(expected, found);\n this.offset = offset;\n this.line = line;\n this.column = column;\n };\n \n result.SyntaxError.prototype = Error.prototype;\n \n return result;\n})();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/timespec/timespec.js\n// module id = 14\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nexports.extname = function(path) {\n return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/path-browserify/index.js\n// module id = 16\n// module chunks = 0"],"sourceRoot":""}