jcal-zmanim 1.3.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +674 -674
- package/README.md +597 -597
- package/dist/README.md +597 -0
- package/dist/index.cjs +13343 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +927 -0
- package/dist/index.d.ts +927 -0
- package/dist/index.js +3491 -0
- package/dist/index.js.map +1 -0
- package/package.json +52 -50
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/JCal/Sedra.ts","../src/JCal/PirkeiAvos.ts","../src/JCal/Dafyomi.ts","../src/JCal/jDate.ts","../src/JCal/Zmanim.ts","../src/Utils.ts","../src/JCal/Location.ts","../src/Locations.ts","../src/locations.json","../src/ZmanTypes.ts","../src/JCal/Molad.ts","../src/JCal/ZmanimUtils.ts","../src/Notifications.ts"],"names":["israel"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACaA,IAAqB,SAArB,MAAqB,OAAM;AAAA;AAAA;AAAA;AAAA;AAAA,EAMvB,YAAY,IAAUA,SAAgB;AAElC,QAAI,GAAG,UAAU,KAAK,GAAG,OAAO,MAAM,GAAG,OAAOA,UAAS,KAAK,KAAK;AAC/D,WAAK,SAAS,CAAC,OAAM,UAAU,EAAE,CAAC;AAClC;AAAA,IACJ;AAEA,QAAI,aAA2C,CAAC,GAC5C,aAAa,OAAM,cAAc,GAAG,MAAMA,OAAM,GAChD,UAAU,GAAG,KACb,OACA;AAGJ,cAAU,OAAM,iBAAiB,GAAG,UAAU,CAAC;AAE/C,eAAW,UAAU,WAAW,kBAAkB;AAElD,QAAI,WAAW,cAAc,WAAW,WAAW,WAAW,QAAQ;AAClE,YAAM,YAAY,WAAW,WAAW,WAAW,WAAW,SAAS,CAAC;AACxE,UAAI,YAAY,GAAG;AAEf,gBAAS,CAAC,YAAa;AAAA,MAC3B,OACK;AACD,gBAAQ,YAAY;AAAA,MACxB;AAAA,IACJ,OACK;AACD,cAAS,WAAW,aACf,WAAW,WAAW,OAAO,IAC7B;AAAA,IACT;AAEA,QAAI,SAAS,GAAG;AACZ,mBAAa,CAAC,OAAM,UAAU,KAAK,CAAC;AAAA,IACxC,OACK;AACD,YAAM,IAAI,CAAC;AACX,mBAAa,CAAC,OAAM,UAAU,CAAC,GAAG,OAAM,UAAU,IAAI,CAAC,CAAC;AAAA,IAC5D;AACA,SAAK,SAAS;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW;AACP,WAAO,KAAK,OAAO,IAAI,OAAK,EAAE,GAAG,EAAE,KAAK,KAAK;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA,EAKA,cAAc;AACV,WAAO,KAAK,OAAO,IAAI,OAAK,EAAE,GAAG,EAAE,KAAK,KAAK;AAAA,EACjD;AAAA,EAoBA,OAAO,iBAAiB,aAAoB,MAAa;AACrD,WAAO,QAAS,OAAO,eAAe;AAAA,EAC1C;AAAA,EAEA,OAAO,cAAc,MAAaA,SAAgB;AAG9C,QAAI,OAAM,sBAAsB,QAC5B,OAAM,mBAAmB,SAAS,QAClC,OAAM,mBAAmB,WAAWA,SAAQ;AAC5C,aAAO,OAAM;AAAA,IACjB;AAEA,UAAM,eAAe,MAAM,eAAe,IAAI,GAC1C,cAAc,MAAM,cAAc,IAAI,GACtC,cAAc,MAAM,MAAM,MAAM,GAAG,CAAC,GACpC,iBAAiB,KAAK,IAAI,cAAc,CAAC,GACzC,iBAAiB,OAAM,iBAAiB,GAAG,cAAc,CAAC;AAC9D,QAAI,UACA;AAEJ,QAAI,gBAAgB,CAAC;AACjB,iBAAW;AAAA,aACN,CAAC,gBAAgB;AACtB,iBAAW;AAAA;AAEX,iBAAW;AAEf,QAAI,CAAC,MAAM,UAAU,IAAI,GAAG;AACxB,cAAQ,gBAAgB;AAAA,QACpB,KAAK;AACD,cAAI,aAAa,cAAc;AAC3B,qBAAS,OAAM;AAAA,UACnB,WACS,aAAa,YAAY;AAC9B,qBAAS,OAAM;AAAA,UACnB;AACA;AAAA,QAEJ,KAAK;AACD,cAAI,aAAa,cAAc;AAC3B,qBAAS,OAAM;AAAA,UACnB,WACS,aAAa,YAAY;AAC9B,qBAASA,UAAS,OAAM,YAAY,OAAM;AAAA,UAC9C;AACA;AAAA,QAEJ,KAAK;AACD,cAAI,aAAa,WAAW;AACxB,qBAASA,UAAS,OAAM,YAAY,OAAM;AAAA,UAC9C;AACA;AAAA,QAEJ,KAAK;AACD,cAAI,aAAa,WAAW;AACxB,qBAASA,UAAS,OAAM,oBAAoB,OAAM;AAAA,UACtD,WACS,aAAa,YAAY;AAC9B,qBAAS,OAAM;AAAA,UACnB;AACA;AAAA,QAEJ;AACI,gBAAM;AAAA,MACd;AAAA,IACJ,OACsB;AAClB,cAAQ,gBAAgB;AAAA,QACpB,KAAK;AACD,cAAI,aAAa,cAAc;AAC3B,qBAAS,OAAM;AAAA,UACnB,WACS,aAAa,YAAY;AAC9B,qBAASA,UAAS,OAAM,qBAAqB,OAAM;AAAA,UACvD;AACA;AAAA,QAEJ,KAAK;AACD,cAAI,aAAa,cAAc;AAC3B,qBAASA,UAAS,OAAM,wBAAwB,OAAM;AAAA,UAC1D,WACS,aAAa,YAAY;AAC9B,qBAASA,UAAS,OAAM,uBAAuB,OAAM;AAAA,UACzD;AACA;AAAA,QAEJ,KAAK;AACD,cAAI,aAAa,WAAW;AACxB,qBAASA,UAAS,OAAM,uBAAuB,OAAM;AAAA,UACzD;AACA;AAAA,QAEJ,KAAK;AACD,cAAI,aAAa,cAAc;AAC3B,qBAAS,OAAM;AAAA,UACnB,WACS,aAAa,YAAY;AAC9B,qBAAS,OAAM;AAAA,UACnB;AACA;AAAA,QAEJ;AACI,gBAAM;AAAA,MACd;AAAA,IACJ;AAEA,UAAM,SAAS;AAAA,MACX;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA,QAAQA;AAAA,IACZ;AAGA,WAAM,qBAAqB;AAE3B,WAAO;AAAA,EACX;AACJ;AAzMqB,OAgEV,qBAAqG;AAhE3F,OAiEV,YAAY,CAAC,EAAE,KAAK,YAAY,KAAK,uCAAS,GAAG,EAAE,KAAK,SAAS,KAAK,eAAK,GAAG,EAAE,KAAK,cAAc,KAAK,4BAAQ,GAAG,EAAE,KAAK,UAAU,KAAK,2BAAO,GAAG,EAAE,KAAK,eAAe,KAAK,wCAAU,GAAG,EAAE,KAAK,UAAU,KAAK,uCAAS,GAAG,EAAE,KAAK,YAAY,KAAK,2BAAO,GAAG,EAAE,KAAK,cAAc,KAAK,iCAAQ,GAAG,EAAE,KAAK,aAAa,KAAK,2BAAO,GAAG,EAAE,KAAK,WAAW,KAAK,qBAAM,GAAG,EAAE,KAAK,YAAY,KAAK,2BAAO,GAAG,EAAE,KAAK,WAAW,KAAK,2BAAO,GAAG,EAAE,KAAK,UAAU,KAAK,2BAAO,GAAG,EAAE,KAAK,UAAW,KAAK,2BAAO,GAAG,EAAE,KAAK,MAAM,KAAK,eAAK,GAAG,EAAE,KAAK,aAAa,KAAK,2BAAO,GAAG,EAAE,KAAK,SAAS,KAAK,2BAAO,GAAG,EAAE,KAAK,aAAa,KAAK,uCAAS,GAAG,EAAE,KAAK,WAAW,KAAK,iCAAQ,GAAG,EAAE,KAAK,YAAY,KAAK,2BAAO,GAAG,EAAE,KAAK,WAAW,KAAK,kCAAS,GAAG,EAAE,KAAK,YAAY,KAAK,iCAAQ,GAAG,EAAE,KAAK,WAAW,KAAK,iCAAQ,GAAG,EAAE,KAAK,WAAW,KAAK,iCAAQ,GAAG,EAAE,KAAK,QAAQ,KAAK,eAAK,GAAG,EAAE,KAAK,UAAU,KAAK,iCAAQ,GAAG,EAAE,KAAK,UAAU,KAAK,iCAAQ,GAAG,EAAE,KAAK,WAAW,KAAK,iCAAQ,GAAG,EAAE,KAAK,cAAc,KAAK,8CAAW,GAAG,EAAE,KAAK,YAAY,KAAK,uCAAS,GAAG,EAAE,KAAK,QAAQ,KAAK,2BAAO,GAAG,EAAE,KAAK,SAAS,KAAK,qBAAM,GAAG,EAAE,KAAK,cAAc,KAAK,uCAAS,GAAG,EAAE,KAAK,YAAY,KAAK,iCAAQ,GAAG,EAAE,KAAK,SAAS,KAAK,qBAAM,GAAG,EAAE,KAAK,gBAAiB,KAAK,uCAAS,GAAG,EAAE,KAAK,WAAY,KAAK,qBAAM,GAAG,EAAE,KAAK,UAAU,KAAK,qBAAM,GAAG,EAAE,KAAK,UAAU,KAAK,qBAAM,GAAG,EAAE,KAAK,SAAS,KAAK,qBAAM,GAAG,EAAE,KAAK,WAAW,KAAK,iCAAQ,GAAG,EAAE,KAAK,SAAS,KAAK,2BAAO,GAAG,EAAE,KAAK,SAAS,KAAK,2BAAO,GAAG,EAAE,KAAK,WAAW,KAAK,iCAAQ,GAAG,EAAE,KAAK,eAAgB,KAAK,uCAAS,GAAG,EAAE,KAAK,SAAS,KAAK,qBAAM,GAAG,EAAE,KAAK,SAAU,KAAK,qBAAM,GAAG,EAAE,KAAK,WAAW,KAAK,uCAAS,GAAG,EAAE,KAAK,cAAc,KAAK,kCAAS,GAAG,EAAE,KAAK,WAAW,KAAK,kCAAS,GAAG,EAAE,KAAK,YAAY,KAAK,iCAAQ,GAAG,EAAE,KAAK,aAAa,KAAK,2BAAO,GAAG,EAAE,KAAK,YAAa,KAAK,uCAAS,GAAG,EAAE,KAAK,kBAAkB,KAAK,0DAAa,CAAC;AAjE/yD,OAkEV,gBAAgB,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAlE5M,OAmEV,eAAe,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG;AAnE5M,OAoEV,YAAY,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG;AApErM,OAqEV,WAAW,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG;AArErM,OAsEV,aAAa,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAtEzM,OAuEV,oBAAoB,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAvE/M,OAwEV,WAAW,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAxEtM,OAyEV,qBAAqB,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG;AAzE9N,OA0EV,oBAAoB,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG;AA1E9N,OA2EV,iBAAiB,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG;AA3EvN,OA4EV,wBAAwB,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG;AA5E7N,OA6EV,gBAAgB,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AA7ExN,OA8EV,uBAAuB,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AA9E9N,OA+EV,iBAAiB,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AA/ExN,OAgFV,gBAAgB,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG;AAhF7O,IAAqB,QAArB;;;ACDA,IAAqB,cAArB,MAAqB,YAAW;AAAA,EAC5B,OAAO,UAAU,IAAUA,SAAgB;AACvC,QAAI,GAAG,aAAa,MAAM,GAAG;AACzB,aAAO,CAAC;AAAA,IACZ;AAEA,UAAM,SAAS,GAAG,OACd,OAAO,GAAG;AAGd,QAAK,WAAW,KAAK,QAAQA,UAAS,KAAK;AAAA,IAErC,SAAS,KAAK,SAAS,KACpB,EAAG,WAAW,KAAK,SAAS,KAAO,CAACA,WAAU,WAAW,KAAK,SAAS,MACvE,EAAE,WAAW,KAAK,SAAS,IAAO;AACvC,aAAO,CAAC,YAAW,aAAa,IAAIA,OAAM,CAAC;AAAA,IAC/C,WAES,WAAW,GAAG;AACnB,aAAO,YAAW,OAAO,IAAIA,OAAM;AAAA,IACvC,OAEK;AACD,aAAO,CAAC;AAAA,IACZ;AAAA,EACJ;AA8IJ;AAvKqB,YA0BV,eAAe,SAAU,IAAUA,SAAgB;AACtD,QAAM,QAAQ,GAAG,MACb,SAAS,GAAG,OACZ,OAAO,GAAG,KACV,OAAO,IAAI,MAAM,OAAO,GAAG,EAAE,GAE7B,QAAQA,UAAS,IAAI,MAAM,IAAI,KAAK,aAAa,IAEjD,OAAS,WAAW,KAAK,SAAU,OAAO,KAAO,IAC7C,MAAM,OAAO,GAAG,OAAO,KAAK,MAAM,SAAS,CAAC,IAAI;AACxD,MAAI,MAAM,OAAO;AACjB,MAAI,QAAQ;AAAG,UAAM;AAKrB,MAAK,CAACA,WAAW,KAAK,aAAa,MAAM,MAAM,SAAS,KAAM,WAAW,KAAK,OAAO,IAAK;AACtF,UAAM,QAAQ,IAAI,IAAI,MAAM;AAAA,EAChC;AAEA,MAAI,KAAK,aAAa,MAAM,MAAM,SAAS,KAAM,WAAW,KAAK,OAAO,IAAK;AACzE,UAAM,QAAQ,IAAI,IAAI,MAAM;AAAA,EAChC;AAEA,SAAO;AACX;AAnDiB,YAoDV,SAAS,SAAU,IAAUA,SAAgB;AAChD,MAAI;AACJ,QAAM,QAAQ,GAAG,MACb,OAAO,GAAG,KAGV,OAAO,IAAI,MAAM,OAAO,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC,GACjD,UAAU,KAAK,aAAa,GAC5B,cAAc,YAAY,IAAI,IAAM,KAAK,UAAU,KAAK,IAAK,GAC7D,eAAe,IAAI,MAAM,OAAO,GAAG,aAAa,KAAK,MAAM,cAAc,CAAC,GAE1E,OAAO,SAAS,cAAc,IAAI,MAAM,OAAO,OAAO,eAAe,CAAC,IAAI;AAE9E,UAAQ,YAAW,aAAa,cAAcA,OAAM,GAAG;AAAA,IACnD,KAAK;AACD,cAAQ,MAAM;AAAA,QACV,KAAK;AACD,mBAAS,CAAC,CAAC;AACX;AAAA,QACJ,KAAK;AACD,mBAAS,CAAC,CAAC;AACX;AAAA,QACJ,KAAK;AACD,mBAAS,CAAC,GAAG,CAAC;AACd;AAAA,QACJ,KAAK;AACD,mBAAS,CAAC,GAAG,CAAC;AACd;AAAA,MACR;AACA;AAAA,IACJ,KAAK;AACD,cAAQ,MAAM;AAAA,QACV,KAAK;AACD,mBAAS,CAAC,CAAC;AACX;AAAA,QACJ,KAAK;AACD,mBAAS,CAAC,CAAC;AACX;AAAA,QACJ,KAAK;AACD,mBAAS,CAAC,CAAC;AACX;AAAA,QACJ,KAAK;AACD,mBAAS,CAAC,GAAG,CAAC;AACd;AAAA,MACR;AACA;AAAA,IACJ,KAAK;AACD,cAAQ,MAAM;AAAA,QACV,KAAK;AACD,mBAAS,CAAC,CAAC;AACX;AAAA,QACJ,KAAK;AACD,mBAAS,CAAC,CAAC;AACX;AAAA,QACJ,KAAK;AACD,mBAAS,CAAC,CAAC;AACX;AAAA,QACJ,KAAK;AACD,mBAAS,CAAC,CAAC;AACX;AAAA,MACR;AACA;AAAA,IACJ,KAAK;AAED,cAAQ,MAAM;AAAA,QACV,KAAK;AACD,mBAAS,CAAC,GAAG,CAAC;AACd;AAAA,QACJ,KAAK;AACD,mBAAS,CAAC,GAAG,CAAC;AACd;AAAA,QACJ,KAAK;AACD,mBAAS,CAAC,GAAG,CAAC;AACd;AAAA,QACJ,KAAK;AACD,mBAAS,CAAC,GAAG,GAAG,CAAC;AACjB;AAAA,MACR;AACA;AAAA,IACJ,KAAK;AACD,cAAQ,MAAM;AAAA,QACV,KAAK;AACD,mBAAS,CAAC,GAAG,CAAC;AACd;AAAA,QACJ,KAAK;AACD,mBAAS,CAAC,GAAG,CAAC;AACd;AAAA,QACJ,KAAK;AACD,mBAAS,CAAC,GAAG,CAAC;AACd;AAAA,QACJ,KAAK;AACD,mBAAS,CAAC,GAAG,CAAC;AACd;AAAA,MACR;AACA;AAAA,IACJ,KAAK;AACD,cAAQ,MAAM;AAAA,QACV,KAAK;AACD,mBAAS,CAAC,CAAC;AACX;AAAA,QACJ,KAAK;AACD,mBAAS,CAAC,GAAG,CAAC;AACd;AAAA,QACJ,KAAK;AACD,mBAAS,CAAC,GAAG,CAAC;AACd;AAAA,QACJ,KAAK;AACD,mBAAS,CAAC,GAAG,CAAC;AACd;AAAA,MACR;AACA;AAAA,EACR;AAEA,SAAO,UAAU,CAAC;AACtB;AAtKJ,IAAqB,aAArB;;;ACCA,IAAqB,WAArB,MAAqB,SAAQ;AAAA,EA2CzB,OAAO,OAAO,OAA4F;AACtG,UAAM,eAAe,MAAM;AAC3B,QAAI,SAAS,IAAI,KAAa,KAAa,OAAe,OAAe,OAAe,OAAe,GAAW;AAElH,YAAQ,MAAM,MAAM,IAAI,KAAK,MAAM,GAAG,EAAE,CAAC;AACzC,YAAQ,MAAM,MAAM,IAAI,KAAK,MAAM,GAAG,EAAE,CAAC;AAGzC,QAAI,eAAe;AACf,aAAO;AACX,QAAI,gBAAgB,OAAO;AACvB,YAAM,IAAI,MAAM,OAAQ,eAAe,SAAS,IAAK;AACrD,aAAO,eAAe,SAAS;AAAA,IACnC,OACK;AACD,YAAM,IAAI,MAAM,OAAO,eAAe,SAAS,IAAI;AACnD,YAAM,MAAM,OAAO,eAAe,SAAS,IAAI;AAAA,IACnD;AAGA,YAAQ,QAAQ;AAChB,YAAQ;AAGR,QAAI,OAAO;AACP,eAAQ,aAAa,CAAC,EAAE,MAAM;AAAA;AAE9B,eAAQ,aAAa,CAAC,EAAE,MAAM;AAGlC,QAAI;AACJ,WAAO,IAAI,QAAQ;AACf;AACA,cAAQ,QAAQ,SAAQ,aAAa,CAAC,EAAE,MAAM;AAC9C,UAAI,MAAM,OAAO;AACb,gBAAS,SAAQ,aAAa,CAAC,EAAE,MAAM,KAAM,QAAQ;AAErD,gBAAQ,OAAO;AAAA,UACX,KAAK;AACD,oBAAQ,QAAQ;AAChB;AAAA,UACJ,KAAK;AACD,oBAAQ,QAAQ;AAChB;AAAA,UACJ,KAAK;AACD,oBAAQ,QAAQ;AAChB;AAAA,UACJ;AACI;AAAA,QACR;AAEA,YAAI,IAAI;AAAA,MACZ;AACA;AAAA,IACJ;AAEA,WAAO;AAAA,MACH,UAAU,SAAQ,aAAa,KAAK;AAAA,MACpC,KAAK;AAAA,IACT;AAAA,EACJ;AAAA;AAAA,EAGA,OAAO,SAAS,IAA+B;AAC3C,UAAM,IAAI,SAAQ,OAAO,EAAE;AAC3B,QAAI,MAAM,MAAM;AACZ,aAAO,EAAE,SAAS,MAAM,WAAW,EAAE,IAAI,SAAS;AAAA,IACtD;AAAA,EACJ;AAAA;AAAA,EAGA,OAAO,YAAY,IAA+B;AAC9C,UAAM,IAAI,SAAQ,OAAO,EAAE;AAC3B,QAAI,MAAM,MAAM;AACZ,aAAO,EAAE,SAAS,MAAM,mBAAS,MAAM,eAAe,EAAE,GAAG;AAAA,IAC/D;AAAA,EACJ;AACJ;AAxHqB,SACV,eAAe;AAAA,EAClB,EAAE,KAAK,YAAY,KAAK,kCAAS,KAAK,GAAG;AAAA,EACzC,EAAE,KAAK,WAAW,KAAK,sBAAO,KAAK,IAAI;AAAA,EACvC,EAAE,KAAK,UAAU,KAAK,wCAAU,KAAK,IAAI;AAAA,EACzC,EAAE,KAAK,YAAY,KAAK,kCAAS,KAAK,IAAI;AAAA,EAC1C,EAAE,KAAK,YAAY,KAAK,kCAAS,KAAK,GAAG;AAAA,EACzC,EAAE,KAAK,QAAQ,KAAK,4BAAQ,KAAK,GAAG;AAAA,EACpC,EAAE,KAAK,UAAU,KAAK,4BAAQ,KAAK,GAAG;AAAA,EACtC,EAAE,KAAK,WAAW,KAAK,4BAAQ,KAAK,GAAG;AAAA,EACvC,EAAE,KAAK,gBAAgB,KAAK,+CAAY,KAAK,GAAG;AAAA,EAChD,EAAE,KAAK,UAAU,KAAK,kCAAS,KAAK,GAAG;AAAA,EACvC,EAAE,KAAK,YAAY,KAAK,kCAAS,KAAK,GAAG;AAAA,EACzC,EAAE,KAAK,cAAc,KAAK,+CAAY,KAAK,GAAG;AAAA,EAC9C,EAAE,KAAK,YAAY,KAAK,kCAAS,KAAK,GAAG;AAAA,EACzC,EAAE,KAAK,WAAW,KAAK,kCAAS,KAAK,IAAI;AAAA,EACzC,EAAE,KAAK,WAAW,KAAK,wCAAU,KAAK,IAAI;AAAA,EAC1C,EAAE,KAAK,WAAW,KAAK,kCAAS,KAAK,GAAG;AAAA,EACxC,EAAE,KAAK,SAAS,KAAK,4BAAQ,KAAK,GAAG;AAAA,EACrC,EAAE,KAAK,SAAS,KAAK,4BAAQ,KAAK,GAAG;AAAA,EACrC,EAAE,KAAK,SAAS,KAAK,kCAAS,KAAK,GAAG;AAAA,EACtC,EAAE,KAAK,aAAa,KAAK,wCAAU,KAAK,GAAG;AAAA,EAC3C,EAAE,KAAK,cAAc,KAAK,yCAAW,KAAK,IAAI;AAAA,EAC9C,EAAE,KAAK,eAAe,KAAK,qDAAa,KAAK,IAAI;AAAA,EACjD,EAAE,KAAK,cAAc,KAAK,+CAAY,KAAK,IAAI;AAAA,EAC/C,EAAE,KAAK,aAAa,KAAK,8CAAW,KAAK,IAAI;AAAA,EAC7C,EAAE,KAAK,UAAU,KAAK,4BAAQ,KAAK,GAAG;AAAA,EACtC,EAAE,KAAK,WAAW,KAAK,wCAAU,KAAK,GAAG;AAAA,EACzC,EAAE,KAAK,gBAAgB,KAAK,qDAAa,KAAK,GAAG;AAAA,EACjD,EAAE,KAAK,WAAW,KAAK,wCAAU,KAAK,GAAG;AAAA,EACzC,EAAE,KAAK,YAAY,KAAK,kCAAS,KAAK,IAAI;AAAA,EAC1C,EAAE,KAAK,YAAY,KAAK,kCAAS,KAAK,IAAI;AAAA,EAC1C,EAAE,KAAK,WAAW,KAAK,kCAAS,KAAK,IAAI;AAAA,EACzC,EAAE,KAAK,YAAY,KAAK,wCAAU,KAAK,GAAG;AAAA,EAC1C,EAAE,KAAK,WAAW,KAAK,kCAAS,KAAK,GAAG;AAAA,EACxC,EAAE,KAAK,WAAW,KAAK,kCAAS,KAAK,GAAG;AAAA,EACxC,EAAE,KAAK,WAAW,KAAK,wCAAU,KAAK,GAAG;AAAA,EACzC,EAAE,KAAK,UAAU,KAAK,kCAAS,KAAK,GAAG;AAAA,EACvC,EAAE,KAAK,UAAU,KAAK,4BAAQ,KAAK,EAAE;AAAA,EACrC,EAAE,KAAK,SAAS,KAAK,4BAAQ,KAAK,GAAG;AAAA,EACrC,EAAE,KAAK,SAAS,KAAK,4BAAQ,KAAK,EAAE;AAAA,EACpC,EAAE,KAAK,UAAU,KAAK,sBAAO,KAAK,GAAG;AAAC;AAzC9C,IAAqB,UAArB;;;ACLA,IAAM,aAAmD,CAAC;AAA1D,IAEE,oBAAoB;AAFtB,IAIE,aAAa;AAJf,IAME,mBAAkB,oBAAI,KAAK,CAAC,GAAE,kBAAkB;AAQlD,IAAqB,QAArB,MAAqB,OAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAwBzB,YACE,KAMA,OACA,KACA,KACA;AAEA,SAAK,MAAM;AAEX,SAAK,QAAQ;AAEb,SAAK,OAAO;AAEZ,SAAK,MAAM;AAEX,QAAI,UAAU,WAAW,GAAG;AAC1B,WAAK,QAAQ,OAAM,MAAM,oBAAI,KAAK,CAAC,CAAC;AAAA,IACtC,WAAW,eAAe,MAAM;AAC9B,UAAI,MAAM,YAAY,GAAG,GAAG;AAC1B,aAAK,QAAQ,OAAM,MAAM,GAAG,CAAC;AAAA,MAC/B,OAAO;AACL,cAAM;AAAA,MACR;AAAA,IACF,WAAW,MAAM,QAAQ,GAAG,KAAK,IAAI,UAAU,GAAG;AAChD,WAAK,MAAM,IAAI,CAAC;AAChB,WAAK,QAAQ,IAAI,CAAC;AAClB,WAAK,OAAO,IAAI,CAAC;AACjB,WAAK,MAAO,IAAI,SAAS,KAAK,IAAI,CAAC,KAAM,OAAM,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,GAAG;AAAA,IACtF,WAAW,OAAO,MAAM,SAAS,GAAG,GAAG;AACrC,YAAM,IAAI,IAAI,KAAK,GAAa;AAChC,UAAI,MAAM,YAAY,CAAC,GAAG;AACxB,aAAK,QAAQ,OAAM,MAAM,CAAC,CAAC;AAAA,MAC7B,OAAO;AACL,cAAM,0CAA0C,MAAM;AAAA,MACxD;AAAA,IACF,WAAW,MAAM,SAAS,GAAG,GAAG;AAE9B,UAAI,UAAU,WAAW,GAAG;AAC1B,aAAK,QAAQ,GAAa;AAAA,MAC5B,OAEK;AACH,aAAK,OAAO;AACZ,aAAK,QAAQ,SAAS;AACtB,aAAK,MAAM,OAAO;AAElB,aAAK,MAAM,OAAO,OAAM,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,GAAG;AAAA,MAC/D;AAAA,IACF,WAES,OAAO,QAAQ,UAAU;AAChC,YAAM,SAAS;AACf,UAAI,MAAM,SAAS,OAAO,IAAI,GAAG;AAC/B,aAAK,MAAM,OAAO,OAAO;AACzB,aAAK,QAAQ,OAAO,SAAS;AAC7B,aAAK,OAAO,OAAO;AACnB,aAAK,MAAM,OAAO,OAAO,OAAM,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,GAAG;AAAA,MACtE;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAGA,QAAQ,UAAkB;AACxB,UAAM,MAAM,OAAM,QAAQ,QAAQ;AAClC,SAAK,OAAO,IAAI;AAChB,SAAK,QAAQ,IAAI;AACjB,SAAK,MAAM,IAAI;AACf,SAAK,MAAM;AAAA,EACb;AAAA;AAAA;AAAA,EAIA,UAAgB;AACd,WAAO,OAAM,UAAU,KAAK,GAAG;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAIA,eAAuB;AACrB,WAAO,KAAK,IAAI,KAAK,MAAM,CAAC;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,YAAoB;AACtB,WAAO,KAAK,aAAa;AAAA,EAC3B;AAAA;AAAA,EAEA,QAAQ,MAAqB;AAC3B,WAAO,IAAI,OAAM,KAAK,MAAM,IAAI;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,UAAU,QAAuB;AAC/B,QAAI,OAAO,KAAK,MACd,QAAQ,KAAK,OACb,MAAM,KAAK,KACX,MAAM,OAAM,YAAY,IAAI;AAE9B,aAAS,IAAI,GAAG,IAAI,KAAK,IAAI,MAAM,GAAG,KAAK;AACzC,UAAI,SAAS,GAAG;AACd,iBAAS;AACT,YAAI,QAAQ,KAAK;AACf,kBAAQ;AAAA,QACV;AACA,YAAI,UAAU,GAAG;AACf,kBAAQ;AACR,gBAAM,OAAM,YAAY,IAAI;AAAA,QAC9B;AAAA,MACF,WAAW,SAAS,GAAG;AACrB,iBAAS;AACT,YAAI,UAAU,GAAG;AACf,kBAAQ;AAAA,QACV;AACA,YAAI,UAAU,GAAG;AACf,kBAAQ;AACR,gBAAM,OAAM,YAAY,IAAI;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AACA,QAAI,QAAQ,MAAM,OAAM,WAAW,MAAM,KAAK,MAAM,IAAI;AACtD,YAAM;AAAA,IACR;AAEA,WAAO,IAAI,OAAM,MAAM,OAAO,GAAG;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,SAAS,OAAsB;AAC7B,QAAI,OAAO,KAAK,OAAO,OACrB,QAAQ,KAAK,OACb,MAAM,KAAK;AAEb,QAAI,UAAU,MAAM,CAAC,OAAM,UAAU,IAAI,GAAG;AAC1C,cAAQ;AAAA,IACV,WAAW,UAAU,KAAK,QAAQ,MAAM,CAAC,OAAM,eAAe,IAAI,GAAG;AACnE,cAAQ;AACR,YAAM;AAAA,IACR,WAAW,UAAU,KAAK,QAAQ,MAAM,OAAM,cAAc,IAAI,GAAG;AACjE,cAAQ;AACR,YAAM;AAAA,IACR;AAEA,QAAI,QAAQ,MAAM,OAAM,WAAW,MAAM,KAAK,MAAM,IAAI;AACtD,YAAM;AAAA,IACR;AAEA,WAAO,IAAI,OAAM,MAAM,OAAO,GAAG;AAAA,EACnC;AAAA,EACA,iBAAiB,QAAuB;AACtC,UAAM,UAAU,IAAI,KAAK,KAAK,QAAQ,EAAE,QAAQ,CAAC;AACjD,YAAQ,SAAS,QAAQ,SAAS,IAAI,MAAM;AAC5C,WAAO,IAAI,OAAM,OAAO;AAAA,EAC1B;AAAA,EACA,gBAAgB,OAAsB;AACpC,UAAM,UAAU,IAAI,KAAK,KAAK,QAAQ,EAAE,QAAQ,CAAC;AACjD,YAAQ,YAAY,QAAQ,YAAY,IAAI,KAAK;AACjD,WAAO,IAAI,OAAM,OAAO;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS,IAAmB;AAC1B,WAAO,GAAG,MAAM,KAAK;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,WAAW,IAAmB;AAC5B,QAAI,QAAQ,GAAG,OACb,OAAO,GAAG,MACV,SAAS;AAEX,WAAO,EAAE,SAAS,KAAK,QAAQ,UAAU,KAAK,QAAQ;AACpD,UAAI,KAAK,MAAM,GAAG,KAAK;AACrB;AACA;AACA,YAAI,QAAQ,OAAM,YAAY,IAAI,GAAG;AACnC,kBAAQ;AAAA,QACV,WAAW,UAAU,GAAG;AACtB;AAAA,QACF;AAAA,MACF,OAAO;AACL;AACA;AACA,YAAI,QAAQ,GAAG;AACb,kBAAQ,OAAM,YAAY,IAAI;AAAA,QAChC,WAAW,UAAU,GAAG;AACtB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAe,IAAmB;AAChC,QAAI,SAAS,KAAK,WAAW,EAAE;AAC/B,QAAI,UAAU,KAAK,KAAK,MAAM,GAAG,KAAK;AACpC;AAAA,IACF,WAAW,SAAS,KAAK,KAAK,MAAM,GAAG,KAAK;AAC1C;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,UAAU,IAAmB;AAC3B,QAAI,OAAO,GAAG,OAAO,KAAK;AAC1B,QAAI,KAAK,QAAQ,GAAG,SAAU,KAAK,UAAU,GAAG,SAAS,KAAK,MAAM,GAAG,KAAM;AAC3E;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,cAAc,IAAmB;AAC/B,QAAI,OAAO,GAAG,OAAO,KAAK;AAC1B,QAAI,QAAQ,MAAM,KAAK,QAAQ,GAAG,SAAU,KAAK,UAAU,GAAG,SAAS,KAAK,MAAM,GAAG,MAAO;AAC1F;AAAA,IACF,WACE,OAAO,MACN,KAAK,QAAQ,GAAG,SAAU,KAAK,UAAU,GAAG,SAAS,KAAK,MAAM,GAAG,MACpE;AACA;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,eAAyB,gBAAkC;AAClE,YACG,gBAAiB,iBAAiB,MAAM,MAAO,cAAc,KAAK,aAAa,CAAC,IAAI,SACrF,QACA,MAAM,WAAW,KAAK,GAAG,IACzB,SACA,KAAK,UAAU;AAAA,EAEnB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,cAAc,SAA0B;AACtC,YACG,UAAU,cAAc,KAAK,aAAa,CAAC,IAAI,MAAM,MACtD,gBAAgB,KAAK,KAAK,IAC1B,MACA,KAAK,IAAI,SAAS,IAClB,OACA,KAAK,KAAK,SAAS;AAAA,EAEvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAU,WAAW,MAAc;AACjC,WACE,gBAAgB,KAAK,KAAK,KACzB,KAAK,UAAU,MAAM,OAAM,UAAU,KAAK,IAAI,IAAI,aAAa,QAC/D,WAAW,KAAK,KAAK,SAAS,IAAI;AAAA,EAEvC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAY,eAAiC;AAC3C,YACG,CAAC,gBAAgB,cAAc,KAAK,aAAa,CAAC,IAAI,MAAM,MAC7D,MAAM,eAAe,KAAK,GAAG,IAC7B,MACA,gBAAgB,KAAK,KAAK,KACzB,KAAK,UAAU,MAAM,OAAM,UAAU,KAAK,IAAI,IAAI,qCAAY,OAC/D,MAAM,eAAe,KAAK,OAAO,GAAI;AAAA,EAEzC;AAAA;AAAA,EAGA,eAAuB;AACrB,QAAI,YAAY;AAChB,QACG,KAAK,UAAU,KAAK,KAAK,MAAM,MAChC,KAAK,UAAU,KACd,KAAK,UAAU,KAAK,KAAK,MAAM,GAChC;AACA,YAAM,QAAQ,IAAI,OAAM,KAAK,MAAM,GAAG,EAAE;AACxC,kBAAY,MAAM,SAAS,IAAI;AAAA,IACjC;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,qBAAqBA,SAA0B;AAC7C,WACE,KAAK,SAASA,OAAM,KACnB,KAAK,UAAU,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,SAAS,KAAK,GAAG,KAC1D,KAAK,UAAU,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,SAAS,KAAK,GAAG;AAAA,EAEnE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAASA,SAA0B;AACjC,UAAM,MAAM,KAAK;AACjB,YAAQ,KAAK,OAAO;AAAA,MAClB,KAAK;AACH,YAAI,QAAQ,MAAM,QAAQ;AAAI,iBAAO;AACrC,YAAI,CAACA,YAAW,QAAQ,MAAM,QAAQ;AAAK,iBAAO;AAClD;AAAA,MACF,KAAK;AACH,YAAI,QAAQ,KAAM,CAACA,WAAU,QAAQ;AAAI,iBAAO;AAChD;AAAA,MACF,KAAK;AACH,YAAI,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,SAAS,GAAG,GAAG;AACpC,iBAAO;AAAA,QACT;AACA,YAAI,CAACA,YAAW,QAAQ,MAAM,QAAQ;AAAK,iBAAO;AAClD;AAAA,IACJ;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,eAAwB;AACtB,WACG,KAAK,UAAU,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE,KAC9C,KAAK,UAAU,KAAK,KAAK,QAAQ,KACjC,KAAK,UAAU,KAAK,KAAK,QAAQ,MACjC,KAAK,UAAU,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI,EAAE;AAAA,EAEtD;AAAA;AAAA,EAGA,oBAA6B;AAC3B,UAAM,MAAM,KAAK,aAAa;AAE9B,QAAI,QAAQ,GAAG;AACb,aAAO;AAAA,IACT,WAAW,QAAQ,GAAG;AAEpB,aAAO;AAAA,IACT;AAEA,WAAO,KAAK,aAAa;AAAA,EAC3B;AAAA;AAAA,EAGA,kBAAkBA,SAA0B;AAC1C,QAAI,MAAM,KAAK,aAAa;AAC5B;AAAA;AAAA,MAEE,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG;AAAA,MAEnB,KAAK,aAAa;AAAA,OAEjB,QAAQ,KAAM,QAAQ,MAAM,CAACA,WAAU,KAAK,UAAU;AAAA,MAEvD,KAAK,QAAQ;AAAA;AAAA,EAEjB;AAAA;AAAA,EAGA,kBAAkB,UAAoB,iBAA2B;AAC/D,QAAI,CAAC,UAAU;AACb,YAAM;AAAA,IACR;AACA,QAAI,KAAK,kBAAkB,GAAG;AAC5B,aAAO,OAAO,kBAAkB,MAAM,QAAQ;AAAA,IAChD,WAAW,iBAAiB;AAC1B,aAAO;AAAA,IACT,OAAO;AACL,YAAM,2BAA2B,KAAK,SAAS;AAAA,IACjD;AAAA,EACF;AAAA;AAAA,EAGA,SAASA,SAAiB;AACxB,WAAO,IAAI,MAAM,MAAMA,OAAM;AAAA,EAC/B;AAAA;AAAA,EAGA,cAAcA,SAAiB;AAC7B,WAAO,WAAW,UAAU,MAAMA,OAAM;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,iBAAiB,UAAoB,iBAA2B;AAC9D,QAAI,CAAC,UAAU;AACb,YAAM;AAAA,IACR;AACA,WAAO,OAAO,YAAY,MAAM,UAAU,CAAC,eAAe;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,UAAoB;AAC7B,QAAI,CAAC,UAAU;AACb,YAAM;AAAA,IACR;AACA,WAAO,OAAO,WAAW,MAAM,QAAQ;AAAA,EACzC;AAAA;AAAA,EAGA,cAAc,UAAoB,QAAgB;AAChD,QAAI,CAAC,UAAU;AACb,YAAM;AAAA,IACR;AACA,WAAO,OAAO,cAAc,MAAM,UAAU,MAAM;AAAA,EACpD;AAAA;AAAA,EAGA,aAAa;AACX,WAAO,QAAQ,SAAS,IAAI,KAAK;AAAA,EACnC;AAAA;AAAA,EAGA,gBAAgB;AACd,WAAO,QAAQ,YAAY,IAAI,KAAK;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,OAAO,QACL,KAMA,OACA,KACA,KACO;AACP,QAAI,UAAU,WAAW,GAAG;AAC1B,aAAO,IAAI,OAAM;AAAA,IACnB,WAIS,MAAM,SAAS,GAAG,KAAK,UAAU,WAAW,GAAG;AACtD,aAAO,IAAI,OAAM,KAAK,GAAG,CAAC;AAAA,IAC5B,OAAO;AACL,aAAO,IAAI,OAAM,KAAK,OAAO,KAAK,GAAG;AAAA,IACvC;AAAA,EACF;AAAA,EAEA,OAAO,MAAa;AAClB,WAAO,IAAI,OAAM;AAAA,EACnB;AAAA;AAAA,EAGA,OAAO,QAAQ,QAA8D;AAE3E,QAAI,OAAO,OAAO,MAAM,MAAM,UAAU,SAAS,IAAI,MAAM,IAAI,GAC7D,OACA;AAGF,WAAO,UAAU,OAAM,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG;AAC5C;AAAA,IACF;AAEA,YAAQ,SAAS,OAAM,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI;AAC/C,WAAO,SAAS,OAAM,MAAM,MAAM,OAAO,OAAM,WAAW,MAAM,KAAK,CAAC,GAAG;AACvE;AAAA,IACF;AAEA,UAAM,SAAS,OAAM,MAAM,MAAM,OAAO,CAAC,IAAI;AAE7C,WAAO,EAAE,MAAM,OAAO,IAAI;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,MAAM,MAAoB;AAE/B,UAAM,KAAK,KAAK,QAAQ,IAAI,KAAK,kBAAkB,IAAI,KAErD,cAAc,KAAK,MAAM,KAAK,UAAU;AAE1C,WAAO,oBAAoB;AAAA,EAC7B;AAAA;AAAA,EAGA,OAAO,MAAM,MAAc,OAAe,KAAqB;AAE7D,QAAI,YAAY;AAChB,QAAI,QAAQ,GAAG;AAEb,UAAI,IAAI;AACR,aAAO,KAAK,OAAM,YAAY,IAAI,GAAG;AACnC,qBAAa,OAAM,WAAW,MAAM,CAAC;AACrC;AAAA,MACF;AACA,UAAI;AACJ,aAAO,IAAI,OAAO;AAChB,qBAAa,OAAM,WAAW,MAAM,CAAC;AACrC;AAAA,MACF;AAAA,IACF,OAAO;AAEL,UAAI,IAAI;AACR,aAAO,IAAI,OAAO;AAChB,qBAAa,OAAM,WAAW,MAAM,CAAC;AACrC;AAAA,MACF;AAAA,IACF;AAEA,WAAO,aAAa,OAAM,MAAM,IAAI,IAAI;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,UAAU,KAAmB;AAKlC,UAAM,SAAS,kBAAkB,IAAI,IAAI,GAKvC,iBAAiB,MAAM,oBAAoB;AAE7C,WAAO,IAAI,KAAK,iBAAiB,UAAU;AAAA,EAC7C;AAAA;AAAA,EAGA,OAAO,WAAW,MAAc,OAAuB;AACrD,YAAQ,OAAO;AAAA,MAEb,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MAET,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MAET,KAAK;AACH,eAAO,OAAM,eAAe,IAAI,IAAI,KAAK;AAAA,MAE3C,KAAK;AACH,eAAO,OAAM,cAAc,IAAI,IAAI,KAAK;AAAA,MAE1C,KAAK;AACH,eAAO,OAAM,UAAU,IAAI,IAAI,KAAK;AAAA,IACxC;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,OAAO,MAAM,MAAsB;AAGjC,UAAM,SAAS,WAAW,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,IAAI;AAE5D,QAAI,QAAQ;AACV,aAAO,OAAO;AAAA,IAChB;AAEA,UAAM,SAAS,MAAM;AAAA,MACjB,MAAM,MAAM,OAAO,OAAO,KAAK,EAAE;AAAA,MAC/B,OAAO,OAAO,KAAK;AAAA,OAClB,MAAM,OAAO,KAAK,MAAM,KAAK;AAAA,IAClC,GACA,QAAQ,MAAM,OAAO,SAAS,OAC9B,QAAQ,IAAI,KAAK,SAAS,MAAM,MAAM,MAAM,SAAS,IAAI,IAAI,MAAM,MAAM,QAAQ,IAAI,GACrF,UAAU,MAAM,MAAM,IAAI,KAAK,SAAS,QAAQ,EAAE,GAClD,YAAY,QAAQ,QAAQ,MAAO,QAAQ;AAE7C,QAAI;AAKJ,QACE,aAAa,SACZ,UAAU,MAAM,KAAK,aAAa,QAAQ,CAAC,OAAM,UAAU,IAAI,KAC/D,UAAU,MAAM,KAAK,aAAa,SAAS,OAAM,UAAU,OAAO,CAAC,GACpE;AAEA,eAAS,UAAU;AAAA,IACrB,OAAO;AACL,eAAS;AAAA,IACX;AAGA,QAAI,MAAM,IAAI,SAAS,GAAG,GAAG,GAAG,CAAC,GAAG;AAClC,gBAAU;AAAA,IACZ;AAGA,eAAW,KAAK,EAAE,MAAY,SAAS,OAAO,CAAC;AAE/C,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,OAAO,UAAU,MAAsB;AACrC,WAAO,OAAM,MAAM,OAAO,CAAC,IAAI,OAAM,MAAM,IAAI;AAAA,EACjD;AAAA;AAAA,EAGA,OAAO,eAAe,MAAuB;AAC3C,WAAO,OAAM,UAAU,IAAI,IAAI,OAAO;AAAA,EACxC;AAAA;AAAA,EAGA,OAAO,cAAc,MAAuB;AAC1C,WAAO,OAAM,UAAU,IAAI,IAAI,OAAO;AAAA,EACxC;AAAA;AAAA,EAGA,OAAO,UAAU,MAAuB;AACtC,YAAQ,IAAI,OAAO,KAAK,KAAK;AAAA,EAC/B;AAAA;AAAA,EAGA,OAAO,YAAY,MAAsB;AACvC,WAAO,OAAM,UAAU,IAAI,IAAI,KAAK;AAAA,EACtC;AACF;;;ACluBA,IAAqB,SAArB,MAAqB,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUxB,OAAO,YAAY,MAAoB,UAAoB,oBAAoB,MAAgB;AAC3F,QAAI,gBAAgB,OAAO;AACvB,aAAO,KAAK,QAAQ;AAAA,IACxB,WACS,gBAAgB,QAAQ;AAC7B,aAAO,IAAI,KAAK,IAAI;AAAA,IACxB;AAEA,QAAI,CAAC,MAAM,YAAY,IAAI,GAAG;AAC1B,YAAM;AAAA,IACV;AAEA,QAAI,SAAS,QACT,YAAY,IAAI,YAAY,IAAI,UAAU,GAAG,YAAY,GAAG,WAAW,GACvE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GACzD,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GACzF,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ;AAElE,UAAM,MAAM,QAAO,UAAU,IAAI,GAC7B,cAAc,SACd,oBAAoB,QAAO,SAAS,WAAW,SAAS,IACpD,QAAO,SAAS,KAAK,KAAK,eAAe,eACpC,oBAAoB,SAAS,YAAY,GAAG,CAAC;AAE1D,gBAAY,KAAK,MAAM,iBAAiB;AACxC,iBAAa,oBAAoB,aAAa;AAC9C,aAAS,KAAK,IAAI,UAAU,QAAO,SAAS,WAAW,SAAS,CAAC;AACjE,gBAAY,SAAS;AACrB,cAAU,YAAY;AACtB,eAAW,SAAS;AACpB,aAAS,KAAK,IAAI,UAAU,QAAQ;AACpC,aAAS,KAAK,IAAI,UAAU,QAAQ;AACpC,YAAQ,OAAO,IAAI,WAAW;AAC9B,WAAO,OAAO,KAAK,WAAW;AAC9B,aAAS,QAAO,EAAE,KAAK;AACvB,aAAS,QAAO,EAAE,MAAM;AACxB,YAAQ,QAAO,EAAE,IAAI;AACrB,YAAQ,QAAO,EAAE,KAAK;AACtB,YAAQ,WAAW,KAAK,KAAK,UAAU,KAAK,IAAI,UAAU,MAAM,CAAC;AACjE,WAAO,WAAW,KAAK,KAAK,UAAU,KAAK,IAAI,UAAU,KAAK,CAAC;AAC/D,QAAI,KAAK,IAAI,QAAQ,MAAM,MAAM,IAAI,IAAI;AACrC,eAAS;AAAA,IACb;AACA,QAAI,QAAQ,KAAK;AACb,eAAS;AAAA,IACb;AACA,QAAI,KAAK,IAAI,OAAO,MAAM,KAAK,IAAI,IAAI;AACnC,cAAQ;AAAA,IACZ;AACA,QAAI,OAAO,KAAK;AACZ,cAAQ;AAAA,IACZ;AACA,cAAU,QAAQ;AAClB,aAAS,UAAU,KAAK,IAAI,UAAU,MAAM;AAC5C,aAAS,KAAK,KAAK,IAAI,SAAS,MAAM;AACtC,aAAS,SAAS,SAAS,WAAW,SAAS;AAC/C,aAAS,OAAO;AAChB,aAAS,UAAU,KAAK,IAAI,UAAU,KAAK;AAC3C,aAAS,KAAK,KAAK,IAAI,SAAS,MAAM;AACtC,YAAQ,SAAS,SAAS,WAAW,SAAS;AAC9C,QAAI,KAAK,IAAI,KAAK,KAAK,GAAG;AACtB,cAAQ,WAAW,KAAK,KAAK,KAAK;AAClC,gBAAW,MAAM,SAAS,KAAM,UAAU,QAAO,IAAI,KAAK,IAAI;AAC9D,gBAAU,QAAO,QAAQ,SAAS,SAAS,WAAW,MAAM,QAAQ;AACpE,UAAI,QAAQ,OAAO,IAAI;AACnB,gBAAQ,QAAQ;AAAA,MACpB;AAAA,IACJ;AAEA,QAAI,KAAK,IAAI,IAAI,KAAK,GAAG;AACrB,aAAO,WAAW,KAAK,KAAK,IAAI;AAChC,cAAS,QAAQ,KAAM,SAAS,QAAO,IAAI,IAAI,IAAI;AACnD,eAAS,QAAO,QAAQ,QAAQ,SAAS,WAAW,MAAM,QAAQ;AAClE,UAAI,OAAO,OAAO,KAAK,OAAO,OAAO,IAAI;AACrC,eAAO,QAAQ;AAAA,MACnB;AAAA,IACJ;AAEA,WAAO,EAAE,SAAkB,OAAe;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,WAAW,MAAoB,UAAoB;AACtD,WAAO,QAAO;AAAA,MACV,QAAO,YAAY,MAAM,UAAU,KAAK;AAAA,IAAC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,uBAAuB,UAA0B;AACpD,UAAM,OAAO,SAAS,SAClB,MAAM,SAAS;AAEnB,QAAI,SAAS,UAAa,MAAM,KAAK,IAAI,KAAK,QAAQ,UAAa,MAAM,IAAI,IAAI,GAAG;AAChF,aAAO,EAAE,MAAM,KAAK,QAAQ,IAAI;AAAA,IACpC;AACA,UAAM,QAAQ,MAAM,OAAO,MAAM,aAAa,GAAG,IAAI,MAAM,aAAa,IAAI,KAAK,CAAC;AAClF,WAAO,MAAM,WAAW,MAAM,KAAK;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,cAAc,MAAoB,UAAoB,QAAwB;AACjF,WAAO,QAAO;AAAA,MACV,QAAO,YAAY,MAAM,UAAU,KAAK;AAAA,MACxC;AAAA,IAAM;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,0BAA0B,UAAoB,QAAyB;AAC1E,QAAI,CAAC,YAAY,CAAC,SAAS,WAAW,CAAC,SAAS,QAAQ;AACpD,aAAO;AAAA,IACX;AACA,QAAI,OAAO,SAAS,SAChB,MAAM,SAAS;AAEnB,QAAI,CAAC,QAAQ,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,MAAM,IAAI,IAAI,GAAG;AACtD,aAAO;AAAA,IACX;AAEA,QAAI,QAAQ;AACR,aAAO,MAAM,WAAW,MAAM,CAAC,MAAM;AACrC,YAAM,MAAM,WAAW,KAAK,MAAM;AAAA,IACtC;AAEA,YAAQ,MAAM,aAAa,GAAG,IAAI,MAAM,aAAa,IAAI,KAAK;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,iBAAiB,UAAoBA,SAAiB;AACzD,UAAM,UAAUA,UAAS,KAAK;AAC9B,QAAI,OAAO,SAAS,WAAW,MAAM,WAAW,SAAS,SAAS,CAAC,OAAO,GACtE,MAAM,SAAS,UAAU,MAAM,WAAW,SAAS,QAAQ,OAAO;AAEtE,QAAI,CAAC,QAAQ,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,MAAM,IAAI,IAAI,GAAG;AACtD,aAAO;AAAA,IACX;AAEA,YAAQ,MAAM,aAAa,GAAG,IAAI,MAAM,aAAa,IAAI,KAAK;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,kBAAkB,MAAoB,UAAoB;AAC7D,WAAO,QAAO;AAAA,MACV,QAAO,YAAY,MAAM,QAAQ;AAAA,MACjC;AAAA,IAAQ;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,8BAA8B,UAAoB,UAAoB;AACzE,WAAO,SAAS,UAAU,QAAO,4BAA4B,SAAS,QAAQ,QAAQ;AAAA,EAC1F;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,4BAA4B,QAAc,UAAoB;AACjE,WAAO,MAAM,WAAW,QAAQ,EAAE,SAAS,kBAAkB,EAAE;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,UAAU,MAAY;AACzB,UAAM,QAAQ,KAAK,SAAS,GACxB,SAAS,MAAM,MAAM,kBAAkB,KAAK,YAAY,CAAC,GACzD,UAAU,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AACvE,WAAO,QAAQ,QAAQ,CAAC,IAAI,KAAK,QAAQ,KAAM,QAAQ,KAAK,OAAO,IAAK,IAAI;AAAA,EAChF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,SAAS,KAAa,KAAa;AACtC,WAAQ,MAAM,MAAM;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,EAAE,GAAW;AAChB,WAAQ,SAAS,IAAI;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,EAAE,GAAW;AAChB,WAAQ,IAAI,QAAQ,KAAK,IAAI,UAAU,CAAC,IAAI,OAAO,KAAK,IAAI,IAAI,UAAU,CAAC,IAAI;AAAA,EACnF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,IAAI,GAAW;AAClB,WAAQ,WAAW,IAAI;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,SAAS,KAAa;AACzB,WAAO,WAAW;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,QAAQ,MAAc,MAAY,UAAoB;AACzD,QAAI,OAAO,GAAG;AACV,cAAQ;AAAA,IACZ;AACA,QAAI,OAAO,MAAM,MAAM,IAAI;AAC3B,UAAM,YAAY,OAAO,QAAQ,KAAK,KAClC,MAAM,MAAM,MAAM,QAAQ,GAC1B,MAAM,KAAK,MAAM,MAAQ,WAAW,IAAI;AAE5C,QAAI,MAAM,MAAM,UAAU,IAAI,GAAG;AAC7B;AAAA,IACJ;AAEA,WAAO,MAAM,QAAQ,EAAE,MAAY,QAAQ,KAAK,QAAQ,IAAI,CAAC;AAAA,EACjE;AACJ;;;ACvQA,IAAM,UAAU,QAAQ,IAAI,aAAa;AAElC,IAAM,aAAa,OAAO,OAAO;AAAA,EACpC,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AACb,CAAC;AACM,IAAM,oBAAoB,OAAO,OAAO;AAAA,EAC3C,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AAAA,EACP,MAAM;AAAA,EACN,aAAa;AACjB,CAAC;AACM,IAAM,kBAAkB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,kBAAkB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,mBAAmB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,gBAAgB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,gBAAgB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACO,IAAM,SAAN,MAAM,OAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBf,OAAO,eAAe,QAAgB;AAClC,QAAI,SAAS,GAAG;AACZ,YAAM;AAAA,IACV;AAEA,QAAI,SAAS,MAAM;AACf,YAAM;AAAA,IACV;AAEA,QAAI,IAAI,QACJ,SAAS;AAEb,QAAI,KAAK,KAAM;AACX,gBAAU,OAAM,IAAI,OAAM,OAAO,IAAK,IAAI,OAAS,GAAI,IAAI,CAAC,IAAI;AAChE,UAAI,IAAI;AAAA,IACZ;AAEA,WAAO,KAAK,KAAK;AACb,gBAAU;AACV,WAAK;AAAA,IACT;AAEA,QAAI,KAAK,KAAK;AACV,gBAAU,OAAM,IAAI,OAAM,OAAO,IAAK,IAAI,OAAQ,GAAG,IAAI,CAAC;AAC1D,UAAI,IAAI;AAAA,IACZ;AAEA,QAAI,KAAK,IAAI;AACT,gBAAU;AAAA,IACd,WAAW,KAAK,IAAI;AAChB,gBAAU;AAAA,IACd,OAAO;AACH,UAAI,IAAI,GAAG;AACP,kBAAU,OAAM,IAAI,OAAM,OAAO,IAAK,IAAI,MAAO,EAAE,IAAI,CAAC;AAAA,MAC5D;AACA,UAAI,IAAI,KAAK,GAAG;AACZ,kBAAU,OAAM,IAAK,IAAI,KAAM,CAAC;AAAA,MACpC;AAAA,IACJ;AACA,QAAI,SAAS,OAAO,SAAS,MAAO,IAAI;AACpC,eAAS,MAAM;AAAA,IACnB,WAAW,OAAO,SAAS,GAAG;AAC1B,eAAS,OAAO,MAAM,GAAG,EAAE,IAAI,MAAM,OAAO,OAAO,SAAS,CAAC;AAAA,IACjE;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,aAAa,MAAY,eAAwB,gBAAyB;AAC7E,QAAI,CAAC;AAAM;AACX,YACK,gBACK,iBACI,MACA,MACJ,cAAc,KAAK,OAAO,CAAC,IAAI,SACrC,QACA,OAAM,WAAW,KAAK,QAAQ,CAAC,IAC/B,SACA,iBAAiB,KAAK,SAAS,CAAC,IAChC,MACA,KAAK,YAAY,EAAE,SAAS;AAAA,EAEpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,kBAAkB,MAAY,YAAqB;AACtD,QAAI,CAAC;AAAM;AACX,UAAM,SAAS,KAAK,QAAQ,GACxB,WAAW,KAAK,SAAS,IAAI;AACjC,YACK,aACK,GAAG,QAAQ,IAAI,MAAM,KACrB,GAAG,SAAS,KAAK,MAAM,EAAE,GAAG,MAAM,IAAI,WAAW,KAAK,MAAM,EAC9D,GAAG,QAAQ,MACf,MACA,KAAK,YAAY,EAAE,SAAS;AAAA,EAEpC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,WAAW,KAAa;AAC3B,UAAM,IAAI,IAAI,SAAS;AACvB,QAAI,SAAS;AACb,QAAI,EAAE,WAAW,KAAK,EAAE,EAAE,SAAS,CAAC,MAAM,KAAK;AAC3C,cAAQ,EAAE,EAAE,SAAS,CAAC,GAAG;AAAA,QACrB,KAAK;AACD,mBAAS;AACT;AAAA,QACJ,KAAK;AACD,mBAAS;AACT;AAAA,QACJ,KAAK;AACD,mBAAS;AACT;AAAA,MACR;AAAA,IACJ;AACA,WAAO,IAAI;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,kBAAkB,MAAc;AACnC,WAAO,EAAE,OAAO,QAAS,CAAC,EAAE,OAAO,QAAQ,EAAE,OAAO;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,OAAO,SAAS,MAAc,OAAe,KAAa;AACtD,WAAO,IAAI,KAAK,MAAM,QAAQ,GAAG,GAAG,EAAE,OAAO;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,QAAQ,MAAY;AAEvB,UAAM,SAAS;AAAA,MACX,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK;AAAA,MACb,QAAQ,KAAK,UAAU;AAAA,IAC3B;AACA,WAAO,OAAO,UAAU,IAAI;AACxB,aAAO,UAAU;AACjB,aAAO,UAAU;AAAA,IACrB;AACA,WAAO,OAAO,SAAS,GAAG;AACtB,aAAO,UAAU;AACjB,aAAO,UAAU;AAAA,IACrB;AACA,WAAO,OAAO,SAAS,GAAG;AACtB,aAAO,UAAU;AACjB,aAAO;AAAA,IACX;AACA,WAAO,OAAO,UAAU,IAAI;AACxB,aAAO,UAAU;AACjB,aAAO;AAAA,IACX;AACA,QAAI,OAAO,OAAO,GAAG;AACjB,aAAO,OAAO,KAAM,OAAO,OAAO;AAAA,IACtC;AACA,QAAI,OAAO,OAAO,IAAI;AAClB,aAAO,OAAO,OAAO,OAAO;AAAA,IAChC;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,WAAW,MAAa,SAAoC;AAC/D,QAAI,CAAC;AAAM,aAAO;AAClB,WACI,QACA,OAAM,QAAQ;AAAA,MACV,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK,UAAU,WAAW;AAAA,MAClC,QAAQ,KAAK;AAAA,IACjB,CAAC;AAAA,EAET;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,WAAW,MAAY,SAAiB;AAC3C,WAAO,OAAM,QAAQ;AAAA,MACjB,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK;AAAA,MACb,SAAS,KAAK,UAAU,KAAK;AAAA,IACjC,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,OAAO,SAAS,aAAmB,WAAiB,eAAe,OAAO;AACtE,UAAM,WAAW,OAAM,aAAa,WAAW,GAC3C,WAAW,OAAM,aAAa,SAAS,GACvC,OAAO,OAAM,QAAQ;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QACI,YAAY,WACN,WAAW,WACX,eACI,WAAW,WACX,QAAQ,WAAW;AAAA,IACrC,CAAC;AAEL,WAAO;AAAA,MACH,GAAG;AAAA,MACH,MAAM,YAAY,YAAY,CAAC,eAAe,IAAI;AAAA,IACtD;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,aAAa,MAAY;AAC5B,WAAO,OAAO,KAAK,OAAO,KAAK,KAAK,SAAS;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,aAAa,MAAY;AAC5B,WAAO,OAAO,OAAM,aAAa,IAAI,IAAI,MAAM,KAAK,UAAU,KAAK;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,aAAa,OAAa;AAC7B,WAAO;AAAA,MACH,MAAM,MAAM,SAAS;AAAA,MACrB,QAAQ,MAAM,WAAW;AAAA,MACzB,QAAQ,MAAM,WAAW;AAAA,IAC7B;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,YAAY,YAAmB,WAAkB;AACpD,QAAI,CAAC,cAAc,CAAC;AAAW,aAAO;AACtC,WAAO,OAAM,aAAa,SAAS,KAAK,OAAM,aAAa,UAAU;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,6BAA6B,MAAY;AAC5C,QAAI,IAAI;AACR,QAAI,KAAK,OAAO,GAAG;AACf,WAAK,GAAG,KAAK,KAAK,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,uBAAQ,0BAAM;AAAA,IACpE;AACA,QAAI,KAAK,SAAS,GAAG;AACjB,UAAI,EAAE,QAAQ;AACV,aAAK;AAAA,MACT;AACA,WAAK,GAAG,KAAK,OAAO,SAAS,CAAC,IAAI,KAAK,WAAW,IAAI,uBAAQ,0BAC1D;AAAA,IACR;AACA,SAAK,KAAK,UAAU,KAAK,GAAG;AACxB,UAAI,EAAE,QAAQ;AACV,aAAK;AAAA,MACT;AACA,WAAK,GAAG,KAAK,MAAM,KAAK,UAAU,CAAC,EAAE,SAAS,CAAC,IAAI,KAAK,WAAW,IAAI,mCAAU,gCAC7E;AAAA,IACR;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,0BAA0B,MAAY;AACzC,QAAI,IAAI;AACR,QAAI,KAAK,OAAO,GAAG;AACf,WAAK,GAAG,KAAK,KAAK,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,SAAS,OACvD;AAAA,IACR;AACA,QAAI,KAAK,SAAS,GAAG;AACjB,UAAI,EAAE,QAAQ;AACV,aAAK;AAAA,MACT;AACA,WAAK,GAAG,KAAK,OAAO,SAAS,CAAC,IAAI,KAAK,WAAW,IAAI,WAAW,SAC7D;AAAA,IACR;AACA,SAAK,KAAK,UAAU,KAAK,GAAG;AACxB,UAAI,EAAE,QAAQ;AACV,aAAK;AAAA,MACT;AACA,WAAK,GAAG,KAAK,MAAM,KAAK,UAAU,CAAC,EAAE,SAAS,CAAC,IAAI,KAAK,WAAW,IAAI,WAAW,SAC9E;AAAA,IACR;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,cAAc,WAAmB,QAA2C;AAC/E,UAAM,QAAQ,OAAM,MAAM,YAAY,CAAC,GACnC,OAAO,YAAY;AACvB,QAAI,MAAM;AAEV,QAAI,cAAc,GAAG;AACjB,aAAO;AAAA,IACX,OAAO;AACH,UAAI,cAAc,GAAG;AACjB,eAAO;AAAA,MACX,OAAO;AACH,YAAI,cAAc,IAAI;AAClB,iBAAO;AAAA,QACX,OAAO;AACH,iBAAO,OAAM,MAAM,OAAM,MAAM,YAAY,EAAE,CAAC,IAAI;AAClD,cAAI,YAAY,IAAI;AAChB,gBAAI,YAAY,MAAM,YAAY,KAAK,GAAG;AACtC,qBAAO;AAAA,YACX;AACA,mBAAO,OAAM,MAAM,OAAM,MAAM,YAAY,EAAE,CAAC,IAAI;AAAA,UACtD;AAAA,QACJ;AAAA,MACJ;AACA,cAAQ,aAAa,KAAK,uBAAQ,8BAAU;AAE5C,UAAI,WAAW,WAAW;AACtB,eAAO;AAAA,MACX;AAEA,UAAI,aAAa,GAAG;AAChB,eAAO;AACP,YAAI,UAAU,GAAG;AACb,iBAAO;AAAA,QACX,WAAW,UAAU,GAAG;AACpB,iBAAO;AAAA,QACX,WAAW,QAAQ,GAAG;AAClB,iBAAO,OAAM,MAAM,OAAM,MAAM,KAAK,CAAC,IAAI;AAAA,QAC7C;AACA,YAAI,SAAS,GAAG;AACZ,iBAAO;AAAA,QACX,WAAW,SAAS,GAAG;AACnB,iBAAO;AAAA,QACX,WAAW,OAAO,GAAG;AACjB,iBAAO,WAAM,OAAM,MAAM,IAAI,IAAI;AAAA,QACrC;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,WAAW,UAAU;AACrB,aAAO;AAAA,IACX,WAAW,WAAW,YAAY;AAC9B,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,cAAc,MAAY,MAAe,MAAgB,SAAmB;AAC/E,UAAM,QAAQ,UAAU,KAAK,OAAO,KAAK;AACzC,WAAO;AAAA,MACH,MAAM,MAAM,KAAK,IAAI;AAAA,MACrB,QAAQ,MAAM,KAAK,MAAM;AAAA,MACzB,QAAQ,MAAM,KAAK,UAAU,CAAC;AAAA,IAClC;AACA,QAAI,MAAM;AACN,cACK,QAAQ,OAAO,IAAI,MAAM,OACzB,KAAK,KAAK,SAAS,IAChB,OACC,KAAK,SAAS,KACT,MAAM,KAAK,OAAO,SAAS,IAC3B,KAAK,OAAO,SAAS,KAC3B,QACE,KAAK,UAAU,KAAK,KAChB,OAAO,KAAK,UAAU,GAAG,SAAS,KACjC,KAAK,UAAU,GAAG,SAAS;AAAA,IAE9C,OAAO;AACH,cACK,QAAQ,OAAO,IAAI,MAAM,OACzB,KAAK,QAAQ,KACR,KAAK,QAAQ,IACT,KACA,KAAK,OACT,KAAK,OAAO,IAChB,SAAS,IACX,OACC,KAAK,SAAS,KACT,MAAM,KAAK,OAAO,SAAS,IAC3B,KAAK,OAAO,SAAS,KAC3B,QACE,KAAK,UAAU,KAAK,KAChB,OAAO,KAAK,UAAU,GAAG,SAAS,KACjC,KAAK,UAAU,GAAG,SAAS,MACjC,KAAK,OAAO,KAAK,QAAQ;AAAA,IAElC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,gBAAgB;AACnB,UAAM,OAAO,oBAAI,KAAK,GAClB,MAAM,IAAI,KAAK,KAAK,YAAY,GAAG,GAAG,CAAC,GACvC,MAAM,IAAI,KAAK,KAAK,YAAY,GAAG,GAAG,CAAC;AAC3C,WAAO,CAAC,OAAM;AAAA,MACV,KAAK,IAAI,IAAI,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,IAAI;AAAA,IACjE;AAAA,EACJ;AAAA;AAAA,EAGA,OAAO,UAAU,MAAY;AACzB,WACI,CAAC,OAAM,MAAM,KAAK,kBAAkB,IAAI,EAAE,MAC1C,OAAM,cAAc;AAAA,EAE5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,MAAM,UAAoB,MAAY;AAEzC,QAAI,SAAS,cAAc,OAAM,cAAc,GAAG;AAE9C,aAAO,OAAM,UAAU,IAAI;AAAA,IAC/B,WAAW,SAAS,QAAQ;AACxB,aAAO,OAAM,aAAa,IAAI;AAAA,IAClC,OAAO;AACH,aAAO,OAAM,UAAU,IAAI;AAAA,IAC/B;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,UAAU,MAAY;AACzB,UAAM,OAAO,KAAK,YAAY,GAC1B,QAAQ,KAAK,SAAS,IAAI,GAC1B,MAAM,KAAK,QAAQ,GACnB,OAAO,KAAK,SAAS;AAEzB,QAAI,QAAQ,KAAK,SAAS,IAAI;AAC1B,aAAO;AAAA,IACX,WAAW,QAAQ,KAAK,QAAQ,IAAI;AAChC,aAAO;AAAA,IACX,WAGS,UAAU,GAAG;AAGlB,YAAM,WAAW,OAAM,SAAS,MAAM,GAAG,CAAC,GAEtC,aAAa,YAAY,IAAI,IAAI,KAAM,WAAW,KAAK,IAAK;AAEhE,aAAO,MAAM,cAAe,QAAQ,cAAc,QAAQ;AAAA,IAC9D,OAEK;AAED,YAAM,WAAW,OAAM,SAAS,MAAM,IAAI,CAAC,GAEvC,aAAa,aAAa,IAAI,IAAI,KAAM,WAAW,KAAK,IAAK;AAEjE,aAAO,MAAM,cAAe,QAAQ,cAAc,OAAO;AAAA,IAC7D;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,aAAa,MAAY;AAC5B,UAAM,OAAO,KAAK,YAAY,GAC1B,QAAQ,KAAK,SAAS,IAAI,GAC1B,MAAM,KAAK,QAAQ,GACnB,OAAO,KAAK,SAAS;AAEzB,QAAI,QAAQ,MAAM,QAAQ,GAAG;AACzB,aAAO;AAAA,IACX,WAAW,QAAQ,KAAK,QAAQ,IAAI;AAChC,aAAO;AAAA,IACX,WAES,UAAU,GAAG;AAGlB,YAAM,aAAa,KAAK,OAAM,SAAS,MAAM,GAAG,EAAE,IAAI;AACtD,aAAO,MAAM,cAAe,QAAQ,cAAc,QAAQ;AAAA,IAC9D,OAEK;AAED,YAAM,aAAa,KAAK,OAAM,SAAS,MAAM,IAAI,EAAE;AACnD,aAAO,MAAM,cAAe,QAAQ,cAAc,OAAO;AAAA,IAC7D;AAAA,EACJ;AAAA;AAAA,EAGA,OAAO,mBAAmB;AACtB,UAAM,MAAM,oBAAI,KAAK,GAEjB,mBAAmB,IAAI,CAAC,OAAM,cAAc;AAEhD,QAAI,SAAS,IAAI,SAAS,IAAI,gBAAgB;AAC9C,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,eAAe,OAAa,MAAc;AAC7C,WAAO,IAAI,KAAK,MAAM,QAAQ,IAAI,QAAS,IAAI;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,YAAY,QAAc,QAAc;AAC3C,WACI,UAAU,UAAU,OAAO,aAAa,MAAM,OAAO,aAAa;AAAA,EAE1E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,YAAY,QAAe,QAAe;AAC7C,WACI,UACA,UACA,OAAO,OACP,OAAO,OACP,OAAO,QAAQ,OAAO;AAAA,EAE9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,aAAa,QAAe,QAAe;AAC9C,WAAO,OAAO,UAAU,OAAO,SAAS,OAAO,SAAS,OAAO;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,aAAa,QAAc,QAAc;AAC5C,WACI,OAAO,SAAS,MAAM,OAAO,SAAS,KACtC,OAAO,YAAY,MAAM,OAAO,YAAY;AAAA,EAEpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,cAAc,OAAa,UAAoB;AAClD,UAAM,QAAQ,OAAO,YAAY,OAAO,QAAQ,EAAE,QAC9C,MAAM,OAAM,aAAa,KAAK;AAClC,WAAO,SAAS,OAAM,YAAY,OAAO,GAAG;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,cAAc,UAAoB;AACrC,QAAI,QAAQ,oBAAI,KAAK;AAErB,QAAI,OAAM,cAAc,OAAO,QAAQ,GAAG;AACtC,YAAM,QAAQ,MAAM,QAAQ,IAAI,CAAC;AAAA,IACrC;AACA,WAAO,IAAI,MAAM,KAAK;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,MAAM,OAAe;AACxB,WAAO,QAAQ;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,UAAU,MAAoB;AACjC,UAAM,QAAQ,gBAAgB,OACxB,IAAI,MAAM,IAAY,IACtB;AACN,UAAM,QAAQ,gBAAgB,OACxB,OACA,MAAM,QAAQ;AACpB,WAAO,EAAE,OAAO,MAAM;AAAA,EAC1B;AAAA;AAAA,EAEA,OAAO,SAAS,OAAgB;AAC5B,WAAO,OAAO,UAAU,YAAY,iBAAiB;AAAA,EACzD;AAAA;AAAA,EAEA,OAAO,SAAS,OAAgB;AAC5B,WAAO,OAAO,UAAU,YAAY,iBAAiB;AAAA,EACzD;AAAA;AAAA,EAEA,OAAO,YAAY,OAAgB;AAC/B,WAAO,iBAAiB,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,IAAI,MAAe,KAAgB;AACtC,QAAI,IAAI,WAAW,MAAM,MAAM,QAAQ,IAAI,CAAC,CAAC,KAAK,OAAM,SAAS,IAAI,CAAC,CAAC,IAAI;AACvE,aAAQ,IAAI,CAAC,EAAgB,SAAS,CAAC;AAAA,IAC3C,OAAO;AACH,aAAO,IAAI,SAAS,CAAC;AAAA,IACzB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,WAAW,YAAqB,UAAmB;AACtD,QACI,OAAO,eAAe,eACtB,eAAe,QACf,MAAM,UAAoB,GAC5B;AACE,aAAO;AAAA,IACX,OAAO;AACH,aAAO;AAAA,IACX;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,MAAM,OAAe,KAAc;AACtC,UAAM,cAAc,OAAQ,QAAS,cAAc,IAAI,OACnD,YAAY,OAAQ,QAAS,cAAc,QAAQ;AAEvD,WAAO,MAAM,KAAK,EAAE,QAAQ,YAAY,cAAc,EAAE,GAAG,CAAC,GAAG,MAAM,cAAc,CAAC;AAAA,EACxF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,IAAI,QAAgB,eAAsB;AAC7C,QAAI,SAAS;AACT,cAAQ,IAAI,KAAK,GAAG,aAAa;AAAA,IACrC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,KAAK,QAAgB,eAAsB;AAC9C,QAAI,SAAS;AACT,cAAQ,KAAK,KAAK,GAAG,aAAa;AAAA,IACtC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,MAAM,QAAgB,eAAsB;AAC/C,QAAI,SAAS;AACT,cAAQ,MAAM,KAAK,GAAG,aAAa;AAAA,IACvC;AAAA,EACJ;AACJ;AAlvBa,OACF,MAAM,CAAC,UAAK,UAAK,UAAK,UAAK,UAAK,UAAK,UAAK,UAAK,QAAG;AADhD,OAEF,MAAM,CAAC,UAAK,UAAK,UAAK,UAAK,UAAK,UAAK,UAAK,UAAK,QAAG;AAFhD,OAGF,MAAM,CAAC,UAAK,UAAK,UAAK,QAAG;AAHvB,OAIF,QAAQ;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAfS,OAgBF,QAAQ,CAAC,IAAI,sBAAO,kCAAS,wCAAU,sCAAQ;AAhBnD,IAAM,QAAN;;;AC3FP,IAAqB,WAArB,MAAqB,UAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoB1B,YAAY,MAAc,SAA6BA,SAAiB,UAAkB,WAAmB,WAAmB,WAAmB,gBAAyB;AAExK,QAAI,OAAOA,YAAW,eAAeA,YAAW,MAAM;AAKlD,MAAAA,UAAU,WAAW,SAAS,WAAW,MAAM,YAAY,UAAU,YAAY;AAAA,IACrF;AACA,QAAIA,SAAQ;AAER,kBAAY;AAAA,IAChB,WAES,OAAO,cAAc,eAAe,cAAc,MAAM;AAI7D,kBAAY,CAAC,KAAK,MAAM,YAAY,EAAE;AAAA,IAC1C;AAEA,SAAK,OAAQ,QAAQ;AACrB,SAAK,aAAa;AAClB,SAAK,SAAS,CAAC,CAACA;AAChB,SAAK,WAAW;AAChB,SAAK,YAAY;AACjB,SAAK,YAAY,aAAa;AAC9B,SAAK,YAAY,aAAa;AAC9B,SAAK,iBAAiB,kBAAkB,UAAS,WAAW,IAAI;AAAA,EACpE;AAAA,EAEA,OAAO,MAAM,UAAoB;AAC7B,WAAO,IAAI;AAAA,MACP,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS,kBAAkB;AAAA,IAAC;AAAA,EACpC;AAAA,EAEA,OAAO,WAAW,UAAoB;AAClC,QAAI,SAAS,gBAAgB;AACzB,aAAO,SAAS;AAAA,IACpB,WACS,CAAC,SAAS,QAAQ;AACvB,aAAO;AAAA,IACX,OACK;AACD,YAAM,UAAU;AAAA,QAAC,EAAE,OAAO,CAAC,aAAa,UAAU,UAAU,SAAS,SAAS,gBAAgB,8CAAW,+CAAY,uCAAS,GAAG,KAAK,GAAG;AAAA,QACzI,EAAE,OAAO,CAAC,SAAS,UAAU,eAAgB,aAAa,4BAAQ,uCAAS,GAAG,KAAK,GAAG;AAAA,MAAC,GACnF,QAAQ,SAAS,KAAK,YAAY,GAClC,OAAO,QAAQ,KAAK,QAAM;AACtB,eAAO,GAAG,MAAM,KAAK,SAAO;AACxB,iBAAO,MAAM,QAAQ,GAAG,IAAI;AAAA,QAChC,CAAC;AAAA,MACL,CAAC;AACL,aAAO,OAAO,KAAK,MAAM;AAAA,IAC7B;AAAA,EACJ;AAAA;AAAA,EAGA,OAAO,eAAe;AAClB,WAAO,IAAI,UAAS,aAAa,8CAAW,MAAM,OAAO,QAAQ,GAAG,KAAK,EAAE;AAAA,EAC/E;AAAA;AAAA,EAEA,OAAO,cAAc;AACjB,WAAO,IAAI,UAAS,eAAe,QAAW,OAAO,MAAM,OAAO,IAAI,GAAG,EAAE;AAAA,EAC/E;AACJ;;;AC9FA,2BAAyB;;;ACDzB,yBAAC,EAAC,MAAO,UAAS,KAAM,wCAAS,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,KAAM,4BAAO,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,KAAM,4BAAO,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,KAAM,kCAAQ,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,KAAM,wCAAS,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,KAAM,+CAAW,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,KAAM,yCAAU,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,KAAM,yCAAU,IAAK,MAAK,IAAK,GAAE,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,KAAM,yCAAU,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,KAAM,qDAAY,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,KAAM,yCAAU,IAAK,MAAK,IAAK,GAAE,IAAK,IAAG,KAAM,OAAM,KAAM,QAAO,IAAK,GAAE,GAAE,EAAC,MAAO,aAAY,KAAM,8CAAU,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,KAAM,6BAAQ,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,KAAM,+CAAW,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,KAAM,wCAAS,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,KAAM,wCAAS,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,KAAM,wCAAS,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,KAAM,2DAAa,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,KAAM,kCAAQ,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,KAAM,4BAAO,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,KAAM,kCAAQ,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,KAAM,wCAAS,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,KAAM,4BAAO,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,KAAM,+CAAW,IAAK,MAAK,IAAK,GAAE,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,KAAM,kCAAQ,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,KAAM,+CAAW,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,KAAM,kCAAQ,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,KAAM,8CAAU,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,QAAO,IAAK,GAAE,GAAE,EAAC,MAAO,eAAc,KAAM,yCAAU,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,KAAM,2DAAa,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,KAAM,2DAAa,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,KAAM,wCAAS,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,OAAM,KAAM,sBAAM,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,KAAM,qDAAY,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,KAAM,kCAAQ,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,KAAM,wCAAS,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,KAAM,iEAAc,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,KAAM,qDAAY,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,KAAM,4BAAO,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,KAAM,kCAAQ,IAAK,MAAK,IAAK,GAAE,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,KAAM,qDAAY,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,KAAM,sBAAM,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,KAAM,wCAAS,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,KAAM,kCAAQ,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,KAAM,+CAAW,IAAK,MAAK,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,KAAM,sBAAM,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,OAAM,KAAM,sBAAM,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,KAAM,kCAAQ,IAAK,MAAK,IAAK,GAAE,IAAK,IAAG,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,KAAM,qDAAY,IAAK,MAAK,IAAK,GAAE,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,KAAM,sBAAM,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,KAAM,+CAAW,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,KAAM,qDAAY,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,QAAO,IAAK,GAAE,GAAE,EAAC,MAAO,SAAQ,KAAM,sBAAM,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,KAAM,wCAAS,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,KAAM,8CAAU,IAAK,MAAK,IAAK,GAAE,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,KAAM,qDAAY,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,KAAM,yCAAU,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,KAAM,2DAAa,IAAK,MAAK,IAAK,GAAE,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,KAAM,yCAAU,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,KAAM,2DAAa,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,KAAM,6EAAgB,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,QAAO,IAAK,GAAE,GAAE,EAAC,MAAO,iBAAgB,KAAM,2DAAa,IAAK,MAAK,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,KAAM,+CAAW,IAAK,MAAK,IAAK,GAAE,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,KAAM,+CAAW,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,KAAM,iEAAc,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,KAAM,wCAAS,IAAK,MAAK,IAAK,GAAE,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,KAAM,4BAAO,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,KAAM,qDAAY,IAAK,MAAK,IAAK,GAAE,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,KAAM,iEAAc,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,KAAM,kCAAQ,IAAK,MAAK,IAAK,GAAE,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,KAAM,+CAAW,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,KAAM,sBAAM,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,KAAM,wCAAS,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,KAAM,kCAAQ,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,KAAM,yCAAU,IAAK,MAAK,IAAK,GAAE,IAAK,IAAG,KAAM,OAAM,KAAM,QAAO,IAAK,GAAE,GAAE,EAAC,MAAO,WAAU,KAAM,4BAAO,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,KAAM,4BAAO,IAAK,MAAK,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,KAAM,wCAAS,IAAK,MAAK,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,KAAM,4BAAO,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,KAAM,kCAAQ,IAAK,MAAK,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,KAAM,oDAAW,IAAK,MAAK,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,KAAM,yEAAiB,IAAK,MAAK,IAAK,GAAE,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,IAAK,IAAG,KAAM,QAAO,KAAM,QAAO,GAAE,EAAC,MAAO,WAAU,IAAK,IAAG,KAAM,QAAO,KAAM,QAAO,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,YAAW,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,IAAG,IAAK,KAAI,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,IAAG,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,UAAS,IAAK,IAAG,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,YAAW,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,IAAK,KAAI,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,QAAO,GAAE,EAAC,MAAO,UAAS,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,IAAK,MAAK,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,IAAK,IAAG,KAAM,QAAO,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,oBAAmB,IAAK,IAAG,KAAM,QAAO,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,IAAK,KAAI,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,uBAAsB,IAAK,IAAG,KAAM,QAAO,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,IAAG,KAAM,QAAO,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,KAAI,KAAM,QAAO,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,QAAO,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,GAAE,KAAM,EAAC,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,KAAI,KAAM,EAAC,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,IAAG,KAAM,EAAC,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,QAAO,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,IAAG,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,OAAM,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,IAAG,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,IAAG,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,IAAK,IAAG,KAAM,MAAK,KAAM,IAAG,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,IAAK,MAAK,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,MAAK,KAAM,IAAG,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,OAAM,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,IAAK,KAAI,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,IAAG,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,0BAAyB,IAAK,IAAG,KAAM,OAAM,KAAM,GAAE,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,IAAG,IAAK,MAAK,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,IAAG,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,IAAG,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,IAAK,KAAI,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,IAAK,GAAE,KAAM,IAAG,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,IAAK,KAAI,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,QAAO,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,uBAAsB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAa,IAAK,GAAE,KAAM,OAAM,KAAM,IAAG,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,eAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,IAAG,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAa,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,OAAM,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAO,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAkB,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,cAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAa,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,0BAAsB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,yBAAwB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAc,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAW,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,2BAA0B,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,IAAG,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAW,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,OAAM,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,IAAG,GAAE,EAAC,MAAO,sBAAqB,IAAK,GAAE,KAAM,MAAK,KAAM,IAAG,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,MAAK,KAAM,QAAO,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,QAAO,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,IAAG,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,IAAG,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,yBAAwB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,uBAAsB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,yBAAwB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,GAAE,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,yBAAwB,IAAK,IAAG,KAAM,QAAO,KAAM,MAAK,GAAE,EAAC,MAAO,2BAA0B,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,oBAAmB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,uBAAsB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,0BAAyB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,yBAAwB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,yBAAwB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,0BAAyB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,MAAK,KAAM,GAAE,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,8BAA6B,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,oBAAmB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,4BAA2B,IAAK,IAAG,KAAM,OAAM,KAAM,GAAE,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,uBAAsB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,yBAAwB,IAAK,IAAG,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,2BAA0B,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,oBAAmB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,OAAM,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,IAAG,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,EAAC,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,GAAE,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,MAAK,KAAM,IAAG,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,IAAG,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,IAAG,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,YAAQ,IAAK,GAAE,KAAM,MAAK,KAAM,IAAG,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,sBAAqB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAQ,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,IAAG,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,MAAK,KAAM,QAAO,GAAE,EAAC,MAAO,YAAW,IAAK,IAAG,KAAM,QAAO,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,QAAO,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,GAAE,KAAM,MAAK,KAAM,QAAO,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,QAAO,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,MAAK,KAAM,QAAO,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,QAAO,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,MAAK,KAAM,QAAO,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,QAAO,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,6BAAyB,IAAK,GAAE,KAAM,OAAM,KAAM,QAAO,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,QAAO,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,IAAK,IAAG,KAAM,QAAO,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,IAAG,KAAM,QAAO,KAAM,QAAO,GAAE,EAAC,MAAO,YAAW,IAAK,IAAG,KAAM,QAAO,KAAM,QAAO,GAAE,EAAC,MAAO,UAAS,IAAK,IAAG,KAAM,QAAO,KAAM,QAAO,GAAE,EAAC,MAAO,uBAAsB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,0BAAyB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,aAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,IAAG,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAa,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,OAAM,KAAM,IAAG,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,IAAG,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,IAAG,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,IAAG,KAAM,KAAI,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,IAAG,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAa,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,2BAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,YAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,4BAA2B,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,0BAAyB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,yBAAwB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,yBAAwB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,uBAAsB,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,uBAAsB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,uBAAsB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,0BAAyB,IAAK,GAAE,KAAM,MAAK,KAAM,QAAO,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,QAAO,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,QAAO,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,IAAG,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,0BAAyB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,GAAE,KAAM,GAAE,KAAM,EAAC,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,IAAG,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,KAAI,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,KAAI,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,GAAE,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,QAAO,KAAM,QAAO,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,KAAI,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,MAAK,KAAM,IAAG,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,mCAAkC,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,8BAA6B,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,UAAS,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,oBAAmB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,sBAAqB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,oBAAmB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,GAAE,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,uBAAsB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,uBAAsB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,oBAAmB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,0BAAyB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,uBAAsB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,IAAG,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,QAAO,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,KAAI,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,0BAAyB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,yBAAwB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,QAAO,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,oBAAmB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,oBAAmB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,uBAAsB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,uBAAsB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,yBAAwB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,oBAAmB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,yBAAwB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,uBAAsB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,yBAAwB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,QAAO,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,QAAO,KAAM,OAAM,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,0BAAyB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,6BAA4B,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,6BAA4B,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,oBAAmB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,oBAAmB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,YAAW,IAAK,IAAG,KAAM,QAAO,KAAM,QAAO,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,IAAG,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,oBAAmB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,oBAAmB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,oBAAmB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,GAAE,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,oBAAmB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,yBAAwB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,2BAA0B,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,4BAA2B,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,2BAA0B,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,2BAA0B,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,yBAAwB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,0BAAyB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,8BAA6B,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,GAAE,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,IAAG,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,4BAA2B,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,6BAA4B,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,2BAA0B,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,yBAAwB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAW,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,KAAI,KAAM,KAAI,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,KAAI,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,QAAO,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,6BAA4B,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,6BAA4B,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,2BAA0B,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,yBAAwB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,uBAAsB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,qBAAoB,IAAK,IAAG,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,QAAO,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,IAAG,KAAM,OAAM,KAAM,QAAO,GAAE,EAAC,MAAO,uBAAsB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,uBAAsB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,2BAA0B,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,uBAAsB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,yBAAwB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,0BAAyB,IAAK,IAAG,KAAM,QAAO,KAAM,QAAO,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,6BAA4B,IAAK,IAAG,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,QAAO,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,uBAAsB,IAAK,IAAG,KAAM,QAAO,KAAM,MAAK,GAAE,EAAC,MAAO,2BAA0B,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,MAAK,KAAM,QAAO,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,wBAAuB,IAAK,GAAE,KAAM,QAAO,KAAM,MAAK,GAAE,EAAC,MAAO,2BAA0B,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,0BAAyB,IAAK,GAAE,KAAM,KAAI,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,sBAAqB,IAAK,GAAE,KAAM,OAAM,KAAM,QAAO,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,QAAO,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,QAAO,KAAM,MAAK,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,QAAO,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,sBAAqB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,UAAS,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,wBAAuB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,GAAE,KAAM,QAAO,KAAM,OAAM,GAAE,EAAC,MAAO,uBAAsB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,QAAO,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,yBAAwB,IAAK,IAAG,KAAM,QAAO,KAAM,OAAM,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,QAAO,GAAE,EAAC,MAAO,uBAAsB,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,0BAAyB,IAAK,GAAE,KAAM,OAAM,KAAM,QAAO,GAAE,EAAC,MAAO,yBAAwB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,yBAAwB,IAAK,GAAE,KAAM,QAAO,KAAM,MAAK,GAAE,EAAC,MAAO,iCAAgC,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,0BAAyB,IAAK,GAAE,KAAM,QAAO,KAAM,OAAM,GAAE,EAAC,MAAO,6BAA4B,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qCAAoC,IAAK,IAAG,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,qBAAoB,IAAK,KAAI,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,yBAAwB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,yBAAwB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,wBAAuB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,wBAAuB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,QAAO,GAAE,EAAC,MAAO,2BAA0B,IAAK,IAAG,KAAM,OAAM,KAAM,QAAO,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,IAAG,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,sBAAqB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,IAAG,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,wBAAuB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,kCAA8B,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,uBAAsB,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,2BAA0B,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,gCAAyB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,SAAQ,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,UAAS,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,0BAAsB,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,0BAAyB,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,GAAE,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,oCAAmC,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,IAAG,KAAM,KAAI,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,uBAAsB,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,eAAc,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,uBAAsB,IAAK,GAAE,KAAM,MAAK,KAAM,KAAI,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,yBAAwB,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,sBAAqB,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,oCAAmC,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,yBAAwB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,yBAAwB,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,wBAAuB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,sBAAqB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,kBAAiB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,sBAAqB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mCAAkC,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,2BAA0B,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,IAAG,KAAM,OAAM,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,uBAAsB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,0BAAyB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,sBAAqB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,mBAAkB,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,uBAAsB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,oBAAmB,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,qBAAoB,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,uBAAsB,IAAK,GAAE,KAAM,MAAK,KAAM,MAAK,GAAE,EAAC,MAAO,oBAAmB,IAAK,IAAG,KAAM,OAAM,KAAM,KAAI,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAU,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,gBAAe,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,6BAA4B,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,WAAU,IAAK,GAAE,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,QAAO,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,YAAQ,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,cAAa,IAAK,GAAE,KAAM,MAAK,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,aAAY,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,uBAAsB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,uBAAsB,IAAK,IAAG,KAAM,OAAM,KAAM,MAAK,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,iBAAgB,IAAK,IAAG,KAAM,OAAM,KAAM,OAAM,GAAE,EAAC,MAAO,YAAW,IAAK,GAAE,KAAM,OAAM,KAAM,MAAK,CAAC;;;ADSzrvE,IAAM,YAAY,kBAAU,IAAI,CAAC,MAC7B,IAAI,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE,CAAC;AAG5E,UAAU,KAAK,SAAU,GAAa,GAAa;AAC/C,SAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK;AACxD,CAAC;AAED,IAAM,YAA+C,CAAC;AACtD,SAAS,IAAI,GAAG,IAAI,UAAU,SAAS,GAAG,KAAK;AAC3C,QAAM,IAAI,UAAU,CAAC;AACrB,YAAU,KAAK;AAAA,IACX,MAAM,EAAE,KAAK,MAAM,KAAK,CAAC,EAAE,CAAC,EAAE,YAAY;AAAA,IAAG,OAAO;AAAA,EACxD,CAAC;AACD,MAAI,CAAC,CAAC,EAAE,YAAY;AAChB,cAAU,KAAK;AAAA,MACX,MAAM,EAAE;AAAA,MAAY,OAAO;AAAA,IAC/B,CAAC;AAAA,EACL;AACJ;AAQA,SAAS,qBAAqB,QAAe,QAAuB;AAChE,MAAK,OAAO,YAAY,OAAO,YAAc,OAAO,aAAa,OAAO,WAAY;AAChF,WAAO;AAAA,EACX,OACK;AACD,QAAI,UAAU,KAAK,KAAK,OAAO,WAAW;AAC1C,QAAI,UAAU,KAAK,KAAK,OAAO,WAAW;AAC1C,QAAI,QAAQ,OAAO,YAAY,OAAO;AACtC,QAAI,WAAW,KAAK,KAAK,QAAQ;AACjC,QAAI,OAAO,KAAK,IAAI,OAAO,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,IAAI,QAAQ;AAC5G,QAAI,OAAO,GAAG;AACV,aAAO;AAAA,IACX;AACA,WAAO,KAAK,KAAK,IAAI;AACrB,WAAO,OAAO,MAAM,KAAK;AACzB,WAAO,OAAO,KAAK;AACnB,WAAO,OAAO;AACd,WAAO;AAAA,EACX;AACJ;AAOA,SAAS,qBAAqB,OAAoC;AAC9D,MAAI,OAA8C,EAAE,MAAM,IAAO;AACjE,WAAS,YAAY,WAAW;AAC5B,UAAM,OAAO,qBAAqB,OAAO,EAAE,UAAU,SAAS,UAAU,WAAW,SAAS,UAAU,CAAC;AACvG,QAAI,OAAO,KAAK,MAAM;AAClB,aAAO,EAAE,MAAM,SAAS;AAAA,IAC5B;AAAA,EACJ;AACA,SAAO,KAAK;AAChB;AAOA,SAAS,iBAAiB,KAAmC;AACzD,MAAI,OAEA,EAAE,MAAM,IAAO;AACnB,WAAS,YAAY,WAAW;AAC5B,UAAM,WAAO,+BAAS,IAAI,YAAY,GAAG,SAAS,IAAI;AACtD,QAAI,OAAO,KAAK,MAAM;AAClB,aAAO,EAAE,MAAM,SAAS;AAAA,IAC5B;AAAA,EACJ;AACA,SAAO,KAAK,WAAW,UAAU,KAAK,SAAS,KAAK,IAAI;AAC5D;AASA,SAAS,aAAa,mBAAyD;AAC3E,MAAI,OAAO,sBAAsB,UAAU;AAEvC,UAAM,iBAAiB,UAAU,KAAK,CAAC,MACnC,EAAE,KAAK,YAAY,MAAM,kBAAkB,YAAY,KAAK,EAAE,eAAe,iBAAiB;AAClG,QAAI,CAAC,CAAC,gBAAgB;AAClB,aAAO;AAAA,IACX;AAEA,UAAM,oBAAoB,UAAU,KAAK,OACrC,EAAE,SAAS,kBAAkB,YAAY,CAAC;AAC9C,QAAI,CAAC,CAAC,mBAAmB;AACrB,aAAO,UAAU,kBAAkB,KAAK;AAAA,IAC5C;AAEA,WAAO,iBAAiB,kBAAkB,YAAY,CAAE;AAAA,EAC5D,OACK;AACD,UAAM,uBAAuB,UAAU,KAAK,CAAC,MACzC,EAAE,aAAa,kBAAkB,YACjC,EAAE,cAAc,kBAAkB,SAAS;AAC/C,QAAI,CAAC,CAAC,sBAAsB;AACxB,aAAO;AAAA,IACX;AACA,WAAO,qBAAqB,iBAAiB;AAAA,EACjD;AACJ;;;AExHO,IAAM,cAAc,OAAO,OAAO;AAAA,EACrC,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,gBAAgB;AAAA,EAChB,sBAAsB;AAAA,EACtB,oBAAoB;AACxB,CAAC;AAKM,IAAM,YAA0B;AAAA,EACnC;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA;AAAA,IACI,IAAI,YAAY;AAAA,IAChB,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AACJ;AAOO,SAAS,YAAY,UAAmD;AAC3E,SAAO,UAAU,KAAK,QAAM,GAAG,OAAO,YAAY,GAAG,QAAQ,YAAY,GAAG,QAAQ,YAAY,GAAG,SAAS,QAAQ;AACxH;;;AChLA,IAAqB,QAArB,MAAqB,OAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMvB,OAAO,SAAS,OAAe,MAA8D;AACzF,QAAI,aAAa,cAAc,cAAc,OAAO,WAAW,QAAQ;AAEvE,QAAI,WAAW,GAAG;AACd,kBAAY,MAAM,YAAY,IAAI;AAAA,IACtC;AACA,kBAAc,MAAM,MAAM,WAAW,MAAM,MAAM,OAAO,OAAO,KAAK,EAAE,IAAI,OAAO,OAAO,KAAK,QACrF,OAAO,KAAK,KAAM,IAAK,KAAK,EAAE;AACtC,mBAAe,MAAO,OAAO,cAAc;AAC3C,mBAAe,IAAK,KAAK,cAAe,MAAM,MAAM,MAAM,cAAc,IAAI,IACxE,MAAM,MAAM,eAAe,IAAI,IAAI;AACvC,YAAQ,MAAM,MAAO,eAAe,OAAQ,QAAQ,eAAe,GAAG;AAEtE,WAAO;AAAA,MACH,OAAO,IAAI,MAAO,IAAK,KAAK,MAAM,MAAM,WAAW,IAAM,MAAM,MAAO,eAAe,EAAG,CAAC;AAAA,MACzF,MAAM,EAAE,MAAM,MAAM,MAAM,YAAY,IAAI,IAAI,QAAQ,MAAM,MAAO,QAAQ,OAAQ,EAAE,GAAG,QAAQ,EAAE;AAAA,MAClG,UAAU,QAAQ;AAAA,IACtB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,UAAU,MAAc,OAAuB;AAClD,UAAM,QAAQ,OAAM,SAAS,OAAO,IAAI,GACpC,SAAS,MAAM,MAAM,iBAAiB,SAAS,aAAa,CAAC,GAC7D,UAAU,MAAM,YAAY,OAAO,QAAQ,MAAM,IAAI,GACrD,MAAM,MAAM,MAAM,aAAa;AACnC,QAAI,MAAM;AAEV,QAAI,CAAC,OAAO,UAAU,MAAM,OAAO,OAAO,IAAI,GAAG;AAC7C,aAAO,cAAc,GAAG;AAAA,IAC5B,WACS,QAAQ,KAAK,SAAS;AAC3B,aAAO;AAAA,IACX,WACS,QAAQ,KAAK,SAAS;AAC3B,aAAO;AAAA,IACX,OACK;AACD,aAAO,cAAc,GAAG,KAAK,UAAU,WAAW;AAAA,IACtD;AACA,WAAO,MAAM,MAAM,cAAc,MAAM,IAAI,IAAI,UAC3C,MAAM,SAAS,SAAS,IAAI;AAEhC,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,aAAa,MAAc,OAAuB;AACrD,UAAM,QAAQ,OAAM,SAAS,OAAO,IAAI,GACpC,SAAS,MAAM,MAAM,iBAAiB,SAAS,aAAa,CAAC,GAC7D,UAAU,MAAM,YAAY,OAAO,QAAQ,MAAM,IAAI,KACjD,MAAM,YAAY,MAAM,MAAM,OAAO,OAAO,GAChD,MAAM,MAAM,MAAM,aAAa;AACnC,QAAI,MAAM;AAEV,QAAI,QAAQ,GAAG;AACX,aAAQ,UAAU,uDAAe;AAAA,IACrC,WACS,QAAQ,GAAG;AAChB,aAAQ,UAAU,2CAAa;AAAA,IACnC,OACK;AACD,cAAQ,UAAU,uBAAQ,wBACtB,cAAc,GAAG,EAAE,QAAQ,sBAAO,EAAE;AAAA,IAC5C;AACA,WAAO,MAAM,MAAM,cAAc,MAAM,MAAM,GAAG,IAAI,IAAI,MACpD,MAAM,SAAS,SAAS,IAAI;AAEhC,WAAO;AAAA,EACX;AACJ;;;AChFO,IAAM,iBAAiB,OAAO,OAAO;AAAA,EACxC,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AACZ,CAAC;AAED,IAAqB,eAArB,MAAqB,aAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAW7B,OAAO,aAAa,WAAyB,MAAY,OAAc,UAA6D;AAChI,UAAM,MAAM,aAAY,eAAe;AAAA,MACnC,CAAC,MACG,MAAM,YAAY,EAAE,MAAM,IAAI,KAC9B,EAAE,SAAS,SAAS,SAAS;AAAA,IACrC,GACI,YAAqD,CAAC,GACtD,WAAW,aAAY,aAAa,MAAM,OAAO,QAAQ;AAC7D,QAAI,SACA,QACA,gBACA,eACA,cACA,aACA,SACA,YACA;AACJ,QAAI,KAAK;AACL,gBAAU,IAAI;AACd,eAAS,IAAI;AACb,uBAAiB,IAAI;AACrB,sBAAgB,IAAI;AACpB,qBAAe,IAAI;AACnB,oBAAc,IAAI;AAClB,gBAAU,IAAI;AACd,mBAAa,IAAI;AACjB,sBAAgB,IAAI;AAAA,IACxB,OAAO;AACH,YAAM,WAAW,OAAO,YAAY,MAAM,UAAU,IAAI;AACxD,gBAAU,SAAS;AACnB,eAAS,SAAS;AAClB,uBAAiB,OAAO,YAAY,MAAM,UAAU,KAAK;AACzD,sBAAgB,eAAe;AAC/B,qBAAe,eAAe;AAC9B,oBAAc,MAAM,WAAW,eAAe,GAAG;AACjD,gBACI,iBACA,gBACA,OAAO,uBAAuB,cAAc;AAChD,mBACI,iBACA,gBACA,OAAO,0BAA0B,cAAc;AACnD,sBACI,iBACA,gBACA,OAAO,iBAAiB,gBAAgB,IAAI;AAEhD,mBAAY,eAAe,KAAK;AAAA,QAC5B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,IACL;AACA,aAAS,YAAY,WAAW;AAC5B,YAAM,SAAS,SAAS,WACnB,CAAC,SAAS,kBAAkB,SAAS,iBAAiB,YACrD,SAAS,SACT;AACN,cAAQ,SAAS,IAAI;AAAA,QACjB,KAAK,YAAY;AACb,oBAAU,KAAK;AAAA,YACX;AAAA,YACA,MAAM,MAAM,WAAW,SAAS,MAAM,MAAM;AAAA,UAChD,CAAC;AACD;AAAA,QACJ,KAAK,YAAY;AACb,oBAAU,KAAK;AAAA,YACX;AAAA,YACA,MAAM,SACA,MAAM,WAAW,aAAa,MAAM,IACpC;AAAA,UACV,CAAC;AACD;AAAA,QACJ,KAAK,YAAY;AACb,oBAAU,KAAK;AAAA,YACX;AAAA,YACA,MAAM,MAAM,WAAW,eAAe,MAAM,MAAM;AAAA,UACtD,CAAC;AACD;AAAA,QACJ,KAAK,YAAY;AACb,oBAAU,KAAK;AAAA,YACX;AAAA,YACA,MAAM,MAAM,WAAW,eAAe,MAAM,MAAM;AAAA,UACtD,CAAC;AACD;AAAA,QACJ,KAAK,YAAY;AACb,oBAAU,KAAK;AAAA,YACX;AAAA,YACA,MAAM,SACA,MAAM,WAAW,SAAS,MAAM,IAChC;AAAA,UACV,CAAC;AACD;AAAA,QACJ,KAAK,YAAY;AACb,oBAAU,KAAK;AAAA,YACX;AAAA,YACA,MAAM,SACA,MAAM,WAAW,eAAe,MAAM,IACtC;AAAA,UACV,CAAC;AACD;AAAA,QACJ,KAAK,YAAY;AACb,cAAI;AACA,sBAAU,KAAK;AAAA,cACX;AAAA,cACA,MAAM,MAAM;AAAA,gBACR;AAAA,gBACA,KAAK,MAAM,gBAAgB,CAAC,IAAI;AAAA,cACpC;AAAA,YACJ,CAAC;AACL;AAAA,QACJ,KAAK,YAAY;AACb,cAAI;AACA,sBAAU,KAAK;AAAA,cACX;AAAA,cACA,MAAM,MAAM;AAAA,gBACR;AAAA,gBACA,KAAK,MAAM,aAAa,CAAC,IAAI;AAAA,cACjC;AAAA,YACJ,CAAC;AACL;AAAA,QACJ,KAAK,YAAY;AACb,cAAI;AACA,sBAAU,KAAK;AAAA,cACX;AAAA,cACA,MAAM,MAAM;AAAA,gBACR;AAAA,gBACA,KAAK,MAAM,gBAAgB,CAAC,IAAI;AAAA,cACpC;AAAA,YACJ,CAAC;AACL;AAAA,QACJ,KAAK,YAAY;AACb,cAAI;AACA,sBAAU,KAAK;AAAA,cACX;AAAA,cACA,MAAM,MAAM;AAAA,gBACR;AAAA,gBACA,KAAK,MAAM,aAAa,CAAC,IAAI;AAAA,cACjC;AAAA,YACJ,CAAC;AACL;AAAA,QACJ,KAAK,YAAY;AACb,oBAAU,KAAK;AAAA,YACX;AAAA,YACA,MAAM,SACA,MAAM,WAAW,SAAS,MAAM,IAChC;AAAA,UACV,CAAC;AACD;AAAA,QACJ,KAAK,YAAY;AACb,cAAI;AACA,sBAAU,KAAK;AAAA,cACX;AAAA,cACA,MAAM,MAAM;AAAA,gBACR;AAAA,gBACA,aAAa,MAAM;AAAA,cACvB;AAAA,YACJ,CAAC;AACL;AAAA,QACJ,KAAK,YAAY;AACb,cAAI;AACA,sBAAU,KAAK;AAAA,cACX;AAAA,cACA,MAAM,MAAM;AAAA,gBACR;AAAA,gBACA,aAAa,MAAM;AAAA,cACvB;AAAA,YACJ,CAAC;AACL;AAAA,QACJ,KAAK,YAAY;AACb,cAAI;AACA,sBAAU,KAAK;AAAA,cACX;AAAA,cACA,MAAM,MAAM;AAAA,gBACR;AAAA,gBACA,aAAa,QAAQ;AAAA,cACzB;AAAA,YACJ,CAAC;AACL;AAAA,QACJ,KAAK,YAAY;AACb,oBAAU,KAAK;AAAA,YACX;AAAA,YACA,MAAM,SACA,MAAM,WAAW,cAAc,MAAM,IACrC;AAAA,UACV,CAAC;AACD;AAAA,QACJ,KAAK,YAAY;AACb,oBAAU,KAAK;AAAA,YACX;AAAA,YACA,MAAM,SACA,MAAM,WAAW,QAAQ,MAAM,IAC/B;AAAA,UACV,CAAC;AACD;AAAA,QACJ,KAAK,YAAY;AACb,oBAAU,KAAK;AAAA,YACX;AAAA,YACA,MAAM,MAAM,WAAW,QAAQ,KAAK,MAAM;AAAA,UAC9C,CAAC;AACD;AAAA,QACJ,KAAK,YAAY;AACb,oBAAU,KAAK;AAAA,YACX;AAAA,YACA,MAAM,MAAM,WAAW,QAAQ,KAAK,MAAM;AAAA,UAC9C,CAAC;AACD;AAAA,QACJ,KAAK,YAAY;AACb,oBAAU,KAAK;AAAA,YACX;AAAA,YACA,MAAM,MAAM,WAAW,QAAQ,KAAK,MAAM;AAAA,UAC9C,CAAC;AACD;AAAA,QACJ,KAAK,YAAY;AACb,cAAI;AACA,sBAAU,KAAK;AAAA,cACX;AAAA,cACA,MAAM,MAAM;AAAA,gBACR;AAAA,gBACA,aAAa,MAAM;AAAA,cACvB;AAAA,YACJ,CAAC;AACL;AAAA,QACJ,KAAK,YAAY;AACb,cAAI;AACA,sBAAU,KAAK;AAAA,cACX;AAAA,cACA,MAAM,MAAM;AAAA,gBACR;AAAA,gBACA,gBAAgB,MAAM;AAAA,cAC1B;AAAA,YACJ,CAAC;AACL;AAAA,QACJ,KAAK,YAAY;AACb,cAAI,UAAU,MAAM,kBAAkB,GAAG;AACrC,sBAAU,KAAK;AAAA,cACX;AAAA,cACA,MAAM,MAAM;AAAA,gBACR,OAAO;AAAA,kBACH;AAAA,kBACA;AAAA,gBACJ;AAAA,gBACA;AAAA,cACJ;AAAA,YACJ,CAAC;AAAA,UACL;AACA;AAAA,QACJ,KAAK,YAAY;AACb,cAAI,iBAAiB,MAAM,UAAU,KACjC,MAAM,QAAQ,MACd,MAAM,YAAY,SAAS,MAAM,aAAa,IAAI,CAAC,GAAG;AACtD,sBAAU,KAAK;AAAA,cACX;AAAA,cACA,MAAM,MAAM;AAAA,gBACR;AAAA,gBACA,MAAM,SAAS,gBAAgB;AAAA,cACnC;AAAA,YACJ,CAAC;AAAA,UACL;AACA;AAAA,QACJ,KAAK,YAAY;AACb,cAAI,iBACA,MAAM,UAAU,MACf,MAAM,QAAQ,MACV,MAAM,cAAc,WAAW,UAC5B,MAAM,QAAQ,OACtB,MAAM,YAAY,SAAS,MAAM,aAAa,IAAI,CAAC,GACrD;AACE,sBAAU,KAAK;AAAA,cACX;AAAA,cACA,MAAM,MAAM;AAAA,gBACR;AAAA,gBACA,MAAM,SAAS,gBAAgB;AAAA,cACnC;AAAA,YACJ,CAAC;AAAA,UACL;AACA;AAAA,MACR;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,aAAa,MAAY,OAAc,UAAoB;AAC9D,QAAI,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG;AACnC,aAAO,eAAe;AAAA,IAC1B;AACA,YAAQ,KAAK,OAAO,GAAG;AAAA,MACnB,KAAK,WAAW;AACZ,eAAO,eAAe;AAAA,MAC1B,KAAK,WAAW;AACZ,eAAO,eAAe;AAAA,MAC1B,KAAK,WAAW;AACZ,eAAO,eAAe;AAAA,MAC1B,KAAK,WAAW;AACZ,eAAO,eAAe;AAAA,MAC1B,KAAK,WAAW;AACZ,eAAO,eAAe;AAAA,MAC1B,KAAK,WAAW;AACZ,eAAO,eAAe;AAAA,MAC1B,KAAK,WAAW;AACZ,eAAO,eAAe;AAAA,IAC9B;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,mBAAmB,MAAoB,UAAoB;AAC9D,UAAM,EAAE,OAAO,MAAM,IAAI,MAAM,UAAU,IAAI;AAC7C,UAAM,SAAS,aAAY;AAAA,MACvB;AAAA,QACI,YAAY,YAAY,UAAU;AAAA;AAAA,QAClC,YAAY,YAAY,MAAM;AAAA;AAAA,QAC9B,YAAY,YAAY,cAAc;AAAA;AAAA,QACtC,YAAY,YAAY,cAAc;AAAA;AAAA,MAC1C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AACA,WAAO;AAAA,MACH,cAAc,OAAO,CAAC,EAAE;AAAA,MACxB,gBAAgB,MAAM,WAAW,OAAO,CAAC,EAAE,MAAM,GAAG;AAAA,MACpD,MAAM,OAAO,CAAC,EAAE;AAAA,MAChB,OAAO,OAAO,CAAC,EAAE;AAAA,IACrB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,aAAa,MAAoB,UAAoB;AACxD,UAAM,EAAE,OAAO,MAAM,IAAI,MAAM,UAAU,IAAI;AAC7C,WAAO,aAAY,aAAa,WAAW,OAAO,OAAO,QAAS;AAAA,EACtE;AACJ;AA/WqB,aACV,iBAA6B,CAAC;AADzC,IAAqB,cAArB;;;ACJA,IAAM,WAAqB,CAAC;AAC5B,IAAM,gBAA0B,CAAC;AACjC,IAAI,cAAc;AAAlB,IACE;AADF,IAEE,sBAAsB;AAFxB,IAGE,SAAS;AAYJ,SAAS,iBACd,MACA,MACA,UACA,SACA,cACA,aACA;AACA,QAAM,EAAE,OAAO,MAAM,IAAI,MAAM,UAAU,IAAI;AAC7C,WAAS,SAAS;AAClB,gBAAc,SAAS;AACvB,QAAM,QAAQ,MAAM,OAClB,MAAM,MAAM,KACZ,MAAM,MAAM,WACZ,EAAE,cAAc,gBAAgB,MAAM,MAAM,IAAI,YAAY,mBAAmB,MAAM,QAAQ,GAC7F,sBAAsB,MAAM,YAAY,cAAc,IAAI,GAC1D,wBACE,OAAO,mBAAmB,gBACzB,MAAM,YAAY,gBAAgB,IAAI,KAAM,eAAe,OAAO,MAAM,KAAK,OAAO,KACvF,cAAc,MAAM,YAAY,MAAM,IAAI,GAC1C,eAAe,MAAM,YAAY,OAAO,IAAI,GAC5C,YAAY,eAAe,CAAC,cAC5B,cAAc,CAAC,WACf,qBAAqB,CAAC,gBAAgB,MAAM,YAAY,MAAM,WAAW,OAAO,EAAE,GAAG,IAAI,GACzF,YAAY,aAAa,CAAC,qBAC1B,cAAc,aAAa,qBAC3B,WAAW,MAAM,qBAAqB,SAAS,MAAM,GACrD,aAAa,MAAM,UAAU,MAAM,IAAI,GACvC,YAAY,gBAAgB,QAAQ,WAAW,UAAU,QAAQ;AAEnE,YAAU;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,gBAAc;AACd,WAAS,SAAS;AAClB,wBAAsB,OAAO,iBAAiB,cAAc,SAAS,CAAC,CAAC;AAEvE,MAAI,QAAQ,WAAW,SAAS;AAC9B,4BAAwB;AAAA,EAC1B,OAAO;AACL,4BAAwB;AAAA,EAC1B;AACA,gCAA8B;AAE9B,MAAI,QAAQ,aAAa,aAAa,CAAC,UAAU;AAC/C,QAAI,QAAQ,WAAW,SAAS;AAC9B,sBAAgB,cAAc,8CAAW;AAAA,IAC3C,WAAW,aAAa;AACtB,sBAAgB,iBAAiB,8CAAW;AAAA,IAC9C,WACE,EAAG,UAAU,kBAAE,UAAU,MAAM,MAAO,UAAU,kBAAE,QAAS,UAAU,kBAAE,SAAS,MAAM,IACtF;AACA,sBAAgB,oBAAoB,iEAAe;AAAA,IACrD;AAAA,EACF;AACA,MAAI,gBAAgB,OAAO;AACzB,eAAW,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC;AAAA,EACtD;AAGA,MACE,uBACE,UAAU,kBAAE,UAAU,MAAM,MAAO,UAAU,kBAAE,QAAS,UAAU,kBAAE,SAAS,MAAM,IACrF;AACA,UAAM,eAAe,MAAM,aAAa;AACxC,QAAI,eAAe,GAAG;AACpB,sBAAgB,MAAM,cAAc,cAAc,UAAU,CAAC;AAAA,IAC/D;AAAA,EACF;AAGA,SAAO;AAAA,IACL,UAAU,CAAC,GAAG,IAAI,IAAI,QAAQ,CAAC;AAAA,IAC/B,eAAe,CAAC,GAAG,IAAI,IAAI,aAAa,CAAC;AAAA,EAC3C;AACF;AAEA,SAAS,0BAA0B;AACjC,QAAM,EAAE,OAAO,KAAK,YAAY,WAAW,UAAU,OAAO,WAAW,YAAY,IAAI;AACvF,MAAI,UAAU,kBAAE,UAAU,MAAM,KAAK,MAAM,IAAI;AAC7C,eAAW,mBAAmB,mDAAW;AAAA,EAC3C,WAAW,UAAU,kBAAE,WAAW,MAAM,KAAK,MAAM,IAAI;AACrD,eAAW,iBAAiB,6CAAU;AAAA,EACxC,WAAW,UAAU,kBAAE,MAAM,MAAM,KAAK,MAAM,IAAI;AAChD,eAAW,kBAAkB,6CAAU;AAAA,EACzC,WACG,WAAW,aAAa,kBAAE,OAAO,kBAAE,UAAU,MAAM,MACnD,WAAW,aAAa,kBAAE,cAAc,kBAAE,SAAS,QAAQ,GAC5D;AACA,eAAW,mBAAmB,yDAAY;AAAA,EAC5C,WAAW,WAAW,aAAa,kBAAE,cAAc,kBAAE,SAAS,MAAM,KAAK,MAAM,IAAI;AACjF,eAAW,kBAAkB,mDAAW;AAAA,EAC1C,WAAW,WAAW,aAAa,kBAAE,cAAc,kBAAE,SAAS,MAAM,MAAM,MAAM,IAAI;AAClF,eAAW,iBAAiB,6CAAU;AAAA,EACxC,WACG,WAAW,aAAa,kBAAE,cAAc,kBAAE,SAAS,MAAM,MAAM,MAAM,MACrE,UAAU,kBAAE,UAAU,QAAQ,GAC/B;AACA,eAAW,qBAAqB,yDAAY;AAAA,EAC9C;AACA,MAAI,aAAa,CAAC,UAAU;AAC1B,UAAM,QAAQ,MAAM,SAAS,MAAM;AACnC,QAAI,MAAM,OAAO,SAAS,GAAG;AAC3B;AAAA,QACE,0BAA0B,MAAM,SAAS,CAAC;AAAA,QAC1C,gDAAa,MAAM,YAAY,CAAC;AAAA,MAClC;AAAA,IACF;AAEA,QAAI,UAAU,kBAAE,SAAS,MAAM,MAAM,MAAM,IAAI;AAC7C,YAAM,YAAY,MAAM,UAAU,CAAC;AACnC;AAAA,QACE,uBAAuB,MAAM,UAAU,UAAU,MAAM,UAAU,KAAK;AAAA,QACtE,mEAAiB,MAAM,aAAa,UAAU,MAAM,UAAU,KAAK;AAAA,MACrE;AACA,sBAAgB,oBAAoB,qEAAc;AAElD,UAAI,UAAU,kBAAE,UAAU,UAAU,kBAAE,MAAM;AAC1C,wBAAgB,oBAAoB,iEAAe;AAAA,MACrD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,UAAU,kBAAE,YAAY,QAAQ,KAAK,QAAQ,KAAK;AACpD,eAAW,gBAAgB,6CAAU;AACrC,oBAAgB,kBAAkB,mDAAW;AAC7C,QAAI,uBAAuB,WAAW;AACpC,sBAAgB,iBAAiB,8HAA+B;AAAA,IAClE;AAEA,QAAI,aAAa,UAAU,kBAAE,SAAS,EAAE,UAAU,kBAAE,UAAU,QAAQ,KAAK;AACzE,sBAAgB,iBAAiB,uCAAS;AAAA,IAC5C;AACA,oBAAgB,oBAAoB,iEAAe;AAAA,EACrD,WAAW,UAAU;AACnB,oBAAgB,oBAAoB,iEAAe;AACnD,QAAI,uBAAuB,WAAW;AACpC,sBAAgB,0JAAkC;AAAA,IACpD;AAAA,EACF;AAEA,MAAI,eAAe,EAAE,UAAU,kBAAE,WAAW,QAAQ,KAAK;AACvD,UAAM,QAAQ,MAAM,QAAQ,CAAC,EAAE,SAAS,MAAM;AAC9C;AAAA,MACE,mCAAmC,MAAM,OAAO,CAAC,EAAE;AAAA,MACnD,iFAAqB,MAAM,OAAO,CAAC,EAAE;AAAA,IACvC;AAAA,EACF;AACA,MACE,gBACE,UAAU,kBAAE,UAAU,MAAM,MAC3B,SAAS,kBAAE,SAAS,EAAE,UAAU,kBAAE,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,KAC9D;AACA,UAAM,SAAS,WAAW,UAAU,OAAO,MAAM;AACjD,QAAI,OAAO,SAAS,GAAG;AACrB;AAAA,QACE,mBACE,OAAO,IAAI,CAAC,MAAc,SAAS,MAAM,eAAe,CAAC,CAAC,EAAE,EAAE,KAAK,OAAO;AAAA,QAC5E,yDAAiB,OAAO,IAAI,CAAC,MAAc,sBAAO,MAAM,eAAe,CAAC,CAAC,EAAE,EAAE,KAAK,SAAI;AAAA,MACxF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,0BAA0B;AACjC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAGJ,MAAI,eAAe,QAAQ,WAAW,QAAQ;AAE5C;AAAA,MACG,UAAU,kBAAE,UAAU,QAAQ,MAAQ,UAAU,kBAAE,SAAS,QAAQ,IAChE,2DACA;AAAA,IACN;AAEA,QACG,UAAU,kBAAE,SAAS,MAAM,MAC3B,UAAU,kBAAE,WAAW,MAAM,KAAK,MAAM,MACxC,UAAU,kBAAE,UAAU,MAAM,KAAK,MAAM,MACvC,UAAU,kBAAE,SAAS,MAAM,GAC5B;AACA,sBAAgB,gBAAgB,iEAAe;AAAA,IACjD;AAAA,EACF,WAGE,gBACE,UAAU,kBAAE,WAAW,QAAQ,MAAM,QAAQ,OAC5C,UAAU,kBAAE,SAAS,QAAQ,KAC7B,UAAU,kBAAE,WAAW,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE,SAAS,GAAG,IACtD;AACA,oBAAgB,kBAAkB,+DAAa;AAAA,EACjD;AAGA,MACE,aACA,CAAC,aACA,QAAQ,WAAW,UAAU,QAAQ,WAAW,aACjD,CAAC,oBAAoB,OAAO,QAAQ,GACpC;AACA,UAAM,QAAQ,MAAM,SAAS,MAAM;AACnC,QAAI,MAAM,OAAO,SAAS,GAAG;AAC3B;AAAA,QACE,0BAA0B,MAAM,OAAO,CAAC,EAAE,GAAG;AAAA,QAC7C,gDAAa,MAAM,OAAO,CAAC,EAAE,GAAG;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAEA,MAAK,UAAU,kBAAE,WAAW,QAAQ,KAAM,QAAQ,IAAI;AACpD,YAAQ,YAAY;AACpB,eAAW,gBAAgB,6CAAU;AACrC,oBAAgB,kBAAkB,mDAAW;AAC7C,QAAI,uBAAuB,WAAW;AACpC,sBAAgB,iBAAiB,8HAA+B;AAAA,IAClE;AAEA,QAAI,aAAa,UAAU,kBAAE,SAAS,EAAE,UAAU,kBAAE,UAAU,QAAQ,KAAK;AACzE,sBAAgB,iBAAiB,uCAAS;AAC1C,UAAI,aAAa,QAAQ,WAAW,SAAS;AAC3C,uBAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF,WAGE,UAAU,kBAAE,UACV,MAAM,WAAW,UAAU,QAAQ,MAAQ,QAAQ,WAAW,YAAY,QAAQ,OACpF,aACA;AACA,oBAAgB,qBAAqB,wCAAU;AAAA,EACjD;AACA,MAAI,MAAM,kBAAkB,MAAM,GAAG;AACnC,eAAW,kBAAkB,2EAAe;AAAA,EAC9C;AACF;AAEA,SAAS,gCAAgC;AACvC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAOJ,MAAI,2BAA2B;AAE/B,MAAI,CAAC,SAAS,UAAU,MAAM,SAAS,MAAM,MAAM,MAAM,QAAQ,IAAI,GAAG;AACtE,UAAM,sBAAsB,MAAM,OAAO,MAAM,IAAI,IAAI;AACvD,+BACE,MAAM,QAAQ,KAAK,uBAAuB,MAAM,QAAQ,KAAK,sBAAsB;AAAA,EACvF;AAEA,UAAQ,OAAO;AAAA,IACb,KAAK,kBAAE;AACL,cAAQ,YAAY;AACpB,UAAI,MAAM,IAAI;AACZ,wBAAgB,eAAe,mDAAW;AAAA,MAC5C;AACA,UAAI,QAAQ,WAAW,WAAW,MAAM,MAAM,QAAQ,IAAI;AACxD,wBAAgB,iBAAiB,6CAAU;AAAA,MAC7C;AACA,UAAI,aAAa,QAAQ,WAAW,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,SAAS,GAAG,GAAG;AACrF,wBAAgB,qBAAqB,6EAAiB;AACtD,YAAI,QAAQ,WAAW,SAAS;AAC9B,yBAAe;AAAA,QACjB;AAAA,MACF;AACA,UAAI,QAAQ,IAAI;AACd,mBAAW,uBAAuB,oFAAmB;AACrD,wBAAgB,eAAe,6CAAU;AACzC,YAAI,aAAa;AACf,0BAAgB,eAAe,mDAAW;AAAA,QAC5C;AACA,YAAI,uBAAuB,aAAa,QAAQ,WAAW,SAAS;AAClE,0BAAgB,oIAAgC;AAAA,QAClD;AACA,wBAAgB,kBAAkB,mDAAW;AAAA,MAC/C,WAAW,QAAQ,MAAM,CAAC,QAAQ;AAChC,mBAAW,wBAAwB,wEAAiB;AACpD,wBAAgB,eAAe,6CAAU;AACzC,wBAAgB,eAAe,mDAAW;AAC1C,YAAI,uBAAuB,aAAa,QAAQ,WAAW,SAAS;AAClE,0BAAgB,oIAAgC;AAAA,QAClD;AACA,wBAAgB,kBAAkB,mDAAW;AAAA,MAC/C,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,SAAS,GAAG,GAAG;AACjD,YAAI,QAAQ,IAAI;AACd,qBAAW,sBAAsB,gEAAc;AAC/C,cAAI,WAAW;AACb,gBAAI,QAAQ;AACV,8BAAgB,UAAU,gCAAO;AAAA,YACnC;AACA,gBAAI,uBAAuB,QAAQ,WAAW,SAAS;AACrD,8BAAgB,sIAAmC;AAAA,YACrD;AAAA,UACF;AAAA,QACF,OAAO;AACL,qBAAW,uBAAuB,wEAAiB;AACnD,0BAAgB,kBAAkB,mDAAW;AAC7C,cAAI,aAAa,QAAQ,WAAW;AAAS,2BAAe;AAC5D,cAAI,uBAAuB,aAAa,QAAQ,WAAW,SAAS;AAClE,oBAAQ,KAAK;AAAA,cACX,KAAK;AACH,oBAAI,QAAQ,WAAW,QAAQ;AAC7B,kCAAgB,oIAAgC;AAAA,gBAClD,OAAO;AACL,kCAAgB,8HAA+B;AAAA,gBACjD;AACA;AAAA,cACF,KAAK;AACH,oBAAI,QAAQ,WAAW,QAAQ;AAC7B,kCAAgB,8HAA+B;AAAA,gBACjD,OAAO;AACL,kCAAgB,iJAAmC;AAAA,gBACrD;AACA;AAAA,cACF,KAAK;AACH,oBAAI,QAAQ,WAAW,WAAW,QAAQ,WAAW,QAAQ;AAC3D,kCAAgB,iJAAmC;AAAA,gBACrD,OAAO;AACL,kCAAgB,6GAA8B;AAAA,gBAChD;AACA;AAAA,cACF,KAAK;AACH,oBAAI,QAAQ,WAAW,UAAU;AAC/B,kCAAgB,qKAAwC;AAAA,gBAC1D,OAAO;AACL,kCAAgB,6GAA8B;AAAA,gBAChD;AACA;AAAA,cACF,KAAK;AACH,oBAAI,QAAQ,WAAW,QAAQ;AAC7B,kCAAgB,uJAAoC;AAAA,gBACtD,OAAO;AACL,kCAAgB,qKAAwC;AAAA,gBAC1D;AACA;AAAA,YACJ;AAAA,UACF;AAAA,QACF;AACA,YAAI;AAAW,0BAAgB,eAAe,uCAAS;AACvD,wBAAgB,kBAAkB,mDAAW;AAAA,MAC/C;AACA,UAAI,QAAQ,IAAI;AACd,YAAI,QAAQ;AACV,qBAAW,aAAa,6CAAU;AAAA,QACpC,OAAO;AACL,qBAAW,uBAAuB,gEAAc;AAChD,cAAI,WAAW;AACb,4BAAgB,UAAU,gCAAO;AACjC,4BAAgB,eAAe,uCAAS;AAAA,UAC1C;AACA,0BAAgB,kBAAkB,mDAAW;AAAA,QAC/C;AACA,YAAI,QAAQ,WAAW,WAAW,WAAW;AAC3C,yBAAe;AAAA,QACjB;AAAA,MACF;AACA,UACE,QAAQ,WAAW,YAClB,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,SAAS,GAAG,KAAM,CAAC,UAAU,QAAQ,KACnE;AACA,wBAAgB,iBAAiB,wFAAkB;AAAA,MACrD;AACA;AAAA,IACF,KAAK,kBAAE;AACL,UAAI,OAAO,IAAI;AACb,wBAAgB,eAAe,mDAAW;AAC1C,YAAI,QAAQ,WAAW,SAAS;AAC9B,0BAAgB,iBAAiB,6CAAU;AAAA,QAC7C;AAAA,MACF;AAEA,UAAI,QAAQ,MAAO,QAAQ,MAAM,eAAgB,QAAQ,MAAO,QAAQ,MAAM,aAAc;AAC1F,gBAAQ,YAAY;AACpB,YAAI,QAAQ,IAAI;AACd,qBAAW,iBAAiB,uCAAS;AAAA,QACvC;AAAA,MACF;AAEA,UACE,cACE,QAAQ,WAAW,UAAU,MAAM,KAAK,MAAM,MAC7C,QAAQ,WAAW,YAAY,MAAM,KAAK,MAAM,MAChD,QAAQ,WAAW,UAAU,MAAM,MAAM,MAAM,MAAM,QAAQ,KAChE;AACA,wBAAgB,UAAU,0DAAa;AACvC,wBAAgB,kBAAkB,+DAAa;AAAA,MACjD;AACA;AAAA,IACF,KAAK,kBAAE;AACL,UAAI,MAAM,IAAI;AACZ,gBAAQ,YAAY;AAAA,MACtB;AAEA,UAAI,QAAQ,GAAG;AACb,mBAAW,WAAW,yFAAmB;AACzC,YAAI,WAAW;AACb,0BAAgB,eAAe,6CAAU;AACzC,0BAAgB,eAAe,mDAAW;AAC1C,0BAAgB,WAAW,sCAAQ;AACnC,cAAI;AAAQ,4BAAgB,UAAU,gCAAO;AAC7C,cAAI,qBAAqB;AACvB,4BAAgB,8IAAqC;AAAA,UACvD;AAAA,QACF;AACA,wBAAgB,kBAAkB,mDAAW;AAAA,MAC/C,WAAW,QAAQ,GAAG;AACpB,YAAI,QAAQ;AACV,qBAAW,cAAc,6CAAU;AACnC,cAAI,aAAa,QAAQ,WAAW,SAAS;AAC3C,2BAAe;AAAA,UACjB;AAAA,QACF,OAAO;AACL,qBAAW,sBAAsB,yFAAmB;AACpD,cAAI,WAAW;AACb,4BAAgB,eAAe,6CAAU;AACzC,4BAAgB,UAAU,gCAAO;AAAA,UACnC;AACA,0BAAgB,kBAAkB,mDAAW;AAAA,QAC/C;AAAA,MACF;AAEA;AAAA,IACF,KAAK,kBAAE;AACL,UACE,cACE,QAAQ,MAAM,WAAW,YAAY,KAAO,QAAQ,MAAM,QAAQ,WAAW,SAC/E;AACA,YAAI,WAAW;AACb,qBAAW,sBAAsB,8CAAW;AAC5C,0BAAgB,kBAAkB,+DAAa;AAC/C,0BAAgB,UAAU,0BAAM;AAAA,QAClC;AACA,YAAI,WAAW;AACb,0BAAgB,YAAY,sCAAQ;AAAA,QACtC;AAAA,MACF;AACA;AAAA,IACF,KAAK,kBAAE;AACL,UAAI,eAAe,QAAQ,KAAK,QAAQ,WAAW,QAAQ;AACzD,gBAAQ,YAAY;AAAA,MACtB,WACG,QAAQ,KAAK,QAAQ,WAAW,WAChC,QAAQ,MAAM,QAAQ,WAAW,QAClC;AACA,mBAAW,aAAa,6CAAU;AAClC,YAAI,WAAW;AACb,0BAAgB,SAAS,gCAAO;AAChC,0BAAgB,UAAU,0BAAM;AAChC,cAAI,aAAa,QAAQ,WAAW,SAAS;AAC3C,2BAAe;AAAA,UACjB;AAAA,QACF,OAAO;AACL,0BAAgB,iBAAiB,yDAAY;AAC7C,cAAI,eAAe,QAAQ,WAAW,QAAQ;AAC5C,4BAAgB,gBAAgB,iEAAe;AAAA,UACjD;AAAA,QACF;AACA,gBAAQ,YAAY;AAAA,MACtB,WAAW,eAAe,QAAQ,IAAI;AACpC,gBAAQ,YAAY;AAAA,MACtB,WAAW,QAAQ,IAAI;AACrB,mBAAW,WAAW,kCAAS;AAC/B,gBAAQ,YAAY;AAAA,MACtB;AACA;AAAA,IACF,KAAK,kBAAE;AACL,sBAAgB,sBAAsB,iCAAQ;AAC9C,UAAI,MAAM,MAAM,QAAQ,WAAW,YAAY,yBAAyB,YAAY;AAClF,YAAI,kBAAkB,OAAO;AAC7B,YAAI,MAAM,IAAI;AACZ,gBAAM,WAAW,KAAK,KACpB,SAAS,WAAW,OAAO;AAC7B,kBAAQ,OAAO;AAAA,YACb,KAAK,WAAW;AACd,gCAAkB,OAAO;AACzB;AAAA,YACF,KAAK,WAAW;AACd,gCAAkB,OAAO;AACzB;AAAA,YACF,KAAK,WAAW;AACd,gCAAkB,OAAO;AACzB;AAAA,UACJ;AAAA,QACF;AACA,YAAI,iBAAiB;AACnB,0BAAgB,YAAY,sCAAQ;AAAA,QACtC;AAAA,MACF;AACA,UAAI,QAAQ,IAAI;AACd,gBAAQ,YAAY;AAAA,MACtB;AACA;AAAA,IACF,KAAK,kBAAE;AACL,UAAI,MAAM,IAAI;AACZ,wBAAgB,qBAAqB,yDAAY;AACjD,YAAI,QAAQ,WAAW,WAAW,QAAQ,GAAG;AAC3C,0BAAgB,kBAAkB,+DAAa;AAAA,QACjD;AAAA,MACF;AAEA,UAAI,MAAM,KAAK,MAAM,MAAM,QAAQ,WAAW,SAAS;AACrD,wBAAgB,YAAY,sCAAQ;AACpC,wBAAgB,sBAAsB,yDAAY;AAAA,MACpD;AACA,UAAI,QAAQ,WAAW,WAAW,MAAM,KAAK,MAAM,IAAI;AACrD,mBAAW,iBAAiB,6CAAU;AAAA,MACxC;AACA,UAAI,OAAO,IAAI;AACb,gBAAQ,YAAY;AAAA,MACtB;AACA,cAAQ,KAAK;AAAA,QACX,KAAK;AACH,qBAAW,gBAAgB,6CAAU;AACrC,cAAI,QAAQ,WAAW,WAAW,WAAW;AAC3C,4BAAgB,iBAAiB,yDAAY;AAC7C,gBAAI,qBAAqB;AACvB,8BAAgB,iJAAmC;AAAA,YACrD;AACA,gBAAI,aAAa;AACf,yBAAW,YAAY,gCAAO;AAAA,YAChC;AAAA,UACF;AACA,0BAAgB,kBAAkB,mDAAW;AAC7C;AAAA,QACF,KAAK;AACH,qBAAW,gBAAgB,6CAAU;AACrC,cAAI,WAAW;AACb,4BAAgB,iBAAiB,yDAAY;AAC7C,gBAAI,qBAAqB;AACvB,8BAAgB,iJAAmC;AAAA,YACrD;AACA,gBAAI,QAAQ,WAAW,UAAU,aAAa;AAC5C,yBAAW,YAAY,gCAAO;AAAA,YAChC;AAAA,UACF;AACA,0BAAgB,kBAAkB,mDAAW;AAC7C;AAAA,QACF,KAAK;AACH,cAAI,QAAQ,WAAW,SAAS;AAC9B,gBAAI,WAAW;AACb,yBAAW,wBAAwB,mDAAW;AAC9C,8BAAgB,UAAU,0BAAM;AAAA,YAClC;AACA,gBAAI,yBAAyB,WAAW;AACtC,8BAAgB,YAAY,sCAAQ;AAAA,YACtC;AACA,4BAAgB,sBAAsB,yDAAY;AAAA,UACpD;AACA;AAAA,QACF,KAAK;AACH,cAAI,QAAQ,WAAW,QAAQ;AAC7B,gBAAI,WAAW;AACb,yBAAW,wBAAwB,mDAAW;AAC9C,8BAAgB,UAAU,0BAAM;AAAA,YAClC;AACA,gBAAI,yBAAyB,WAAW;AACtC,8BAAgB,YAAY,sCAAQ;AAAA,YACtC;AACA,4BAAgB,sBAAsB,yDAAY;AAAA,UACpD,WAAW,QAAQ,WAAW,SAAS;AACrC,4BAAgB,sBAAsB,yDAAY;AAClD,gBAAI,yBAAyB,WAAW;AACtC,8BAAgB,YAAY,sCAAQ;AAAA,YACtC;AAAA,UACF;AACA;AAAA,QACF,KAAK;AACH,qBAAW,mBAAmB,sEAAe;AAC7C,cAAI,WAAW;AACb,4BAAgB,qBAAqB,6EAAiB;AACtD,gBAAI,QAAQ,WAAW,SAAS;AAC9B,6BAAe;AAAA,YACjB;AACA,gBAAI,QAAQ,WAAW,QAAQ;AAC7B,8BAAgB,kBAAkB,+DAAa;AAAA,YACjD;AAAA,UACF,WAAW,aAAa;AACtB,4BAAgB,UAAU,+DAAa;AAAA,UACzC;AACA,cAAI,aAAa,QAAQ,WAAW,QAAQ;AAC1C,4BAAgB,qBAAqB,6EAAiB;AAAA,UACxD;AACA,kBAAQ,YAAY;AACpB;AAAA,QACF,KAAK;AACH,qBAAW,cAAc,qEAAc;AACvC,qBAAW,iEAAe;AAC1B,cAAI,WAAW;AACb,4BAAgB,UAAU,gCAAO;AACjC,gBAAI,uBAAuB,QAAQ,WAAW,SAAS;AACrD,8BAAgB,8HAA+B;AAAA,YACjD;AAAA,UACF;AACA,cAAI,aAAa;AAEf,4BAAgB,oHAA0B;AAAA,UAC5C;AACA;AAAA,QACF,KAAK;AACH,cAAI,aAAa;AACf,uBAAW,6NAA8C;AAAA,UAC3D;AAAA,QACF,KAAK;AACH,qBAAW,uBAAuB,gGAAqB;AACvD,0BAAgB,kBAAkB,mDAAW;AAC7C,cAAI,WAAW;AACb,4BAAgB,eAAe,6CAAU;AACzC,gBAAI,QAAQ,WAAW,SAAS;AAC9B,8BAAgB,gEAAwB,gGAAqB;AAC7D,8BAAgB,YAAY,iCAAQ;AACpC,kBAAI,qBAAqB;AACvB,gCAAgB,+KAAwC;AAAA,cAC1D;AAAA,YACF,OAAO;AACL,8BAAgB,gEAAwB,gGAAqB;AAAA,YAC/D;AAAA,UACF;AACA;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,0BAAgB,kBAAkB,mDAAW;AAC7C,cAAI,QAAQ,MAAM,CAAC,QAAQ;AACzB,uBAAW,wBAAwB,2FAAqB;AAAA,UAC1D,WAAW,CAAC,QAAQ;AAClB,uBAAW,sBAAsB,oFAAmB;AACpD,4BAAgB,kBAAkB,mDAAW;AAAA,UAC/C;AACA,cAAI,WAAW;AACb,4BAAgB,eAAe,6CAAU;AACzC,oBAAQ,KAAK;AAAA,cACX,KAAK;AACH;AAAA,kBACE,mDAAgB,QAAQ,WAAW,SAAS,sDAAc;AAAA,gBAC5D;AACA,oBAAI,uBAAuB,QAAQ,WAAW,SAAS;AACrD,kCAAgB,qJAAwC;AAAA,gBAC1D;AACA;AAAA,cACF,KAAK;AACH;AAAA,mBACG,cAAc,aAAa,gDAC1B,SACC,QAAQ,WAAW,UAAU,sDAAc;AAAA,gBAChD;AACA,oBAAI,uBAAuB,QAAQ,WAAW,SAAS;AACrD,kCAAgB,wHAA8B;AAAA,gBAChD;AACA;AAAA,cACF,KAAK;AACH,oBAAI,QAAQ,WAAW,QAAQ;AAC7B,mCAAiB,cAAc,aAAa,gDAAa,4DAAoB;AAC7E,sBAAI,qBAAqB;AACvB,oCAAgB,wHAA8B;AAAA,kBAChD;AAAA,gBACF,OAAO;AACL,sBAAI,QAAQ,WAAW,SAAS;AAC9B,qCAAiB,cAAc,aAAa,gDAAa,gDAAkB;AAAA,kBAC7E,WAAW,QAAQ,WAAW,UAAU;AACtC;AAAA,uBACG,cAAc,aAAa,gDAAa;AAAA,oBAC3C;AAAA,kBACF,WAAW,QAAQ,WAAW,QAAQ;AACpC,qCAAiB,cAAc,aAAa,gDAAa,6DAAqB;AAAA,kBAChF;AACA,sBAAI,uBAAuB,QAAQ,WAAW,SAAS;AACrD,oCAAgB,6HAAmC;AAAA,kBACrD;AAAA,gBACF;AACA;AAAA,cACF,KAAK;AACH;AAAA,mBACG,cAAc,aAAa,gDAC1B,SACC,QAAQ,WAAW,UAAU,sDAAc;AAAA,gBAChD;AACA,oBAAI,uBAAuB,QAAQ,WAAW,SAAS;AACrD,sBAAI,QAAQ,WAAW,QAAQ;AAC7B,oCAAgB,6HAAmC;AAAA,kBACrD,OAAO;AACL,oCAAgB,2JAAwC;AAAA,kBAC1D;AAAA,gBACF;AACA;AAAA,cACF,KAAK;AACH;AAAA,mBACG,cAAc,aAAa,gDAC1B,SACC,QAAQ,WAAW,UAAU,sDAAc;AAAA,gBAChD;AACA,oBAAI,uBAAuB,QAAQ,WAAW,SAAS;AACrD,sBAAI,QAAQ,WAAW,UAAU;AAC/B,oCAAgB,iJAAmC;AAAA,kBACrD,OAAO;AACL,oCAAgB,2JAAwC;AAAA,kBAC1D;AAAA,gBACF;AACA;AAAA,YACJ;AAAA,UACF;AACA;AAAA,QACF,KAAK;AACH,qBAAW,gBAAgB,mDAAW;AACtC,0BAAgB,kBAAkB,mDAAW;AAC7C,cAAI,aAAa;AACf,4BAAgB,iBAAiB,mDAAW;AAAA,UAC9C,OAAO;AACL,4BAAgB,YAAY,4CAAS;AACrC,4BAAgB,eAAe,6CAAU;AACzC,gBAAI,qBAAqB;AACvB,kBAAI,QAAQ,WAAW,QAAQ;AAC7B,gCAAgB,8HAA+B;AAAA,cACjD,OAAO;AACL,gCAAgB,iJAAmC;AAAA,cACrD;AAAA,YACF;AAAA,UACF;AACA;AAAA,QACF,KAAK;AACH,qBAAW,kBAAkB,yDAAY;AACzC,0BAAgB,kBAAkB,mDAAW;AAC7C,cAAI,QAAQ;AACV,uBAAW,iBAAiB,mDAAW;AACvC,4BAAgB,WAAW,gCAAO;AAAA,UACpC;AACA,cAAI,WAAW;AACb,4BAAgB,eAAe,6CAAU;AACzC,4BAAgB,UAAU,gCAAO;AACjC,4BAAgB,kBAAkB,mDAAW;AAC7C,4BAAgB,iHAAuB;AACvC,gBAAI,uBAAuB,QAAQ,WAAW,SAAS;AACrD,8BAAgB,6JAAqC;AAAA,YACvD;AAAA,UACF;AACA;AAAA,MACJ;AACA,UAAI,QAAQ,IAAI;AACd,YAAI,CAAC,QAAQ;AACX,qBAAW,iBAAiB,mDAAW;AACvC,0BAAgB,kBAAkB,mDAAW;AAC7C,0BAAgB,WAAW,gCAAO;AAClC,0BAAgB,eAAe,6CAAU;AAAA,QAC3C,OAAO;AACL,qBAAW,cAAc,6CAAU;AACnC,cAAI,aAAa;AACf,uBAAW,oFAAmB,6CAAU;AAAA,UAC1C,WAAW,QAAQ,WAAW,WAAW,WAAW;AAClD,2BAAe;AAAA,UACjB;AAAA,QACF;AAAA,MACF,WAAW,QAAQ,WAAW,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,SAAS,GAAG,GAAG;AAC3E,wBAAgB,mBAAmB,yDAAY;AAAA,MACjD;AACA,UAAI,MAAM,IAAI;AACZ,wBAAgB,sBAAsB,iCAAQ;AAAA,MAChD,WAAW,MAAM,IAAI;AACnB,wBAAgB,mCAAmC,iHAAuB;AAAA,MAC5E;AACA;AAAA,IACF,KAAK,kBAAE;AACL,UACE,cACE,QAAQ,WAAW,UAAU,MAAM,KAAK,MAAM,MAC7C,QAAQ,WAAW,YAAY,MAAM,KAAK,MAAM,MAChD,QAAQ,WAAW,UAAU,MAAM,MAAM,MAAM,KAClD;AACA,wBAAgB,UAAU,0DAAa;AACvC,wBAAgB,kBAAkB,+DAAa;AAAA,MACjD;AACA,UAAI,OAAO,IAAI;AACb,wBAAgB,mCAAmC,iHAAuB;AAAA,MAC5E;AACA,WACI,SAAS,UAAU,OAAO,KAAO,CAAC,SAAS,UAAU,6BACvD,QAAQ,WAAW,SACnB;AACA,wBAAgB,sBAAsB,0DAAa;AAAA,MACrD;AACA;AAAA,IACF,KAAK,kBAAE;AACL,WACI,SAAS,UAAU,OAAO,KAAO,CAAC,SAAS,UAAU,6BACvD,QAAQ,WAAW,SACnB;AACA,wBAAgB,sBAAsB,0DAAa;AAAA,MACrD,WAAW,QAAQ,MAAM,QAAQ,WAAW,WAAW,aAAa;AAClE,gBAAQ,YAAY;AAAA,MACtB,WAAW,OAAO,IAAI;AACpB,gBAAQ,YAAY;AACpB,mBAAW,YAAY,gCAAO;AAC9B,wBAAgB,eAAe,mDAAW;AAC1C,YAAI,WAAW;AACb,0BAAgB,eAAe,6CAAU;AACzC,cAAI,aAAa,QAAQ,WAAW;AAAS,2BAAe;AAC5D,cAAI,uBAAuB,QAAQ,MAAM,QAAQ,WAAW,SAAS;AACnE,4BAAgB,0KAAwC;AAAA,UAC1D;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF,KAAK,kBAAE;AACL,UAAI,CAAC,SAAS,UAAU,4BAA4B,QAAQ,WAAW,SAAS;AAC9E,wBAAgB,sBAAsB,0DAAa;AAAA,MACrD;AACA,UAAI,QAAQ,MAAM,cAAc,MAAM,IAAI,IAAI,IAAI,IAAI;AACpD,gBAAQ,YAAY;AACpB,mBAAW,YAAY,gCAAO;AAC9B,wBAAgB,eAAe,mDAAW;AAC1C,YAAI,WAAW;AACb,0BAAgB,eAAe,6CAAU;AACzC,cAAI,aAAa,QAAQ,WAAW,SAAS;AAC3C,2BAAe;AACf,gBAAI,QAAQ,KAAK,qBAAqB;AACpC,8BAAgB,0KAAwC;AAAA,YAC1D;AAAA,UACF;AAAA,QACF;AAAA,MACF,WAAW,QAAQ,MAAM,WAAW;AAClC,mBAAW,yBAAyB,mDAAW;AAC/C,YAAI,WAAW;AACb,0BAAgB,YAAY,sCAAQ;AAAA,QACtC;AACA,wBAAgB,kBAAkB,+DAAa;AAC/C,wBAAgB,UAAU,0BAAM;AAAA,MAClC;AACA;AAAA,IACF,KAAK,kBAAE;AACL,UAAI,QAAQ,MAAM;AAAa,gBAAQ,YAAY;AACnD,UAAI,QAAQ,IAAI;AACd,gBAAQ,YAAY;AACpB,mBAAW,cAAc,wCAAU;AAAA,MACrC;AACA;AAAA,IACF,KAAK,kBAAE;AAAA,IACP,KAAK,kBAAE;AACL,UAAI,UAAU,kBAAE,QAAQ,YAAY;AAElC,YAAI,QAAQ,MAAM;AAAa,kBAAQ,YAAY;AACnD,YAAI,CAAC,IAAI,EAAE,EAAE,SAAS,GAAG,GAAG;AAC1B;AAAA,YACE,QAAQ,KACJ,cACE,gBACA,sDACF,cACA,wBACA;AAAA,UACN;AACA,cAAI,WAAW;AACb,oBAAQ,YAAY;AACpB,gBAAI,aAAa,QAAQ,WAAW,SAAS;AAC3C,6BAAe;AAAA,YACjB;AAAA,UACF;AAAA,QACF;AAAA,MACF,OAAO;AAEL,YACE,cACE,QAAQ,MAAM,QAAQ,WAAW,YAChC,QAAQ,MAAM,QAAQ,WAAW,UACpC;AACA,cAAI,WAAW;AACb,uBAAW,0BAA0B,yDAAY;AACjD,4BAAgB,YAAY,sCAAQ;AAAA,UACtC;AACA,0BAAgB,kBAAkB,+DAAa;AAC/C,0BAAgB,UAAU,0BAAM;AAAA,QAClC,OAAO;AAEL,gBAAM,iBAAiB,SAAS,SAAS,eAAe,SAAS,eAAe;AAChF,cAAI,QAAQ,IAAI;AACd,oBAAQ,YAAY;AACpB,gBAAI,aAAa,QAAQ,WAAW,SAAS;AAC3C,6BAAe;AAAA,YACjB;AAEA,gBAAI,CAAC,kBAAkB,QAAQ,WAAW,QAAQ;AAChD,yBAAW,kBAAkB,yDAAY;AACzC,kBAAI,CAAC,gBAAgB;AACnB,2BAAW,SAAS,gCAAO;AAC3B,gCAAgB,eAAe,mDAAW;AAC1C,oBAAI,qBAAqB;AACvB,kCAAgB,oKAAuC;AAAA,gBACzD;AAAA,cACF,OAAO;AAEL,2BAAW,qBAAqB,iFAAgB;AAAA,cAClD;AAAA,YACF,OAAO;AACL,yBAAW,kBAAkB,qEAAc;AAAA,YAC7C;AAAA,UACF,WAAW,QAAQ,IAAI;AACrB,oBAAQ,YAAY;AACpB,gBAAI,aAAa,QAAQ,WAAW,SAAS;AAC3C,6BAAe;AAAA,YACjB;AACA,gBAAI,gBAAgB;AAClB,yBAAW,SAAS,gCAAO;AAC3B,8BAAgB,eAAe,mDAAW;AAC1C,kBAAI,QAAQ,WAAW,SAAS;AAC9B,2BAAW,kBAAkB,yDAAY;AAAA,cAC3C;AACA,kBAAI,uBAAuB,aAAa,QAAQ,WAAW,SAAS;AAClE,gCAAgB,oKAAuC;AAAA,cACzD;AAAA,YACF,WACE;AAAA,cACE;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,EAAE,SAAS,SAAS,IAAI,GACxB;AACA,yBAAW,mBAAmB,2EAAe;AAC7C,kBAAI,QAAQ,WAAW,SAAS;AAC9B,2BAAW,oBAAoB,2DAAc;AAAA,cAC/C;AAAA,YACF,OAAO;AACL,yBAAW,iBAAiB,yDAAY;AAAA,YAC1C;AAAA,UACF,WAAW,QAAQ,MAAM,kBAAkB,QAAQ,WAAW,QAAQ;AACpE,uBAAW,mCAAmC,6HAAyB;AAAA,UACzE;AAAA,QACF;AAAA,MACF;AACA;AAAA,EACJ;AACF;AAEA,SAAS,iBAAiB;AACxB,kBAAgB,mBAAmB,8CAAW;AAChD;AAEA,SAAS,WAAW,sBAA8B,YAAqB;AACrE,QAAM,OAAO,eAAe,CAAC,aAAa,uBAAuB;AACjE,MAAI,CAAC,SAAS,SAAS,IAAI,GAAG;AAC5B,aAAS,KAAK,IAAI;AAAA,EACpB;AACF;AAEA,SAAS,gBAAgB,sBAA8B,YAAqB;AAC1E,QAAM,OAAO,eAAe,CAAC,aAAa,uBAAuB;AACjE,MAAI,CAAC,cAAc,SAAS,IAAI,GAAG;AACjC,kBAAc,KAAK,IAAI;AAAA,EACzB;AACF;AAEA,SAAS,oBAAoB,OAAc,UAAoB;AAC7D,QAAM,EAAE,OAAO,KAAK,UAAU,IAAI;AAElC,MAAI,QAAQ,KAAK,QAAQ,IAAI;AAC3B,WAAO;AAAA,EACT;AACA,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO,MAAM,MAAM,MAAM;AAAA,IAC3B,KAAK;AACH,aAAO,QAAQ,MAAO,cAAc,KAAK,QAAQ;AAAA,IACnD,KAAK;AACH,aAAO,QAAQ,KAAM,cAAc,KAAK,QAAQ;AAAA,IAClD,KAAK;AACH,aAAO,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,SAAS,GAAG,KAAM,cAAc,KAAK,QAAQ;AAAA,IAClF,KAAK;AACH,aAAO,OAAO;AAAA,IAChB,KAAK;AACH,aAAO,QAAQ,MAAM,MAAM,KAAM,QAAQ,KAAK,MAAM,cAAc,MAAM,IAAI;AAAA,IAC9E,KAAK;AAAA,IACL,KAAK;AACH,aACE,WAAW,MAAM,UAAU,MAAM,IAAI,IAAI,kBAAE,cAAc,kBAAE,UAC1D,QAAQ,MAAM,SAAS,SAAS,SAAS,+CAAY,KAAK;AAAA,IAE/D;AACE,aAAO;AAAA,EACX;AACF","sourcesContent":["import { Utils, DaysOfWeek,JewishMonthsNames, DaysOfWeekHeb, DaysOfWeekEng, JewishMonthsEng, JewishMonthsHeb, SecularMonthsEng } from './Utils.js';\r\nimport Zmanim from './JCal/Zmanim.js';\r\nimport jDate from './JCal/jDate.js';\r\nimport Location from './JCal/Location.js';\r\nimport { Locations, findLocation, closestNameMatch, closestDistanceMatch } from './Locations.js';\r\nimport { ZmanTypes, ZmanTypeIds, getZmanType } from './ZmanTypes.js';\r\nimport Molad from './JCal/Molad.js';\r\nimport PirkeiAvos from './JCal/PirkeiAvos.js';\r\nimport Dafyomi from './JCal/Dafyomi.js';\r\nimport Sedra from './JCal/Sedra.js';\r\nimport ZmanimUtils from './JCal/ZmanimUtils.js';\r\nimport { getNotifications } from './Notifications.js';\r\nimport type { Time, SunTimes, ZmanToShow, ZmanTime, ShulZmanimType } from './jcal-zmanim.d.ts';\r\n\r\nexport {closestDistanceMatch};\r\nexport {closestNameMatch};\r\nexport {Dafyomi};\r\nexport {DaysOfWeek};\r\nexport {DaysOfWeekEng};\r\nexport {DaysOfWeekHeb};\r\nexport {findLocation};\r\nexport {getNotifications};\r\nexport {getZmanType};\r\nexport {jDate};\r\nexport {JewishMonthsEng};\r\nexport {JewishMonthsHeb};\r\nexport {JewishMonthsNames};\r\nexport {Location};\r\nexport {Locations};\r\nexport {Molad};\r\nexport {PirkeiAvos};\r\nexport {SecularMonthsEng};\r\nexport {Sedra};\r\nexport {Utils};\r\nexport {Zmanim};\r\nexport {ZmanimUtils};\r\nexport {ZmanTypeIds};\r\nexport {ZmanTypes};\r\nexport type {ShulZmanimType};\r\nexport type {SunTimes};\r\nexport type {Time};\r\nexport type {ZmanTime};\r\nexport type {ZmanToShow};\r\n","import jDate from './jDate.js';\r\n\r\n/**\r\n * Computes the Sedra/Sedras of the week for the given day.\r\n * The property \"sedras\" an array of sedras (either one or two) for the given Jewish Date\r\n * Sample of use to get todays sedra in Israel:\r\n * const sedras = new Sedra(new jDate(), true).toString();\r\n * The code was converted to javascript and tweaked by CBS.\r\n * It is directly based on the C code in Danny Sadinoff's HebCal - Copyright (C) 1994.\r\n * Portions of that code are Copyright (c) 2002 Michael J. Radwin. All Rights Reserved.\r\n * Many of the algorithms were taken from hebrew calendar routines implemented by Nachum Dershowitz\r\n * @property sedras {[{ eng: String, heb: String }]}\r\n */\r\nexport default class Sedra {\r\n sedras: { eng: string, heb: string}[];\r\n /**\r\n * @param {jDate} jd\r\n * @param {boolean} israel\r\n */\r\n constructor(jd:jDate, israel:boolean) {\r\n //If we are between the first day of Sukkos and Simchas Torah, the sedra will always be Vezos Habracha.\r\n if (jd.Month === 7 && jd.Day >= 15 && jd.Day < (israel ? 23 : 24)) {\r\n this.sedras = [Sedra.sedraList[53]];\r\n return;\r\n }\r\n\r\n let sedraArray:{ eng: string, heb: string}[] = [],\r\n sedraOrder = Sedra.getSedraOrder(jd.Year, israel),\r\n absDate = jd.Abs,\r\n index:number,\r\n weekNum:number;\r\n\r\n /* find the first saturday on or after today's date */\r\n absDate = Sedra.getDayOnOrBefore(6, absDate + 6);\r\n\r\n weekNum = (absDate - sedraOrder.firstSatInYear) / 7;\r\n\r\n if (sedraOrder.sedraArray && weekNum >= sedraOrder.sedraArray.length) {\r\n const indexLast = sedraOrder.sedraArray[sedraOrder.sedraArray.length - 1];\r\n if (indexLast < 0) {\r\n /* advance 2 parashiyot ahead after a doubled week */\r\n index = (-indexLast) + 2;\r\n }\r\n else {\r\n index = indexLast + 1;\r\n }\r\n }\r\n else {\r\n index = (sedraOrder.sedraArray\r\n ?sedraOrder.sedraArray[weekNum]\r\n :-1);\r\n }\r\n\r\n if (index >= 0) {\r\n sedraArray = [Sedra.sedraList[index]];\r\n }\r\n else {\r\n const i = -index; /* undouble the sedra */\r\n sedraArray = [Sedra.sedraList[i], Sedra.sedraList[i + 1]];\r\n }\r\n this.sedras = sedraArray;\r\n }\r\n\r\n /**\r\n * Gets the sedra/s as a string. If there are two, they are seperated by a \" - \"\r\n */\r\n toString() {\r\n return this.sedras.map(s => s.eng).join(' - ');\r\n }\r\n\r\n /**\r\n * Gets the sedra/s as a string. If there are two, they are seperated by a \" - \"\r\n */\r\n toStringHeb() {\r\n return this.sedras.map(s => s.heb).join(' - ');\r\n }\r\n\r\n static lastCalculatedYear:{firstSatInYear:number,sedraArray?: number[],year: number,israel: boolean}|null = null;\r\n static sedraList = [{ eng: 'Bereshis', heb: 'בראשית' }, { eng: 'Noach', heb: 'נח' }, { eng: 'Lech-Lecha', heb: 'לך לך' }, { eng: 'Vayera', heb: 'וירא' }, { eng: 'Chayei Sara', heb: 'חיי שרה' }, { eng: 'Toldos', heb: 'תולדות' }, { eng: 'Vayetzei', heb: 'ויצא' }, { eng: 'Vayishlach', heb: 'וישלח' }, { eng: 'Vayeishev', heb: 'וישב' }, { eng: 'Mikeitz', heb: 'מקץ' }, { eng: 'Vayigash', heb: 'ויגש' }, { eng: 'Vayechi', heb: 'ויחי' }, { eng: 'Shemos', heb: 'שמות' }, { eng: 'Va\\'era', heb: 'וארא' }, { eng: 'Bo', heb: 'בא' }, { eng: 'Beshalach', heb: 'בשלח' }, { eng: 'Yisro', heb: 'יתרו' }, { eng: 'Mishpatim', heb: 'משפטים' }, { eng: 'Terumah', heb: 'תרומה' }, { eng: 'Tetzaveh', heb: 'תצוה' }, { eng: 'Ki Sisa', heb: 'כי תשא' }, { eng: 'Vayakhel', heb: 'ויקהל' }, { eng: 'Pekudei', heb: 'פקודי' }, { eng: 'Vayikra', heb: 'ויקרא' }, { eng: 'Tzav', heb: 'צו' }, { eng: 'Shmini', heb: 'שמיני' }, { eng: 'Tazria', heb: 'תזריע' }, { eng: 'Metzora', heb: 'מצורע' }, { eng: 'Achrei Mos', heb: 'אחרי מות' }, { eng: 'Kedoshim', heb: 'קדושים' }, { eng: 'Emor', heb: 'אמור' }, { eng: 'Behar', heb: 'בהר' }, { eng: 'Bechukosai', heb: 'בחקותי' }, { eng: 'Bamidbar', heb: 'במדבר' }, { eng: 'Nasso', heb: 'נשא' }, { eng: 'Beha\\'aloscha', heb: 'בהעלתך' }, { eng: 'Sh\\'lach', heb: 'שלח' }, { eng: 'Korach', heb: 'קרח' }, { eng: 'Chukas', heb: 'חקת' }, { eng: 'Balak', heb: 'בלק' }, { eng: 'Pinchas', heb: 'פינחס' }, { eng: 'Matos', heb: 'מטות' }, { eng: 'Masei', heb: 'מסעי' }, { eng: 'Devarim', heb: 'דברים' }, { eng: 'Va\\'eschanan', heb: 'ואתחנן' }, { eng: 'Eikev', heb: 'עקב' }, { eng: 'Re\\'eh', heb: 'ראה' }, { eng: 'Shoftim', heb: 'שופטים' }, { eng: 'Ki Seitzei', heb: 'כי תצא' }, { eng: 'Ki Savo', heb: 'כי תבא' }, { eng: 'Nitzavim', heb: 'נצבים' }, { eng: 'Vayeilech', heb: 'וילך' }, { eng: 'Ha\\'Azinu', heb: 'האזינו' }, { eng: 'Vezos Habracha', heb: 'וזאת הברכה' }];\r\n static shabbos_short = [52, 52, 53, 53, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -21, 23, 24, 25, 25, -26, -28, 30, -31, 33, 34, 35, 36, 37, 38, 39, 40, -41, 43, 44, 45, 46, 47, 48, 49, 50];\r\n static shabbos_long = [52, 52, 53, 53, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -21, 23, 24, 25, 25, -26, -28, 30, -31, 33, 34, 35, 36, 37, 38, 39, 40, -41, 43, 44, 45, 46, 47, 48, 49, -50];\r\n static mon_short = [51, 52, 53, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -21, 23, 24, 25, 25, -26, -28, 30, -31, 33, 34, 35, 36, 37, 38, 39, 40, -41, 43, 44, 45, 46, 47, 48, 49, -50];\r\n static mon_long = [51, 52, 53, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -21, 23, 24, 25, 25, -26, -28, 30, -31, 33, 34, 34, 35, 36, 37, -38, 40, -41, 43, 44, 45, 46, 47, 48, 49, -50];\r\n static thu_normal = [52, 53, 53, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -21, 23, 24, 25, 25, 25, -26, -28, 30, -31, 33, 34, 35, 36, 37, 38, 39, 40, -41, 43, 44, 45, 46, 47, 48, 49, 50];\r\n static thu_normal_Israel = [52, 53, 53, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -21, 23, 24, 25, 25, -26, -28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -41, 43, 44, 45, 46, 47, 48, 49, 50];\r\n static thu_long = [52, 53, 53, 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, 25, -26, -28, 30, -31, 33, 34, 35, 36, 37, 38, 39, 40, -41, 43, 44, 45, 46, 47, 48, 49, 50];\r\n static shabbos_short_leap = [52, 52, 53, 53, 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, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -41, 43, 44, 45, 46, 47, 48, 49, -50];\r\n static shabbos_long_leap = [52, 52, 53, 53, 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, 28, 29, 30, 31, 32, 33, 34, 34, 35, 36, 37, -38, 40, -41, 43, 44, 45, 46, 47, 48, 49, -50];\r\n static mon_short_leap = [51, 52, 53, 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, 28, 29, 30, 31, 32, 33, 34, 34, 35, 36, 37, -38, 40, -41, 43, 44, 45, 46, 47, 48, 49, -50];\r\n static mon_short_leap_Israel = [51, 52, 53, 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, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -41, 43, 44, 45, 46, 47, 48, 49, -50];\r\n static mon_long_leap = [51, 52, 53, 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, 28, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -41, 43, 44, 45, 46, 47, 48, 49, 50];\r\n static mon_long_leap_Israel = [51, 52, 53, 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, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50];\r\n static thu_short_leap = [52, 53, 53, 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, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50];\r\n static thu_long_leap = [52, 53, 53, 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, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, -50];\r\n\r\n static getDayOnOrBefore(day_of_week:number, date:number) {\r\n return date - ((date - day_of_week) % 7);\r\n }\r\n\r\n static getSedraOrder(year:number, israel:boolean) {\r\n //If the last call is within the same year as this one, we reuse the data.\r\n //If memory is an issue, remove these next few lines\r\n if (Sedra.lastCalculatedYear != null &&\r\n Sedra.lastCalculatedYear.year === year &&\r\n Sedra.lastCalculatedYear.israel === israel) {\r\n return Sedra.lastCalculatedYear;\r\n }\r\n\r\n const longCheshvon = jDate.isLongCheshvan(year),\r\n shortKislev = jDate.isShortKislev(year),\r\n roshHashana = jDate.absJd(year, 7, 1),\r\n roshHashanaDOW = Math.abs(roshHashana % 7),\r\n firstSatInYear = Sedra.getDayOnOrBefore(6, roshHashana + 6);\r\n let yearType,\r\n sArray;\r\n\r\n if (longCheshvon && !shortKislev)\r\n yearType = 'complete';\r\n else if (!longCheshvon && shortKislev)\r\n yearType = 'incomplete';\r\n else\r\n yearType = 'regular';\r\n\r\n if (!jDate.isJdLeapY(year)) {\r\n switch (roshHashanaDOW) {\r\n case 6:\r\n if (yearType === 'incomplete') {\r\n sArray = Sedra.shabbos_short;\r\n }\r\n else if (yearType === 'complete') {\r\n sArray = Sedra.shabbos_long;\r\n }\r\n break;\r\n\r\n case 1:\r\n if (yearType === 'incomplete') {\r\n sArray = Sedra.mon_short;\r\n }\r\n else if (yearType === 'complete') {\r\n sArray = israel ? Sedra.mon_short : Sedra.mon_long;\r\n }\r\n break;\r\n\r\n case 2:\r\n if (yearType === 'regular') {\r\n sArray = israel ? Sedra.mon_short : Sedra.mon_long;\r\n }\r\n break;\r\n\r\n case 4:\r\n if (yearType === 'regular') {\r\n sArray = israel ? Sedra.thu_normal_Israel : Sedra.thu_normal;\r\n }\r\n else if (yearType === 'complete') {\r\n sArray = Sedra.thu_long;\r\n }\r\n break;\r\n\r\n default:\r\n throw 'improper sedra year type calculated.';\r\n }\r\n }\r\n else /* leap year */ {\r\n switch (roshHashanaDOW) {\r\n case 6:\r\n if (yearType === 'incomplete') {\r\n sArray = Sedra.shabbos_short_leap;\r\n }\r\n else if (yearType === 'complete') {\r\n sArray = israel ? Sedra.shabbos_short_leap : Sedra.shabbos_long_leap;\r\n }\r\n break;\r\n\r\n case 1:\r\n if (yearType === 'incomplete') {\r\n sArray = israel ? Sedra.mon_short_leap_Israel : Sedra.mon_short_leap;\r\n }\r\n else if (yearType === 'complete') {\r\n sArray = israel ? Sedra.mon_long_leap_Israel : Sedra.mon_long_leap;\r\n }\r\n break;\r\n\r\n case 2:\r\n if (yearType === 'regular') {\r\n sArray = israel ? Sedra.mon_long_leap_Israel : Sedra.mon_long_leap;\r\n }\r\n break;\r\n\r\n case 4:\r\n if (yearType === 'incomplete') {\r\n sArray = Sedra.thu_short_leap;\r\n }\r\n else if (yearType === 'complete') {\r\n sArray = Sedra.thu_long_leap;\r\n }\r\n break;\r\n\r\n default:\r\n throw 'improper sedra year type calculated.';\r\n }\r\n }\r\n\r\n const retobj = {\r\n firstSatInYear: firstSatInYear,\r\n sedraArray: sArray,\r\n year: year,\r\n israel: israel\r\n };\r\n\r\n //Save the data in case the next call is for the same year\r\n Sedra.lastCalculatedYear = retobj;\r\n\r\n return retobj;\r\n }\r\n}","import jDate from './jDate.js';\r\nimport {Utils} from '../Utils.js';\r\n\r\n'use strict';\r\n\r\n/****************************************************************************************************************\r\n * Computes the Perek/Prakim of the week for the given Shabbos.\r\n * Returns an array of prakim (integers) (either one or two) for the given Jewish Date\r\n * Sample of use to get todays sedra in Israel:\r\n * const prakim = PirkeiAvos.getPrakim(new jDate(), true);\r\n * const str = 'Pirkei Avos: ' + prakim.map(s => `${Utils.toSuffixed(s)} Perek`).join(' and ');\r\n * ***************************************************************************************************************/\r\nexport default class PirkeiAvos {\r\n static getPrakim(jd:jDate, israel:boolean) {\r\n if (jd.getDayOfWeek() !== 6) {\r\n return [];\r\n }\r\n\r\n const jMonth = jd.Month,\r\n jDay = jd.Day;\r\n\r\n //Pirkei Avos is from after Pesach until Rosh Hashana\r\n if ((jMonth === 1 && jDay > (israel ? 21 : 22)) ||\r\n //All Shabbosim through Iyar, Sivan, Tamuz, Av - besides for the day/s of Shavuos and Tisha B'Av\r\n ((jMonth > 1 && jMonth < 6 &&\r\n (!((jMonth === 3 && jDay === 6) || (!israel && jMonth === 3 && jDay === 7))) &&\r\n (!(jMonth === 5 && jDay === 9))))) {\r\n return [PirkeiAvos._get1stPerek(jd, israel)];\r\n }\r\n //Ellul can have multiple prakim\r\n else if (jMonth === 6) {\r\n return PirkeiAvos._ellul(jd, israel);\r\n }\r\n //No Pirkei Avos\r\n else {\r\n return [];\r\n }\r\n }\r\n static _get1stPerek = function (jd:jDate, israel:boolean) {\r\n const jYear = jd.Year,\r\n jMonth = jd.Month,\r\n jDay = jd.Day,\r\n pes1 = new jDate(jYear, 1, 15),\r\n //How many days after the first day of pesach was the first shabbos after pesach\r\n shb1 = (israel ? 7 : 8) + (6 - pes1.getDayOfWeek()),\r\n //What number shabbos after pesach is the current date\r\n cShb = ((jMonth === 1 && jDay === (shb1 + 15)) ? 1 :\r\n Utils.toInt((jd.Abs - (pes1.Abs + shb1)) / 7) + 1);\r\n let prk = cShb % 6;\r\n if (prk === 0) prk = 6;\r\n //If the second day of Shavuos was on Shabbos, we missed a week.\r\n //The second day of Pesach is always the same day as the first day of Shavuos.\r\n //So if Pesach was on Thursday, Shavuos will be on Friday and Shabbos in Chu\"l.\r\n //Pesach can never come out on Friday, so in E. Yisroel Shavuos is never on Shabbos.\r\n if ((!israel) && pes1.getDayOfWeek() === 4 && (jMonth > 3 || (jMonth === 3 && jDay > 6))) {\r\n prk = prk === 1 ? 6 : prk - 1;\r\n }\r\n //If Tisha B'Av was on Shabbos, we missed a week. The first day of Pesach is always the same day of the week as Tisha b'av.\r\n if (pes1.getDayOfWeek() === 6 && (jMonth > 5 || (jMonth === 5 && jDay > 9))) {\r\n prk = prk === 1 ? 6 : prk - 1;\r\n }\r\n\r\n return prk;\r\n }\r\n static _ellul = function (jd:jDate, israel:boolean) {\r\n let prakim;\r\n const jYear = jd.Year,\r\n jDay = jd.Day,\r\n //The fist day of Ellul.\r\n //The year/month/day/absoluteDay constructor for JDate is used for efficiency.\r\n day1 = new jDate(jYear, 6, 1, jd.Abs - jd.Day + 1),\r\n day1DOW = day1.getDayOfWeek(),\r\n shabbos1Day = day1DOW === 6 ? 1 : ((6 - (day1DOW + 6) % 6) + 1),\r\n shabbos1Date = new jDate(jYear, 6, shabbos1Day, day1.Abs + shabbos1Day - 1),\r\n //Which shabbos in Ellul are we working out now?\r\n cShb = jDay === shabbos1Day ? 1 : Utils.toInt((jDay - shabbos1Day) / 7) + 1;\r\n\r\n switch (PirkeiAvos._get1stPerek(shabbos1Date, israel)) {\r\n case 1:\r\n switch (cShb) {\r\n case 1:\r\n prakim = [1];\r\n break;\r\n case 2:\r\n prakim = [2];\r\n break;\r\n case 3:\r\n prakim = [3, 4];\r\n break;\r\n case 4:\r\n prakim = [5, 6];\r\n break;\r\n }\r\n break;\r\n case 2:\r\n switch (cShb) {\r\n case 1:\r\n prakim = [2];\r\n break;\r\n case 2:\r\n prakim = [3];\r\n break;\r\n case 3:\r\n prakim = [4];\r\n break;\r\n case 4:\r\n prakim = [5, 6];\r\n break;\r\n }\r\n break;\r\n case 3:\r\n switch (cShb) {\r\n case 1:\r\n prakim = [3];\r\n break;\r\n case 2:\r\n prakim = [4];\r\n break;\r\n case 3:\r\n prakim = [5];\r\n break;\r\n case 4:\r\n prakim = [6];\r\n break;\r\n }\r\n break;\r\n case 4:\r\n //This can only happen in Chutz La'aretz\r\n switch (cShb) {\r\n case 1:\r\n prakim = [4, 5];\r\n break;\r\n case 2:\r\n prakim = [6, 1];\r\n break;\r\n case 3:\r\n prakim = [2, 3];\r\n break;\r\n case 4:\r\n prakim = [4, 5, 6];\r\n break;\r\n }\r\n break;\r\n case 5:\r\n switch (cShb) {\r\n case 1:\r\n prakim = [5, 6];\r\n break;\r\n case 2:\r\n prakim = [1, 2];\r\n break;\r\n case 3:\r\n prakim = [3, 4];\r\n break;\r\n case 4:\r\n prakim = [5, 6];\r\n break;\r\n }\r\n break;\r\n case 6:\r\n switch (cShb) {\r\n case 1:\r\n prakim = [6];\r\n break;\r\n case 2:\r\n prakim = [1, 2];\r\n break;\r\n case 3:\r\n prakim = [3, 4];\r\n break;\r\n case 4:\r\n prakim = [5, 6];\r\n break;\r\n }\r\n break;\r\n }\r\n\r\n return prakim || [];\r\n }\r\n}\r\n","import {Utils} from '../Utils.js';\r\nimport jDate from './jDate.js';\r\n\r\n'use strict';\r\n/** *********************************************************************************************************\r\n * Computes the Day Yomi for the given day.\r\n * Sample of use - to get todays daf:\r\n * const dafEng = Dafyomi.toString(jDate.now());\r\n * const dafHeb = Dafyomi.toStringHeb(jDate.now());\r\n * The code was converted to typescript and tweaked by CBS.\r\n * It is directly based on the C code in Danny Sadinoff's HebCal - Copyright (C) 1994.\r\n * The HebCal code for dafyomi was adapted by Aaron Peromsik from Bob Newell's public domain daf.el.\r\n***********************************************************************************************************/\r\nexport default class Dafyomi {\r\n static masechtaList = [\r\n { eng: 'Berachos', heb: 'ברכות', daf: 64 },\r\n { eng: 'Shabbos', heb: 'שבת', daf: 157 },\r\n { eng: 'Eruvin', heb: 'ערובין', daf: 105 },\r\n { eng: 'Pesachim', heb: 'פסחים', daf: 121 },\r\n { eng: 'Shekalim', heb: 'שקלים', daf: 22 },\r\n { eng: 'Yoma', heb: 'יומא', daf: 88 },\r\n { eng: 'Sukkah', heb: 'סוכה', daf: 56 },\r\n { eng: 'Beitzah', heb: 'ביצה', daf: 40 },\r\n { eng: 'Rosh Hashana', heb: 'ראש השנה', daf: 35 },\r\n { eng: 'Taanis', heb: 'תענית', daf: 31 },\r\n { eng: 'Megillah', heb: 'מגילה', daf: 32 },\r\n { eng: 'Moed Katan', heb: 'מועד קטן', daf: 29 },\r\n { eng: 'Chagigah', heb: 'חגיגה', daf: 27 },\r\n { eng: 'Yevamos', heb: 'יבמות', daf: 122 },\r\n { eng: 'Kesubos', heb: 'כתובות', daf: 112 },\r\n { eng: 'Nedarim', heb: 'נדרים', daf: 91 },\r\n { eng: 'Nazir', heb: 'נזיר', daf: 66 },\r\n { eng: 'Sotah', heb: 'סוטה', daf: 49 },\r\n { eng: 'Gitin', heb: 'גיטין', daf: 90 },\r\n { eng: 'Kiddushin', heb: 'קדושין', daf: 82 },\r\n { eng: 'Baba Kamma', heb: 'בבא קמא', daf: 119 },\r\n { eng: 'Baba Metzia', heb: 'בבא מציעא', daf: 119 },\r\n { eng: 'Baba Basra', heb: 'בבא בתרא', daf: 176 },\r\n { eng: 'Sanhedrin', heb: 'סנהדרין', daf: 113 },\r\n { eng: 'Makkot', heb: 'מכות', daf: 24 },\r\n { eng: 'Shevuot', heb: 'שבועות', daf: 49 },\r\n { eng: 'Avodah Zarah', heb: 'עבודה זרה', daf: 76 },\r\n { eng: 'Horayot', heb: 'הוריות', daf: 14 },\r\n { eng: 'Zevachim', heb: 'זבחים', daf: 120 },\r\n { eng: 'Menachos', heb: 'מנחות', daf: 110 },\r\n { eng: 'Chullin', heb: 'חולין', daf: 142 },\r\n { eng: 'Bechoros', heb: 'בכורות', daf: 61 },\r\n { eng: 'Arachin', heb: 'ערכין', daf: 34 },\r\n { eng: 'Temurah', heb: 'תמורה', daf: 34 },\r\n { eng: 'Kerisos', heb: 'כריתות', daf: 28 },\r\n { eng: 'Meilah', heb: 'מעילה', daf: 22 },\r\n { eng: 'Kinnim', heb: 'קנים', daf: 4 },\r\n { eng: 'Tamid', heb: 'תמיד', daf: 10 },\r\n { eng: 'Midos', heb: 'מדות', daf: 4 },\r\n { eng: 'Niddah', heb: 'נדה', daf: 73 }];\r\n\r\n static getDaf(jdate: jDate) : { masechet: { eng: string, heb: string, daf: number }, daf: number } | null {\r\n const absoluteDate = jdate.Abs;\r\n let dafcnt = 40, cno: number, dno: number, osday: number, nsday: number, total: number, count: number, j: number, blatt: number;\r\n\r\n osday = jDate.absSd(new Date(1923, 8, 11));\r\n nsday = jDate.absSd(new Date(1975, 5, 24));\r\n\r\n /* No cycle, new cycle, old cycle */\r\n if (absoluteDate < osday)\r\n return null; /* daf yomi hadn't started yet */\r\n if (absoluteDate >= nsday) {\r\n cno = 8 + Utils.toInt(((absoluteDate - nsday) / 2711));\r\n dno = (absoluteDate - nsday) % 2711;\r\n }\r\n else {\r\n cno = 1 + Utils.toInt((absoluteDate - osday) / 2702);\r\n dno = Utils.toInt((absoluteDate - osday) / 2702);\r\n }\r\n\r\n /* Find the daf taking note that the cycle changed slightly after cycle 7. */\r\n total = blatt = 0;\r\n count = -1;\r\n\r\n /* Fix Shekalim for old cycles */\r\n if (cno <= 7)\r\n Dafyomi.masechtaList[4].daf = 13;\r\n else\r\n Dafyomi.masechtaList[4].daf = 22;\r\n\r\n /* Find the daf */\r\n j = 0;\r\n while (j < dafcnt) {\r\n count++;\r\n total = total + Dafyomi.masechtaList[j].daf - 1;\r\n if (dno < total) {\r\n blatt = (Dafyomi.masechtaList[j].daf + 1) - (total - dno);\r\n /* fiddle with the weird ones near the end */\r\n switch (count) {\r\n case 36:\r\n blatt = blatt + 21;\r\n break;\r\n case 37:\r\n blatt = blatt + 24;\r\n break;\r\n case 38:\r\n blatt = blatt + 33;\r\n break;\r\n default:\r\n break;\r\n }\r\n /* Bailout */\r\n j = 1 + dafcnt;\r\n }\r\n j++;\r\n }\r\n\r\n return {\r\n masechet: Dafyomi.masechtaList[count],\r\n daf: blatt\r\n };\r\n }\r\n\r\n // Returns the name of the Masechta and daf number in English, For example: Sukkah, Daf 3\r\n static toString(jd: jDate): string | undefined {\r\n const d = Dafyomi.getDaf(jd);\r\n if (d !== null) {\r\n return d.masechet.eng + ', Daf ' + d.daf.toString();\r\n }\r\n }\r\n\r\n //Returns the name of the Masechta and daf number in Hebrew. For example: 'סוכה דף כ.\r\n static toStringHeb(jd: jDate): string | undefined {\r\n const d = Dafyomi.getDaf(jd);\r\n if (d !== null) {\r\n return d.masechet.heb + ' דף ' + Utils.toJewishNumber(d.daf);\r\n }\r\n }\r\n}","import { Utils, DaysOfWeekEng, JewishMonthsEng, DaysOfWeekHeb, JewishMonthsHeb } from \"../Utils.js\";\r\nimport Sedra from \"./Sedra.js\";\r\nimport PirkeiAvos from \"./PirkeiAvos.js\";\r\nimport Zmanim from \"./Zmanim.js\";\r\nimport DafYomi from \"./Dafyomi.js\";\r\nimport Location from \"./Location.js\";\r\n\r\n/** Keeps a \"memcache\" of years that have had their elapsed days previously calculated. Format: { year:5776, elapsed:2109283 } */\r\nconst _yearCache: [{ year: number; elapsed: number }?] = [],\r\n //The absolute date for the zero hour of all javascript date objects - 1/1/1970 0:00:00 UTC\r\n JS_START_DATE_ABS = 719163,\r\n //The number of milliseconds in everyday\r\n MS_PER_DAY = 8.64e7,\r\n //The time zone offset (in minutes) for 1/1/1970 0:00:00 UTC at the current users time zone\r\n JS_START_OFFSET = new Date(0).getTimezoneOffset();\r\n/* ****************************************************************************************************************\r\n * Many of the date conversion algorithms in the jDate class are based on the C code which was translated from Lisp\r\n * in \"Calendrical Calculations\" by Nachum Dershowitz and Edward M. Reingold\r\n * in Software---Practice & Experience, vol. 20, no. 9 (September, 1990), pp. 899--928.\r\n * ****************************************************************************************************************/\r\n\r\n/** Represents a single day in the Jewish Calendar. */\r\nexport default class jDate {\r\n public Day: number;\r\n public Month: number;\r\n public Year: number;\r\n public Abs: number;\r\n\r\n /**\r\n * Create a new Jdate.\r\n * new jDate() - Sets the Jewish Date for the current system date\r\n * new jDate(javascriptDateObject) - Sets to the Jewish date on the given Gregorian date\r\n * new jDate(\"January 1 2045\") - Accepts any valid javascript Date string (uses javascripts new Date(string))\r\n * new jDate(jewishYear, jewishMonth, jewishDay) - Months start at 1. Nissan is month 1 Adar Sheini is 13.\r\n * new jDate(jewishYear, jewishMonth) - Same as above, with Day defaulting to 1\r\n * new jDate( { year: 5776, month: 4, day: 5 } ) - same as new jDate(jewishYear, jewishMonth, jewishDay)\r\n * new jDate( { year: 5776, month: 4 } ) - same as new jDate(jewishYear, jewishMonth)\r\n * new jDate( { year: 5776 } ) - sets to the first day of Rosh Hashana on the given year\r\n * new jDate(absoluteDate) - The number of days elapsed since the theoretical date Sunday, December 31, 0001 BCE\r\n * new jDate(jewishYear, jewishMonth, jewishDay, absoluteDate) - Most efficient constructor. Needs no calculations at all.\r\n * new jDate( { year: 5776, month: 4, day: 5, abs: 122548708 } ) - same as new jDate(jewishYear, jewishMonth, jewishDay, absoluteDate)\r\n * @param {number | Date | string | {year:number,month:number,day:number} | [number, number, number, number]} [arg] The full Jewish year number OR Javascript Date object or string OR object or array of year, month, day\r\n * @param {number} [month] The month of the Jewish date. Nissan is 1.\r\n * @param {number} [day] The day of the month\r\n * @param {number} [abs] The number of days that have passed since 12/31/0001\r\n */\r\n constructor(\r\n arg?:\r\n | number\r\n | Date\r\n | string\r\n | { year: number; month: number; day: number }\r\n | [number, number, number, number],\r\n month?: number,\r\n day?: number,\r\n abs?: number\r\n ) {\r\n //The day of the Jewish Month\r\n this.Day = NaN;\r\n //The Jewish Month. As in the Torah, Nissan is 1 and Adara Sheini is 13\r\n this.Month = NaN;\r\n //The number of years since the creation of the world\r\n this.Year = NaN;\r\n //The number of days since the theoretical date: Dec. 31, 0001 BCE\r\n this.Abs = NaN;\r\n\r\n if (arguments.length === 0) {\r\n this.fromAbs(jDate.absSd(new Date()));\r\n } else if (arg instanceof Date) {\r\n if (Utils.isValidDate(arg)) {\r\n this.fromAbs(jDate.absSd(arg));\r\n } else {\r\n throw \"jDate constructor: The given Date is not a valid javascript Date\";\r\n }\r\n } else if (Array.isArray(arg) && arg.length >= 3) {\r\n this.Day = arg[0];\r\n this.Month = arg[1];\r\n this.Year = arg[2];\r\n this.Abs = (arg.length > 3 && arg[3]) || jDate.absJd(this.Year, this.Month, this.Day);\r\n } else if (arg && Utils.isString(arg)) {\r\n const d = new Date(arg as string);\r\n if (Utils.isValidDate(d)) {\r\n this.fromAbs(jDate.absSd(d));\r\n } else {\r\n throw 'jDate constructor: The given string \"' + arg + '\" cannot be parsed into a Date';\r\n }\r\n } else if (Utils.isNumber(arg)) {\r\n //if no other arguments were supplied, we assume that the supplied number is an absolute date\r\n if (arguments.length === 1) {\r\n this.fromAbs(arg as number);\r\n }\r\n //If the year and any other number is supplied, we set the year and create the date using either the supplied values or the defaults\r\n else {\r\n this.Year = arg as number;\r\n this.Month = month || 7; //If no month was supplied, we take Tishrei\r\n this.Day = day || 1; //If no day was supplied, we take the first day of the month\r\n //If the absolute date was also supplied (very efficient), we use the supplied value, otherwise we calculate it.\r\n this.Abs = abs || jDate.absJd(this.Year, this.Month, this.Day);\r\n }\r\n }\r\n //If arg is an object that has a \"year\" property that contains a valid value...\r\n else if (typeof arg === \"object\") {\r\n const argObj = arg as { year: number; month: number; day: number; abs: number };\r\n if (Utils.isNumber(argObj.year)) {\r\n this.Day = argObj.day || 1;\r\n this.Month = argObj.month || 7;\r\n this.Year = argObj.year;\r\n this.Abs = argObj.abs || jDate.absJd(this.Year, this.Month, this.Day);\r\n }\r\n }\r\n }\r\n\r\n /**Sets the current Jewish date from the given absolute date*/\r\n fromAbs(absolute: number) {\r\n const ymd = jDate.fromAbs(absolute);\r\n this.Year = ymd.year;\r\n this.Month = ymd.month;\r\n this.Day = ymd.day;\r\n this.Abs = absolute;\r\n }\r\n\r\n /**Returns a valid javascript Date object that represents the Gregorian date\r\n that starts at midnight of the current Jewish date.*/\r\n getDate(): Date {\r\n return jDate.sdFromAbs(this.Abs);\r\n }\r\n /**\r\n * @returns {number} The day of the week for the current Jewish date. Sunday is 0 and Shabbos is 6.\r\n */\r\n getDayOfWeek(): number {\r\n return Math.abs(this.Abs % 7);\r\n }\r\n /**\r\n * @returns {number} The day of the week for the current Jewish date. Sunday is 0 and Shabbos is 6\r\n */\r\n get DayOfWeek(): number {\r\n return this.getDayOfWeek();\r\n }\r\n /**Returns a new Jewish date represented by adding the given number of days to the current Jewish date.*/\r\n addDays(days: number): jDate {\r\n return new jDate(this.Abs + days);\r\n }\r\n /**\r\n * Returns a new Jewish date represented by adding the given number of\r\n * Jewish Months to the current Jewish date.\r\n * If the current Day is 30 and the new month only has 29 days,\r\n * the 29th day of the month is returned.\r\n * @param {number} months\r\n */\r\n addMonths(months: number): jDate {\r\n let year = this.Year,\r\n month = this.Month,\r\n day = this.Day,\r\n miy = jDate.monthsJYear(year);\r\n\r\n for (let i = 0; i < Math.abs(months); i++) {\r\n if (months > 0) {\r\n month += 1;\r\n if (month > miy) {\r\n month = 1;\r\n }\r\n if (month === 7) {\r\n year += 1;\r\n miy = jDate.monthsJYear(year);\r\n }\r\n } else if (months < 0) {\r\n month -= 1;\r\n if (month === 0) {\r\n month = miy;\r\n }\r\n if (month === 6) {\r\n year -= 1;\r\n miy = jDate.monthsJYear(year);\r\n }\r\n }\r\n }\r\n if (day === 30 && jDate.daysJMonth(year, month) === 29) {\r\n day = 29;\r\n }\r\n\r\n return new jDate(year, month, day);\r\n }\r\n /**\r\n * Returns a new Jewish date represented by adding the\r\n * given number of Jewish Years to the current Jewish date.\r\n * If the current Day is 30 and the new dates month only has 29 days,\r\n * the 29th day of the month is returned.\r\n * @param {number} years\r\n */\r\n addYears(years: number): jDate {\r\n let year = this.Year + years,\r\n month = this.Month,\r\n day = this.Day;\r\n\r\n if (month === 13 && !jDate.isJdLeapY(year)) {\r\n month = 12;\r\n } else if (month === 8 && day === 30 && !jDate.isLongCheshvan(year)) {\r\n month = 9;\r\n day = 1;\r\n } else if (month === 9 && day === 30 && jDate.isShortKislev(year)) {\r\n month = 10;\r\n day = 1;\r\n }\r\n\r\n if (day === 30 && jDate.daysJMonth(year, month) === 29) {\r\n day = 29;\r\n }\r\n\r\n return new jDate(year, month, day);\r\n }\r\n addSecularMonths(months: number): jDate {\r\n const secDate = new Date(this.getDate().valueOf());\r\n secDate.setMonth(secDate.getMonth() + months);\r\n return new jDate(secDate);\r\n }\r\n addSecularYears(years: number): jDate {\r\n const secDate = new Date(this.getDate().valueOf());\r\n secDate.setFullYear(secDate.getFullYear() + years);\r\n return new jDate(secDate);\r\n }\r\n /**Gets the number of days separating this Jewish Date and the given one.\r\n *\r\n * If the given date is before this one, the number will be negative.\r\n * @param {jDate} jd\r\n * */\r\n diffDays(jd: jDate): number {\r\n return jd.Abs - this.Abs;\r\n }\r\n\r\n /**Gets the number of months separating this Jewish Date and the given one.\r\n *\r\n * Ignores the Day property:\r\n *\r\n * jDate.toJDate(5777, 6, 29).diffMonths(jDate.toJDate(5778, 7, 1)) will return 1 even though they are a day apart.\r\n *\r\n * If the given date is before this one, the number will be negative.\r\n * @param {jDate} jd\r\n * */\r\n diffMonths(jd: jDate): number {\r\n let month = jd.Month,\r\n year = jd.Year,\r\n months = 0;\r\n\r\n while (!(year === this.Year && month === this.Month)) {\r\n if (this.Abs > jd.Abs) {\r\n months--;\r\n month++;\r\n if (month > jDate.monthsJYear(year)) {\r\n month = 1;\r\n } else if (month === 7) {\r\n year++;\r\n }\r\n } else {\r\n months++;\r\n month--;\r\n if (month < 1) {\r\n month = jDate.monthsJYear(year);\r\n } else if (month === 6) {\r\n year--;\r\n }\r\n }\r\n }\r\n\r\n return months;\r\n }\r\n\r\n /**Gets the number of full months separating this Jewish Date and the given one.\r\n * If the given date is before this one, the number will be negative.\r\n * @param {jDate} jd\r\n * */\r\n diffFullMonths(jd: jDate): number {\r\n let months = this.diffMonths(jd);\r\n if (months >= 0 && this.Day > jd.Day) {\r\n months--;\r\n } else if (months < 0 && this.Day < jd.Day) {\r\n months++;\r\n }\r\n return months;\r\n }\r\n\r\n /**Gets the number of years separating this Jewish Date and the given one.\r\n *\r\n * Ignores the Day and Month properties:\r\n *\r\n * jDate.toJDate(5777, 6, 29).diffYears(jDate.toJDate(5778, 7, 1)) will return 1 even though they are a day apart.\r\n *\r\n * If the given date is before this one, the number will be negative.\r\n * @param {jDate} jd*/\r\n diffYears(jd: jDate): number {\r\n let diff = jd.Year - this.Year;\r\n if (this.Month < jd.Month || (this.Month === jd.Month && this.Day < jd.Day)) {\r\n diff--;\r\n }\r\n return diff;\r\n }\r\n\r\n /**Gets the number of full years separating this Jewish Date and the given one.\r\n * If the given date is before this one, the number will be negative.\r\n * @param {jDate} jd*/\r\n diffFullYears(jd: jDate): number {\r\n let diff = jd.Year - this.Year;\r\n if (diff >= 0 && (this.Month > jd.Month || (this.Month === jd.Month && this.Day > jd.Day))) {\r\n diff--;\r\n } else if (\r\n diff < 0 &&\r\n (this.Month < jd.Month || (this.Month === jd.Month && this.Day < jd.Day))\r\n ) {\r\n diff++;\r\n }\r\n return diff;\r\n }\r\n\r\n /**\r\n * Returns the current Jewish date in the format: Thursday, the 3rd of Kislev 5776.\r\n * @param {boolean} hideDayOfWeek\r\n * @param {boolean} dontCapitalize\r\n */\r\n toString(hideDayOfWeek?: boolean, dontCapitalize?: boolean): string {\r\n return (\r\n (hideDayOfWeek ? (dontCapitalize ? \"t\" : \"T\") : DaysOfWeekEng[this.getDayOfWeek()] + \", t\") +\r\n \"he \" +\r\n Utils.toSuffixed(this.Day) +\r\n \" of \" +\r\n this.monthName()\r\n );\r\n }\r\n\r\n /**\r\n * Returns the current Jewish date in the format \"[Tuesday] Nissan 3, 5778\"\r\n * @param {boolean} showDow - show day of week?\r\n */\r\n toShortstring(showDow: boolean): string {\r\n return (\r\n (showDow ? DaysOfWeekEng[this.getDayOfWeek()] + \" \" : \"\") +\r\n JewishMonthsEng[this.Month] +\r\n \" \" +\r\n this.Day.toString() +\r\n \", \" +\r\n this.Year.toString()\r\n );\r\n }\r\n\r\n /**\r\n * Returns the current Jewish date in the format \"Nissan 5778\"\r\n * @param {boolean} showYear - show the year number?\r\n */\r\n monthName(showYear = true): string {\r\n return (\r\n JewishMonthsEng[this.Month] +\r\n (this.Month === 12 && jDate.isJdLeapY(this.Year) ? \" Rishon \" : \" \") +\r\n (showYear ? this.Year.toString() : \"\")\r\n );\r\n }\r\n\r\n /**\r\n * Returns the current Jewish date in the format: יום חמישי כ\"א כסלו תשע\"ו\r\n * @param hideDayOfWeek When set to truthy, hides the day of the week\r\n */\r\n toStringHeb(hideDayOfWeek?: boolean): string {\r\n return (\r\n (!hideDayOfWeek ? DaysOfWeekHeb[this.getDayOfWeek()] + \" \" : \"\") +\r\n Utils.toJewishNumber(this.Day) +\r\n \" \" +\r\n JewishMonthsHeb[this.Month] +\r\n (this.Month === 12 && jDate.isJdLeapY(this.Year) ? \" ראשון \" : \" \") +\r\n Utils.toJewishNumber(this.Year % 1000)\r\n );\r\n }\r\n\r\n /**Gets the day of the omer for the current Jewish date. If the date is not during sefira, 0 is returned.*/\r\n getDayOfOmer(): number {\r\n let dayOfOmer = 0;\r\n if (\r\n (this.Month === 1 && this.Day > 15) ||\r\n this.Month === 2 ||\r\n (this.Month === 3 && this.Day < 6)\r\n ) {\r\n const first = new jDate(this.Year, 1, 15);\r\n dayOfOmer = first.diffDays(this);\r\n }\r\n return dayOfOmer;\r\n }\r\n\r\n /**\r\n * Returns true if this day is yomtov or chol hamoed\r\n * @param {boolean} israel\r\n */\r\n isYomTovOrCholHamoed(israel: boolean): boolean {\r\n return (\r\n this.isYomTov(israel) ||\r\n (this.Month === 1 && [16, 17, 18, 19, 20].includes(this.Day)) ||\r\n (this.Month === 7 && [16, 17, 18, 19, 20, 21].includes(this.Day))\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if this day is yomtov\r\n * @param {boolean} israel\r\n */\r\n isYomTov(israel: boolean): boolean {\r\n const day = this.Day;\r\n switch (this.Month) {\r\n case 1:\r\n if (day === 15 || day === 21) return true;\r\n if (!israel && (day === 16 || day === 22)) return true;\r\n break;\r\n case 3:\r\n if (day === 6 || (!israel && day === 7)) return true;\r\n break;\r\n case 7:\r\n if ([1, 2, 10, 15, 22].includes(day)) {\r\n return true;\r\n }\r\n if (!israel && (day === 16 || day === 23)) return true;\r\n break;\r\n }\r\n return false;\r\n }\r\n\r\n /**Is today Erev Yom Tov? (includes Erev second days of Sukkos and Pesach) */\r\n isErevYomTov(): boolean {\r\n return (\r\n (this.Month === 1 && Utils.has(this.Day, 14, 20)) ||\r\n (this.Month === 3 && this.Day === 5) ||\r\n (this.Month === 6 && this.Day === 29) ||\r\n (this.Month === 7 && Utils.has(this.Day, 9, 14, 21))\r\n );\r\n }\r\n\r\n /**Does the current Jewish date have candle lighting before sunset?*/\r\n hasCandleLighting(): boolean {\r\n const dow = this.getDayOfWeek();\r\n\r\n if (dow === 5) {\r\n return true;\r\n } else if (dow === 6) {\r\n //there is no \"candle lighting time\" - even if yom tov is on Motzai Shabbos\r\n return false;\r\n }\r\n\r\n return this.isErevYomTov();\r\n }\r\n\r\n /**Is the current Jewish Date the day before a yomtov that contains a Friday?*/\r\n hasEiruvTavshilin(israel: boolean): boolean {\r\n let dow = this.getDayOfWeek();\r\n return (\r\n //Eiruv Tavshilin is only on Wednesday or Thursday\r\n [3, 4].includes(dow) &&\r\n //today is Erev Yomtov\r\n this.isErevYomTov() &&\r\n //Thursday OR Wednesday when in Chu\"l or Erev Rosh Hashana anywhere\r\n (dow === 4 || (dow === 3 && (!israel || this.Month === 6))) &&\r\n //No Eiruv Tavshilin on Erev yom kippur\r\n this.Day !== 9\r\n );\r\n }\r\n\r\n /**Gets the candle lighting time for the current Jewish date for the given Location object.*/\r\n getCandleLighting(location: Location, nullIfNoCandles?: boolean) {\r\n if (!location) {\r\n throw \"To get sunrise and sunset, the location needs to be supplied\";\r\n }\r\n if (this.hasCandleLighting()) {\r\n return Zmanim.getCandleLighting(this, location);\r\n } else if (nullIfNoCandles) {\r\n return null;\r\n } else {\r\n throw \"No candle lighting on \" + this.toString();\r\n }\r\n }\r\n\r\n /**Get the sedra of the week for the current Jewish date.*/\r\n getSedra(israel: boolean) {\r\n return new Sedra(this, israel);\r\n }\r\n\r\n /**Get the prakim of Pirkei Avos for the current Jewish date.*/\r\n getPirkeiAvos(israel: boolean) {\r\n return PirkeiAvos.getPrakim(this, israel);\r\n }\r\n\r\n /**Gets sunrise and sunset time for the current Jewish date at the given Location.\r\n *\r\n * Return format: {sunrise: {hour: 6, minute: 18}, sunset: {hour: 19, minute: 41}}*/\r\n getSunriseSunset(location: Location, ignoreElevation?: boolean) {\r\n if (!location) {\r\n throw \"To get sunrise and sunset, the location needs to be supplied\";\r\n }\r\n return Zmanim.getSunTimes(this, location, !ignoreElevation);\r\n }\r\n\r\n /**Gets Chatzos for both the day and the night for the current Jewish date at the given Location.\r\n *\r\n *Return format: {hour: 11, minute: 48}*/\r\n getChatzos(location: Location) {\r\n if (!location) {\r\n throw \"To get Chatzos, the location needs to be supplied\";\r\n }\r\n return Zmanim.getChatzos(this, location);\r\n }\r\n\r\n /**Gets the length of a single Sha'a Zmanis in minutes for the current Jewish date at the given Location.*/\r\n getShaaZmanis(location: Location, offset: number) {\r\n if (!location) {\r\n throw \"To get the Shaa Zmanis, the location needs to be supplied\";\r\n }\r\n return Zmanim.getShaaZmanis(this, location, offset);\r\n }\r\n\r\n /**Returns the daily daf in English. For example: Sukkah, Daf 3.*/\r\n getDafYomi() {\r\n return DafYomi.toString(this) || \"\";\r\n }\r\n\r\n /**Gets the daily daf in Hebrew. For example: 'סוכה דף כ.*/\r\n getDafyomiHeb() {\r\n return DafYomi.toStringHeb(this) || \"\";\r\n }\r\n\r\n /**\r\n * Converts its argument/s to a Jewish Date.\r\n * Samples of use:\r\n * To get the current Jewish Date: jDate.toJDate(new Date()).\r\n * To print out the current date in English: jDate.toJDate(new Date()).toString()\r\n * To print out the current date in Hebrew: jDate.toJDate(new Date()).toStringHeb()\r\n *\r\n * Arguments to the jDate.toJDate function can be one of the following:\r\n * jDate.toJDate() - Sets the Jewish Date for the current system date\r\n * jDate.toJDate(Date) - Sets to the Jewish date on the given Javascript Date object\r\n * jDate.toJDate(\"January 1 2045\") - Accepts any valid Javascript Date string (uses string constructor of Date object)\r\n * jDate.toJDate(jewishYear, jewishMonth, jewishDay) - Months start at 1. Nissan is month 1 Adara Sheini is 13.\r\n * jDate.toJDate(jewishYear, jewishMonth) - Same as above, with Day defaulting to 1\r\n * jDate.toJDate(jewishYear) - sets to the first day of Rosh Hashana on the given year\r\n * jDate.toJDate( { year: 5776, month: 4, day: 5 } ) - Months start at 1. Nissan is month 1 Adara Sheini is 13.\r\n * jDate.toJDate( { year: 5776, month: 4 } ) - Same as above, with Day defaulting to 1\r\n * jDate.toJDate( { year: 5776 } ) - sets to the first day of Rosh Hashana on the given year\r\n * jDate.toJDate(jewishYear, jewishMonth, jewishDay, absoluteDate) - Most efficient. Needs no calculations at all. The absoluteDate is the number of days elapsed since the theoretical date Sunday, December 31, 0001 BCE.\r\n * jDate.toJDate( { year: 5776, month: 4, day: 5, abs: 122548708 } ) - same as jDate.toJDate(jewishYear, jewishMonth, jewishDay, absoluteDate)\r\n ****************************************************************************************************************/\r\n static toJDate(\r\n arg?:\r\n | number\r\n | Date\r\n | string\r\n | { year: number; month: number; day: number }\r\n | [number, number, number, number],\r\n month?: number,\r\n day?: number,\r\n abs?: number\r\n ): jDate {\r\n if (arguments.length === 0) {\r\n return new jDate();\r\n }\r\n // If just the year is set, then the date is set to Rosh Hashana of that year.\r\n // In the above scenario, we can't just pass the args along, as the constructor will treat it as an absolute date.\r\n //...and that folks, is actually the whole point of this function...\r\n else if (Utils.isNumber(arg) && arguments.length === 1) {\r\n return new jDate(arg, 7, 1);\r\n } else {\r\n return new jDate(arg, month, day, abs);\r\n }\r\n }\r\n\r\n static now(): jDate {\r\n return new jDate();\r\n }\r\n\r\n /**Calculate the Jewish year, month and day for the given absolute date.*/\r\n static fromAbs(absDay: number): { year: number; month: number; day: number } {\r\n //To save on calculations, start with a few years before date\r\n let year = 3761 + Utils.toInt(absDay / (absDay > 0 ? 366 : 300)),\r\n month: number,\r\n day: number;\r\n\r\n // Search forward for year from the approximation year.\r\n while (absDay >= jDate.absJd(year + 1, 7, 1)) {\r\n year++;\r\n }\r\n // Search forward for month from either Tishrei or Nissan.\r\n month = absDay < jDate.absJd(year, 1, 1) ? 7 : 1;\r\n while (absDay > jDate.absJd(year, month, jDate.daysJMonth(year, month))) {\r\n month++;\r\n }\r\n // Calculate the day by subtraction.\r\n day = absDay - jDate.absJd(year, month, 1) + 1;\r\n\r\n return { year, month, day };\r\n }\r\n /**\r\n * Gets the absolute date of the given javascript Date object.\r\n * @param {Date} date\r\n */\r\n static absSd(date: Date): number {\r\n //Get the correct number of milliseconds since 1/1/1970 00:00:00 UTC until current system time\r\n const ms = date.valueOf() - date.getTimezoneOffset() * 60000,\r\n //The number of full days since 1/1/1970.\r\n numFullDays = Math.floor(ms / MS_PER_DAY);\r\n //Add that to the number of days from 1/1/0001 until 1/1/1970 00:00:00 UTC\r\n return JS_START_DATE_ABS + numFullDays;\r\n }\r\n\r\n /**Calculate the absolute date for the given Jewish Date.*/\r\n static absJd(year: number, month: number, day: number): number {\r\n //The number of total days.\r\n let dayInYear = day; // day is the number of days so far this month.\r\n if (month < 7) {\r\n // Before Tishrei, so add days in prior months this year before and after Nissan.\r\n let m = 7;\r\n while (m <= jDate.monthsJYear(year)) {\r\n dayInYear += jDate.daysJMonth(year, m);\r\n m++;\r\n }\r\n m = 1;\r\n while (m < month) {\r\n dayInYear += jDate.daysJMonth(year, m);\r\n m++;\r\n }\r\n } else {\r\n // Add days in prior months this year\r\n let m = 7;\r\n while (m < month) {\r\n dayInYear += jDate.daysJMonth(year, m);\r\n m++;\r\n }\r\n }\r\n // Days elapsed before absolute date 1. - Days in prior years.\r\n return dayInYear + (jDate.tDays(year) + -1373429);\r\n }\r\n\r\n /**\r\n * Gets a javascript date from an absolute date\r\n */\r\n static sdFromAbs(abs: number): Date {\r\n //The \"zero hour\" for Javascript is 1/1/1970 0:00:00 UTC.\r\n //If the time zone offset was more than 0, the current time zone was earlier than UTC at the time.\r\n //As the \"zero hour\" is at midnight, so if the current time was earlier than that, than it was during the previous date.\r\n //So we will need to add another day to get the correct date.\r\n const offset = JS_START_OFFSET > 0 ? 1 : 0,\r\n //Get the number of days from the \"zero hour\" until the given date.\r\n //This is done by taking the given absolute date and removing the\r\n //number of days from absolute date 0 until the js \"zero hour\" - keeping into\r\n //account the previously calculated possible day offset.\r\n daysSinceStart = abs - JS_START_DATE_ABS + offset;\r\n //Create a javascript date from the number of milliseconds since the \"zero hour\"\r\n return new Date(daysSinceStart * MS_PER_DAY);\r\n }\r\n\r\n /**number of days in the given Jewish Month. Nissan is 1 and Adar Sheini is 13.*/\r\n static daysJMonth(year: number, month: number): number {\r\n switch (month) {\r\n //Nissan, Sivan, Av, Tishrei and Shvat always have 30 days\r\n case 1:\r\n case 3:\r\n case 5:\r\n case 7:\r\n case 11:\r\n return 30;\r\n //Iyyar, Tammuz, Ellul, Teves and Adar Sheini always have 29 days.\r\n case 2:\r\n case 4:\r\n case 6:\r\n case 10:\r\n case 13:\r\n return 29;\r\n //Cheshvan sometimes has 29 days and sometimes 30 days.\r\n case 8:\r\n return jDate.isLongCheshvan(year) ? 30 : 29;\r\n //Kislev sometimes has 29 days and sometimes 30 days.\r\n case 9:\r\n return jDate.isShortKislev(year) ? 29 : 30;\r\n //Adar has 29 days unless it is Adar Rishon.\r\n case 12:\r\n return jDate.isJdLeapY(year) ? 30 : 29;\r\n }\r\n return 0;\r\n }\r\n\r\n /**Elapsed days since creation of the world until Rosh Hashana of the given year*/\r\n static tDays(year: number): number {\r\n /*As this function is called many times, often on the same year for all types of calculations,\r\n we save a list of years with their elapsed values.*/\r\n const cached = _yearCache.find((y) => !!y && y.year === year);\r\n //If this year was already calculated and cached, then we return the cached value.\r\n if (cached) {\r\n return cached.elapsed;\r\n }\r\n\r\n const months = Utils.toInt(\r\n 235 * Utils.toInt((year - 1) / 19) + // Leap months this cycle\r\n 12 * ((year - 1) % 19) + // Regular months in this cycle.\r\n (7 * ((year - 1) % 19) + 1) / 19\r\n ), // Months in complete cycles so far.\r\n parts = 204 + 793 * (months % 1080),\r\n hours = 5 + 12 * months + 793 * Utils.toInt(months / 1080) + Utils.toInt(parts / 1080),\r\n conjDay = Utils.toInt(1 + 29 * months + hours / 24),\r\n conjParts = 1080 * (hours % 24) + (parts % 1080);\r\n\r\n let altDay;\r\n /* at the end of a leap year - 15 hours, 589 parts or later... -\r\n ... or is on a Monday at... - ...of a common year, -\r\n at 9 hours, 204 parts or later... - ...or is on a Tuesday... -\r\n If new moon is at or after midday,*/\r\n if (\r\n conjParts >= 19440 ||\r\n (conjDay % 7 === 2 && conjParts >= 9924 && !jDate.isJdLeapY(year)) ||\r\n (conjDay % 7 === 1 && conjParts >= 16789 && jDate.isJdLeapY(year - 1))\r\n ) {\r\n // Then postpone Rosh HaShanah one day\r\n altDay = conjDay + 1;\r\n } else {\r\n altDay = conjDay;\r\n }\r\n\r\n // A day is added if Rosh HaShanah would occur on Sunday, Friday or Wednesday,\r\n if (Utils.has(altDay % 7, 0, 3, 5)) {\r\n altDay += 1;\r\n }\r\n\r\n //Add this year to the cache to save on calculations later on\r\n _yearCache.push({ year: year, elapsed: altDay });\r\n\r\n return altDay;\r\n }\r\n\r\n /**number of days in the given Jewish Year.*/\r\n static daysJYear(year: number): number {\r\n return jDate.tDays(year + 1) - jDate.tDays(year);\r\n }\r\n\r\n /**Does Cheshvan for the given Jewish Year have 30 days?*/\r\n static isLongCheshvan(year: number): boolean {\r\n return jDate.daysJYear(year) % 10 === 5;\r\n }\r\n\r\n /**Does Kislev for the given Jewish Year have 29 days?*/\r\n static isShortKislev(year: number): boolean {\r\n return jDate.daysJYear(year) % 10 === 3;\r\n }\r\n\r\n /**Does the given Jewish Year have 13 months?*/\r\n static isJdLeapY(year: number): boolean {\r\n return (7 * year + 1) % 19 < 7;\r\n }\r\n\r\n /**number of months in Jewish Year.*/\r\n static monthsJYear(year: number): number {\r\n return jDate.isJdLeapY(year) ? 13 : 12;\r\n }\r\n}\r\n","\r\nimport {Utils} from '../Utils.js';\r\nimport jDate from './jDate.js';\r\nimport Location from './Location.js';\r\nimport { SunTimes, Time } from '../jcal-zmanim.js';\r\n\r\n/**\r\n * Computes the daily Zmanim for any single date at any location.\r\n * The astronomical and mathematical calculations were directly adapted from the excellent\r\n * Jewish calendar calculation in C# Copyright © by Ulrich and Ziporah Greve (2005)\r\n */\r\nexport default class Zmanim {\r\n /**\r\n * Gets sunrise and sunset time for given date and Location.\r\n * Accepts a javascript Date object, a string for creating a javascript date object or a jDate object.\r\n * Location object is required.\r\n * @returns {SunTimes}\r\n * @param {Date | jDate} date A Javascript Date or Jewish Date for which to calculate the sun times.\r\n * @param {Location} location Where on the globe to calculate the sun times for.\r\n * @param {Boolean} considerElevation\r\n */\r\n static getSunTimes(date: Date | jDate, location: Location, considerElevation = true): SunTimes {\r\n if (date instanceof jDate) {\r\n date = date.getDate();\r\n }\r\n else if (date instanceof String) {\r\n date = new Date(date);\r\n }\r\n\r\n if (!Utils.isValidDate(date)) {\r\n throw 'Zmanim.getSunTimes: supplied date parameter cannot be converted to a Date';\r\n }\r\n\r\n let sunrise, sunset,\r\n zenithDeg = 90, zenithMin = 50, lonHour = 0, longitude = 0, latitude = 0,\r\n cosLat = 0, sinLat = 0, cosZen = 0, sinDec = 0, cosDec = 0,\r\n xmRise = 0, xmSet = 0, xlRise = 0, xlSet = 0, aRise = 0, aSet = 0, ahrRise = 0, ahrSet = 0,\r\n hRise = 0, hSet = 0, tRise = 0, tSet = 0, utRise = 0, utSet = 0;\r\n\r\n const day = Zmanim.dayOfYear(date),\r\n earthRadius = 6356900,\r\n zenithAtElevation = Zmanim.degToDec(zenithDeg, zenithMin) +\r\n Zmanim.radToDeg(Math.acos(earthRadius / (earthRadius +\r\n (considerElevation ? location.Elevation : 0))));\r\n\r\n zenithDeg = Math.floor(zenithAtElevation);\r\n zenithMin = (zenithAtElevation - zenithDeg) * 60;\r\n cosZen = Math.cos(0.01745 * Zmanim.degToDec(zenithDeg, zenithMin));\r\n longitude = location.Longitude;\r\n lonHour = longitude / 15;\r\n latitude = location.Latitude;\r\n cosLat = Math.cos(0.01745 * latitude);\r\n sinLat = Math.sin(0.01745 * latitude);\r\n tRise = day + (6 + lonHour) / 24;\r\n tSet = day + (18 + lonHour) / 24;\r\n xmRise = Zmanim.M(tRise);\r\n xlRise = Zmanim.L(xmRise);\r\n xmSet = Zmanim.M(tSet);\r\n xlSet = Zmanim.L(xmSet);\r\n aRise = 57.29578 * Math.atan(0.91746 * Math.tan(0.01745 * xlRise));\r\n aSet = 57.29578 * Math.atan(0.91746 * Math.tan(0.01745 * xlSet));\r\n if (Math.abs(aRise + 360 - xlRise) > 90) {\r\n aRise += 180;\r\n }\r\n if (aRise > 360) {\r\n aRise -= 360;\r\n }\r\n if (Math.abs(aSet + 360 - xlSet) > 90) {\r\n aSet += 180;\r\n }\r\n if (aSet > 360) {\r\n aSet -= 360;\r\n }\r\n ahrRise = aRise / 15;\r\n sinDec = 0.39782 * Math.sin(0.01745 * xlRise);\r\n cosDec = Math.sqrt(1 - sinDec * sinDec);\r\n hRise = (cosZen - sinDec * sinLat) / (cosDec * cosLat);\r\n ahrSet = aSet / 15;\r\n sinDec = 0.39782 * Math.sin(0.01745 * xlSet);\r\n cosDec = Math.sqrt(1 - sinDec * sinDec);\r\n hSet = (cosZen - sinDec * sinLat) / (cosDec * cosLat);\r\n if (Math.abs(hRise) <= 1) {\r\n hRise = 57.29578 * Math.acos(hRise);\r\n utRise = ((360 - hRise) / 15) + ahrRise + Zmanim.adj(tRise) + lonHour;\r\n sunrise = Zmanim.timeAdj(utRise + location.UTCOffset, date, location);\r\n if (sunrise.hour > 12) {\r\n sunrise.hour -= 12;\r\n }\r\n }\r\n\r\n if (Math.abs(hSet) <= 1) {\r\n hSet = 57.29578 * Math.acos(hSet);\r\n utSet = (hRise / 15) + ahrSet + Zmanim.adj(tSet) + lonHour;\r\n sunset = Zmanim.timeAdj(utSet + location.UTCOffset, date, location);\r\n if (sunset.hour > 0 && sunset.hour < 12) {\r\n sunset.hour += 12;\r\n }\r\n }\r\n\r\n return { sunrise: sunrise, sunset: sunset };\r\n }\r\n\r\n /**\r\n * @param {jDate | Date} date\r\n * @param {Location} location\r\n */\r\n static getChatzos(date: jDate | Date, location: Location) {\r\n return Zmanim.getChatzosFromSuntimes(\r\n Zmanim.getSunTimes(date, location, false));\r\n }\r\n\r\n /**\r\n * @param {SunTimes} sunTimes\r\n */\r\n static getChatzosFromSuntimes(sunTimes: SunTimes): Time {\r\n const rise = sunTimes.sunrise,\r\n set = sunTimes.sunset;\r\n\r\n if (rise === undefined || isNaN(rise.hour) || set === undefined || isNaN(set.hour)) {\r\n return { hour: NaN, minute: NaN };\r\n }\r\n const chatz = Utils.toInt((Utils.totalSeconds(set) - Utils.totalSeconds(rise)) / 2);\r\n return Utils.addSeconds(rise, chatz);\r\n }\r\n\r\n /**\r\n * @param {jDate | Date} date\r\n * @param {Location} location\r\n * @param {any} offset\r\n */\r\n static getShaaZmanis(date: jDate | Date, location: Location, offset: number): number {\r\n return Zmanim.getShaaZmanisFromSunTimes(\r\n Zmanim.getSunTimes(date, location, false),\r\n offset);\r\n }\r\n\r\n /**\r\n * @param {{ sunrise: any; sunset: any; }} sunTimes\r\n * @param {number} [offset]\r\n */\r\n static getShaaZmanisFromSunTimes(sunTimes: SunTimes, offset?: number): number {\r\n if (!sunTimes || !sunTimes.sunrise || !sunTimes.sunset) {\r\n return 0;\r\n }\r\n let rise = sunTimes.sunrise,\r\n set = sunTimes.sunset;\r\n\r\n if (!rise || isNaN(rise.hour) || !set || isNaN(set.hour)) {\r\n return NaN;\r\n }\r\n\r\n if (offset) {\r\n rise = Utils.addMinutes(rise, -offset) as Time;\r\n set = Utils.addMinutes(set, offset) as Time;\r\n }\r\n\r\n return (Utils.totalSeconds(set) - Utils.totalSeconds(rise)) / 720;\r\n }\r\n\r\n /**\r\n * @param {{ sunrise: any; sunset: any; }} sunTimes\r\n * @param {boolean} israel\r\n */\r\n static getShaaZmanisMga(sunTimes: SunTimes, israel: boolean) {\r\n const minutes = israel ? 90 : 72;\r\n let rise = sunTimes.sunrise && Utils.addMinutes(sunTimes.sunrise, -minutes),\r\n set = sunTimes.sunset && Utils.addMinutes(sunTimes.sunset, minutes);\r\n\r\n if (!rise || isNaN(rise.hour) || !set || isNaN(set.hour)) {\r\n return NaN;\r\n }\r\n\r\n return (Utils.totalSeconds(set) - Utils.totalSeconds(rise)) / 720;\r\n }\r\n\r\n /**\r\n * @param {jDate | Date} date\r\n * @param {Location} location\r\n */\r\n static getCandleLighting(date: Date | jDate, location: Location) {\r\n return Zmanim.getCandleLightingFromSunTimes(\r\n Zmanim.getSunTimes(date, location),\r\n location);\r\n }\r\n\r\n /**\r\n * @param {SunTimes} sunTimes\r\n * @param {any} location\r\n */\r\n static getCandleLightingFromSunTimes(sunTimes: SunTimes, location: Location) {\r\n return sunTimes.sunset && Zmanim.getCandleLightingFromSunset(sunTimes.sunset, location);\r\n }\r\n\r\n\r\n /**\r\n * @param {Time} sunset\r\n * @param {Location} location\r\n */\r\n static getCandleLightingFromSunset(sunset: Time, location: Location) {\r\n return Utils.addMinutes(sunset, -(location.CandleLighting || 0));\r\n }\r\n\r\n /**\r\n * @param {Date} date\r\n */\r\n static dayOfYear(date: Date) {\r\n const month = date.getMonth(),\r\n isLeap = () => Utils.isSecularLeapYear(date.getFullYear()),\r\n yearDay = [0, 1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\r\n return yearDay[month + 1] + date.getDate() + ((month > 1 && isLeap()) ? 1 : 0);\r\n }\r\n\r\n /**\r\n * @param {number} deg\r\n * @param {number} min\r\n */\r\n static degToDec(deg: number, min: number) {\r\n return (deg + min / 60);\r\n }\r\n\r\n /**\r\n * @param {number} x\r\n */\r\n static M(x: number) {\r\n return (0.9856 * x - 3.251);\r\n }\r\n\r\n /**\r\n * @param {number} x\r\n */\r\n static L(x: number) {\r\n return (x + 1.916 * Math.sin(0.01745 * x) + 0.02 * Math.sin(2 * 0.01745 * x) + 282.565);\r\n }\r\n\r\n /**\r\n * @param {number} x\r\n */\r\n static adj(x: number) {\r\n return (-0.06571 * x - 6.62);\r\n }\r\n\r\n /**\r\n * @param {number} rad\r\n */\r\n static radToDeg(rad: number) {\r\n return 57.29578 * rad;\r\n }\r\n\r\n /**\r\n * @param {number} time\r\n * @param {Date} date\r\n * @param {Location} location\r\n */\r\n static timeAdj(time: number, date: Date, location: Location) {\r\n if (time < 0) {\r\n time += 24;\r\n }\r\n let hour = Utils.toInt(time);\r\n const minFloat = (time - hour) * 60 + 0.5,\r\n min = Utils.toInt(minFloat),\r\n sec = Math.round(60.0 * (minFloat - min));\r\n\r\n if (Utils.isDST(location, date)) {\r\n hour++;\r\n }\r\n\r\n return Utils.fixTime({ hour: hour, minute: min, second: sec });\r\n }\r\n}","import Zmanim from './JCal/Zmanim.js';\r\nimport jDate from './JCal/jDate.js';\r\nimport Location from './JCal/Location.js';\r\nimport { Time } from './jcal-zmanim.js';\r\n\r\nconst __DEV__ = process.env.NODE_ENV === 'development';\r\n\r\nexport const DaysOfWeek = Object.freeze({\r\n SUNDAY: 0,\r\n MONDAY: 1,\r\n TUESDAY: 2,\r\n WEDNESDAY: 3,\r\n THURSDAY: 4,\r\n FRIDAY: 5,\r\n SHABBOS: 6,\r\n});\r\nexport const JewishMonthsNames = Object.freeze({\r\n NISSAN: 1,\r\n IYAR: 2,\r\n SIVAN: 3,\r\n TAMUZ: 4,\r\n AV: 5,\r\n ELLUL: 6,\r\n TISHREI: 7,\r\n CHESHVAN: 8,\r\n KISLEV: 9,\r\n TEVES: 10,\r\n SHVAT: 11,\r\n ADAR: 12,\r\n ADAR_SHEINI: 13\r\n});\r\nexport const JewishMonthsEng = [\r\n '',\r\n 'Nissan',\r\n 'Iyar',\r\n 'Sivan',\r\n 'Tamuz',\r\n 'Av',\r\n 'Ellul',\r\n 'Tishrei',\r\n 'Cheshvan',\r\n 'Kislev',\r\n 'Teves',\r\n 'Shvat',\r\n 'Adar',\r\n 'Adar Sheini',\r\n];\r\nexport const JewishMonthsHeb = [\r\n '',\r\n 'ניסן',\r\n 'אייר',\r\n 'סיון',\r\n 'תמוז',\r\n 'אב',\r\n 'אלול',\r\n 'תשרי',\r\n 'חשון',\r\n 'כסלו',\r\n 'טבת',\r\n 'שבט',\r\n 'אדר',\r\n 'אדר שני',\r\n];\r\nexport const SecularMonthsEng = [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December',\r\n];\r\nexport const DaysOfWeekEng = [\r\n 'Sunday',\r\n 'Monday',\r\n 'Tuesday',\r\n 'Wednesday',\r\n 'Thursday',\r\n 'Erev Shabbos',\r\n 'Shabbos Kodesh',\r\n];\r\nexport const DaysOfWeekHeb = [\r\n 'יום ראשון',\r\n 'יום שני',\r\n 'יום שלישי',\r\n 'יום רביעי',\r\n 'יום חמישי',\r\n 'ערב שבת קודש',\r\n 'שבת קודש',\r\n];\r\nexport class Utils {\r\n static jsd = ['א', 'ב', 'ג', 'ד', 'ה', 'ו', 'ז', 'ח', 'ט'];\r\n static jtd = ['י', 'כ', 'ל', 'מ', 'נ', 'ס', 'ע', 'פ', 'צ'];\r\n static jhd = ['ק', 'ר', 'ש', 'ת'];\r\n static jsnum = [\r\n '',\r\n 'אחד',\r\n 'שנים',\r\n 'שלשה',\r\n 'ארבעה',\r\n 'חמשה',\r\n 'ששה',\r\n 'שבעה',\r\n 'שמונה',\r\n 'תשעה',\r\n ];\r\n static jtnum = ['', 'עשר', 'עשרים', 'שלושים', 'ארבעים'];\r\n\r\n /**\r\n * Gets the Jewish representation of a number (365 = שס\"ה)\r\n * Minimum number is 1 and maximum is 9999.\r\n * @param {Number} number\r\n */\r\n static toJewishNumber(number: number) {\r\n if (number < 1) {\r\n throw 'Min value is 1';\r\n }\r\n\r\n if (number > 9999) {\r\n throw 'Max value is 9999';\r\n }\r\n\r\n let n = number,\r\n retval = '';\r\n\r\n if (n >= 1000) {\r\n retval += Utils.jsd[Utils.toInt((n - (n % 1000)) / 1000) - 1] + \"'\";\r\n n = n % 1000;\r\n }\r\n\r\n while (n >= 400) {\r\n retval += 'ת';\r\n n -= 400;\r\n }\r\n\r\n if (n >= 100) {\r\n retval += Utils.jhd[Utils.toInt((n - (n % 100)) / 100) - 1];\r\n n = n % 100;\r\n }\r\n\r\n if (n == 15) {\r\n retval += 'טו';\r\n } else if (n == 16) {\r\n retval += 'טז';\r\n } else {\r\n if (n > 9) {\r\n retval += Utils.jtd[Utils.toInt((n - (n % 10)) / 10) - 1];\r\n }\r\n if (n % 10 > 0) {\r\n retval += Utils.jsd[(n % 10) - 1];\r\n }\r\n }\r\n if (number > 999 && number % 1000 < 10) {\r\n retval = \"'\" + retval;\r\n } else if (retval.length > 1) {\r\n retval = retval.slice(0, -1) + '\"' + retval[retval.length - 1];\r\n }\r\n return retval;\r\n }\r\n\r\n /**\r\n * Returns the javascript date in the format: Thursday, the 3rd of January 2018.\r\n * @param {Date} date\r\n * @param {Boolean} hideDayOfWeek\r\n * @param {Boolean} dontCapitalize\r\n */\r\n static toStringDate(date: Date, hideDayOfWeek: boolean, dontCapitalize: boolean) {\r\n if (!date) return;\r\n return (\r\n (hideDayOfWeek\r\n ? dontCapitalize\r\n ? 't'\r\n : 'T'\r\n : DaysOfWeekEng[date.getDay()] + ', t') +\r\n 'he ' +\r\n Utils.toSuffixed(date.getDate()) +\r\n ' of ' +\r\n SecularMonthsEng[date.getMonth()] +\r\n ' ' +\r\n date.getFullYear().toString()\r\n );\r\n }\r\n\r\n /**\r\n * Returns the javascript date in the format: 1/3/2020.\r\n * @param {Date} date\r\n * @param {Boolean} monthFirst\r\n */\r\n static toShortStringDate(date: Date, monthFirst: boolean) {\r\n if (!date) return;\r\n const dayNum = date.getDate(),\r\n monthNum = date.getMonth() + 1;\r\n return (\r\n (monthFirst\r\n ? `${monthNum}/${dayNum}`\r\n : `${dayNum < 10 ? '0' : ''}${dayNum}/${monthNum < 10 ? '0' : ''\r\n }${monthNum}`) +\r\n '/' +\r\n date.getFullYear().toString()\r\n );\r\n }\r\n\r\n /**\r\n * Add two character suffix to number. e.g. 21st, 102nd, 93rd, 500th\r\n * @param {Number} num\r\n */\r\n static toSuffixed(num: number) {\r\n const t = num.toString();\r\n let suffix = 'th';\r\n if (t.length === 1 || t[t.length - 2] !== '1') {\r\n switch (t[t.length - 1]) {\r\n case '1':\r\n suffix = 'st';\r\n break;\r\n case '2':\r\n suffix = 'nd';\r\n break;\r\n case '3':\r\n suffix = 'rd';\r\n break;\r\n }\r\n }\r\n return t + suffix;\r\n }\r\n\r\n /**\r\n * Returns if the given full secular year has a February 29th\r\n * @param {Number} year\r\n */\r\n static isSecularLeapYear(year: number) {\r\n return !(year % 400) || (!!(year % 100) && !(year % 4));\r\n }\r\n\r\n /**\r\n * Get day of week using Javascripts getDay function.\r\n * Important note: months starts at 1 not 0 like javascript\r\n * The DOW returned has Sunday = 0\r\n * @param {Number} year\r\n * @param {Number} month\r\n * @param {Number} day\r\n */\r\n static getSdDOW(year: number, month: number, day: number) {\r\n return new Date(year, month - 1, day).getDay();\r\n }\r\n\r\n /**\r\n * Makes sure hour is between 0 and 23 and minute is between 0 and 59.\r\n * Overlaps get added/subtracted.\r\n * The argument needs to be an object in the format {hour : 12, minute : 42, second : 18}\r\n * @param {Time} time\r\n */\r\n static fixTime(time: Time) {\r\n //make a copy - javascript sends object parameters by reference\r\n const result = {\r\n hour: time.hour,\r\n minute: time.minute,\r\n second: time.second || 0,\r\n };\r\n while (result.second >= 60) {\r\n result.minute += 1;\r\n result.second -= 60;\r\n }\r\n while (result.second < 0) {\r\n result.minute -= 1;\r\n result.second += 60;\r\n }\r\n while (result.minute < 0) {\r\n result.minute += 60;\r\n result.hour--;\r\n }\r\n while (result.minute >= 60) {\r\n result.minute -= 60;\r\n result.hour++;\r\n }\r\n if (result.hour < 0) {\r\n result.hour = 24 + (result.hour % 24);\r\n }\r\n if (result.hour > 23) {\r\n result.hour = result.hour % 24;\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Add the given number of minutes to the given time.\r\n * The argument needs to be an object in the format {hour : 12, minute : 42, second : 18 }\r\n *\r\n * @param {Time} time\r\n * @param {Number} minutes\r\n */\r\n static addMinutes(time?: Time, minutes?: number): Time | undefined {\r\n if (!time) return time;\r\n return (\r\n time &&\r\n Utils.fixTime({\r\n hour: time.hour,\r\n minute: time.minute + (minutes || 0),\r\n second: time.second,\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Add the given number of seconds to the given time.\r\n * The argument needs to be an object in the format {hour : 12, minute :42, second : 18}\r\n *\r\n * @param {Time} time\r\n * @param {Number} seconds\r\n */\r\n static addSeconds(time: Time, seconds: number) {\r\n return Utils.fixTime({\r\n hour: time.hour,\r\n minute: time.minute,\r\n second: (time.second || 0) + seconds,\r\n });\r\n }\r\n\r\n /**\r\n * Gets the time difference between two times of day.\r\n * If showNegative is falsey, assumes that the earlier time is always before the later time.\r\n * So, if laterTime is less than earlierTime, the returned diff is until the next day.\r\n * Both arguments need to be an object in the format {hour : 12, minute : 42, second : 18 }\r\n * @param {Time} earlierTime\r\n * @param {Time} laterTime\r\n * @param {Boolean} [showNegative] show negative values or assume second value is next day?\r\n * @returns{{hour:number, minute:number, second:number, sign:1|-1}}\r\n */\r\n static timeDiff(earlierTime: Time, laterTime: Time, showNegative = false) {\r\n const earlySec = Utils.totalSeconds(earlierTime),\r\n laterSec = Utils.totalSeconds(laterTime),\r\n time = Utils.fixTime({\r\n hour: 0,\r\n minute: 0,\r\n second:\r\n earlySec <= laterSec\r\n ? laterSec - earlySec\r\n : showNegative\r\n ? earlySec - laterSec\r\n : 86400 - earlySec + laterSec,\r\n });\r\n\r\n return {\r\n ...time,\r\n sign: earlySec <= laterSec || !showNegative ? 1 : -1,\r\n };\r\n }\r\n\r\n /**\r\n * Gets the total number of minutes in the given time.\r\n * @param {Time} time An object in the format {hour : 12, minute :42, second : 18}\r\n */\r\n static totalMinutes(time: Time) {\r\n return time ? time.hour * 60 + time.minute : 0;\r\n }\r\n\r\n /**\r\n * Gets the total number of seconds in the given time.\r\n * @param {Time} time An object in the format {hour : 12, minute :42, second : 18}\r\n */\r\n static totalSeconds(time: Time) {\r\n return time ? Utils.totalMinutes(time) * 60 + (time.second || 0) : 0;\r\n }\r\n\r\n /**\r\n * Returns the time of the given javascript date as an object in the format of {hour : 23, minute :42, second: 18 }\r\n * @param {Date} sdate\r\n * @returns {{hour :number, minute :number, second:number }}\r\n */\r\n static timeFromDate(sdate: Date) {\r\n return {\r\n hour: sdate.getHours(),\r\n minute: sdate.getMinutes(),\r\n second: sdate.getSeconds(),\r\n };\r\n }\r\n\r\n /**\r\n * Determines if the second given time is after (or at) the first given time\r\n * @param {{hour :number, minute :number, second:number }} beforeTime\r\n * @param {{hour :number, minute :number, second:number }} afterTime\r\n */\r\n static isTimeAfter(beforeTime?: Time, afterTime?: Time) {\r\n if (!beforeTime || !afterTime) return false;\r\n return Utils.totalSeconds(afterTime) >= Utils.totalSeconds(beforeTime);\r\n }\r\n\r\n /**\r\n * Returns the given time interval in a formatted string.\r\n * @param {{hour:number, minute:number,second:number,sign?: 1 | -1}} time An object in the format {hour : 23, minute :42, second: 18 }\r\n */\r\n static getTimeIntervalTextStringHeb(time: Time) {\r\n let t = '';\r\n if (time.hour > 0) {\r\n t += `${time.hour.toString()} ${time.hour === 1 ? 'שעה' : 'שעות'}`;\r\n }\r\n if (time.minute > 0) {\r\n if (t.length) {\r\n t += ' ';\r\n }\r\n t += `${time.minute.toString()} ${time.minute === 1 ? 'דקה' : 'דקות'\r\n }`;\r\n }\r\n if ((time.second || 0) > 0) {\r\n if (t.length) {\r\n t += ' ';\r\n }\r\n t += `${Math.trunc(time.second || 0).toString()} ${time.second === 1 ? 'שנייה' : 'שניות'\r\n }`;\r\n }\r\n return t;\r\n }\r\n\r\n /**\r\n * Returns the given time interval in a formatted string.\r\n * @param {{hour:number, minute:number,second:number,sign?: 1 | -1}} time An object in the format {hour : 23, minute :42, second: 18 }\r\n */\r\n static getTimeIntervalTextString(time: Time) {\r\n let t = '';\r\n if (time.hour > 0) {\r\n t += `${time.hour.toString()} ${time.hour === 1 ? 'hour' : 'hours'\r\n }`;\r\n }\r\n if (time.minute > 0) {\r\n if (t.length) {\r\n t += ' ';\r\n }\r\n t += `${time.minute.toString()} ${time.minute === 1 ? 'minute' : 'minutes'\r\n }`;\r\n }\r\n if ((time.second || 0) > 0) {\r\n if (t.length) {\r\n t += ' ';\r\n }\r\n t += `${Math.trunc(time.second || 0).toString()} ${time.second === 1 ? 'second' : 'seconds'\r\n }`;\r\n }\r\n return t;\r\n }\r\n\r\n /**\r\n * Returns the nusach for Sefiras Ha'omer for the given day and minhag\r\n * @param {number} dayOfOmer The day of the Omer for which to get the nusach for\r\n * @param {'ashkenaz'|'sefard'|'sefardi'} nusach Should it be La'Omer (\"sefard\") or Ba'Omer (\"ashkenaz\") or \"sefardi\" (Eidot Hamizrach)?\r\n */\r\n static getOmerNusach(dayOfOmer: number, nusach: 'ashkenaz' | 'sefard' | 'sefardi') {\r\n const weeks = Utils.toInt(dayOfOmer / 7),\r\n days = dayOfOmer % 7;\r\n let txt = 'היום ';\r\n\r\n if (dayOfOmer === 1) {\r\n txt += 'יום אחד ';\r\n } else {\r\n if (dayOfOmer === 2) {\r\n txt += 'שני ';\r\n } else {\r\n if (dayOfOmer === 10) {\r\n txt += 'עשרה ';\r\n } else {\r\n txt += Utils.jsnum[Utils.toInt(dayOfOmer % 10)] + ' ';\r\n if (dayOfOmer > 10) {\r\n if (dayOfOmer > 20 && dayOfOmer % 10 > 0) {\r\n txt += 'ו';\r\n }\r\n txt += Utils.jtnum[Utils.toInt(dayOfOmer / 10)] + ' ';\r\n }\r\n }\r\n }\r\n txt += (dayOfOmer >= 11 ? 'יום' : 'ימים') + ' ';\r\n\r\n if (nusach === 'sefardi') {\r\n txt += 'לעומר' + ' ';\r\n }\r\n\r\n if (dayOfOmer >= 7) {\r\n txt += 'שהם ';\r\n if (weeks === 1) {\r\n txt += 'שבוע אחד ';\r\n } else if (weeks === 2) {\r\n txt += 'שני שבועות ';\r\n } else if (weeks > 0) {\r\n txt += Utils.jsnum[Utils.toInt(weeks)] + ' שבועות ';\r\n }\r\n if (days === 1) {\r\n txt += 'ויום אחד ';\r\n } else if (days === 2) {\r\n txt += 'ושני ימים ';\r\n } else if (days > 0) {\r\n txt += 'ו' + Utils.jsnum[days] + ' ימים ';\r\n }\r\n }\r\n }\r\n if (nusach === 'sefard') {\r\n txt += 'לעומר';\r\n } else if (nusach === 'ashkenaz') {\r\n txt += 'בעומר';\r\n }\r\n return txt;\r\n }\r\n\r\n /**\r\n * Returns the given time in a formatted string.\r\n * @param {Time} time An object in the format {hour : 23, minute :42, second: 18 }\r\n * @param {1 | -1} [sign] \r\n * @param {Boolean} [army] If falsey, the returned string will be: 11:42:18 PM otherwise it will be 23:42:18\r\n * @param {Boolean} [roundUp] If falsey, the numbers will converted to a whole number by rounding down, otherwise, up.\r\n */\r\n static getTimeString(time: Time, sign?: 1 | -1, army?: boolean, roundUp?: boolean) {\r\n const round = roundUp ? Math.ceil : Math.floor;\r\n time = {\r\n hour: round(time.hour),\r\n minute: round(time.minute),\r\n second: round(time.second || 0),\r\n };\r\n if (army) {\r\n return (\r\n (sign && sign < 0 ? '-' : '') +\r\n (time.hour.toString() +\r\n ':' +\r\n (time.minute < 10\r\n ? '0' + time.minute.toString()\r\n : time.minute.toString()) +\r\n ':' +\r\n ((time.second || 0) < 10\r\n ? '0' + (time.second || 0).toString()\r\n : (time.second || 0).toString()))\r\n );\r\n } else {\r\n return (\r\n (sign && sign < 0 ? '-' : '') +\r\n (time.hour <= 12\r\n ? time.hour == 0\r\n ? 12\r\n : time.hour\r\n : time.hour - 12\r\n ).toString() +\r\n ':' +\r\n (time.minute < 10\r\n ? '0' + time.minute.toString()\r\n : time.minute.toString()) +\r\n ':' +\r\n ((time.second || 0) < 10\r\n ? '0' + (time.second || 0).toString()\r\n : (time.second || 0).toString()) +\r\n (time.hour < 12 ? ' AM' : ' PM')\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Gets the UTC offset in whole hours for the users time zone.\r\n * Note: this is not affected by DST - unlike javascripts getTimezoneOffset() function which gives you the current offset.\r\n */\r\n static currUtcOffset() {\r\n const date = new Date(),\r\n jan = new Date(date.getFullYear(), 0, 1),\r\n jul = new Date(date.getFullYear(), 6, 1);\r\n return -Utils.toInt(\r\n Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset()) / 60,\r\n );\r\n }\r\n\r\n /** Determines if the given date is within DST on the users system */\r\n static isDateDST(date: Date) {\r\n return (\r\n -Utils.toInt(date.getTimezoneOffset() / 60) !==\r\n Utils.currUtcOffset()\r\n );\r\n }\r\n\r\n /**\r\n * Determines if the given date is within DST in the given location\r\n * Note: This may not be correct if the user has set the Location to a\r\n * time zone outside Israel or the USA which is not the current system time zone.\r\n */\r\n static isDST(location: Location, date: Date) {\r\n //If the current system time zone is the same as the given locations time zone\r\n if (location.UTCOffset === Utils.currUtcOffset()) {\r\n //We can use the system data to determine if the given date is within DST\r\n return Utils.isDateDST(date);\r\n } else if (location.Israel) {\r\n return Utils.isIsrael_DST(date);\r\n } else {\r\n return Utils.isUSA_DST(date);\r\n }\r\n }\r\n\r\n /**\r\n * Determines if the given javascript date is during DST according to the USA rules\r\n * @param {Date} date A javascript Date object\r\n */\r\n static isUSA_DST(date: Date) {\r\n const year = date.getFullYear(),\r\n month = date.getMonth() + 1,\r\n day = date.getDate(),\r\n hour = date.getHours();\r\n\r\n if (month < 3 || month == 12) {\r\n return false;\r\n } else if (month > 3 && month < 11) {\r\n return true;\r\n }\r\n\r\n //DST starts at 2 AM on the second Sunday in March\r\n else if (month === 3) {\r\n //March\r\n //Gets day of week on March 1st\r\n const firstDOW = Utils.getSdDOW(year, 3, 1),\r\n //Gets date of second Sunday\r\n targetDate = firstDOW == 0 ? 8 : 7 - ((firstDOW + 7) % 7) + 8;\r\n\r\n return day > targetDate || (day === targetDate && hour >= 2);\r\n }\r\n //DST ends at 2 AM on the first Sunday in November //dt.Month == 11 / November\r\n else {\r\n //Gets day of week on November 1st\r\n const firstDOW = Utils.getSdDOW(year, 11, 1),\r\n //Gets date of first Sunday\r\n targetDate = firstDOW === 0 ? 1 : 7 - ((firstDOW + 7) % 7) + 1;\r\n\r\n return day < targetDate || (day === targetDate && hour < 2);\r\n }\r\n }\r\n\r\n //\r\n /**\r\n * Determines if the given Javascript date is during DST according to the current (5776) Israeli rules\r\n * @param {Date} date A Javascript Date object\r\n */\r\n static isIsrael_DST(date: Date) {\r\n const year = date.getFullYear(),\r\n month = date.getMonth() + 1,\r\n day = date.getDate(),\r\n hour = date.getHours();\r\n\r\n if (month > 10 || month < 3) {\r\n return false;\r\n } else if (month > 3 && month < 10) {\r\n return true;\r\n }\r\n //DST starts at 2 AM on the Friday before the last Sunday in March\r\n else if (month === 3) {\r\n //March\r\n //Gets date of the Friday before the last Sunday\r\n const lastFriday = 31 - Utils.getSdDOW(year, 3, 31) - 2;\r\n return day > lastFriday || (day === lastFriday && hour >= 2);\r\n }\r\n //DST ends at 2 AM on the last Sunday in October //dt.Month === 10 / October\r\n else {\r\n //Gets date of last Sunday in October\r\n const lastSunday = 31 - Utils.getSdDOW(year, 10, 31);\r\n return day < lastSunday || (day === lastSunday && hour < 2);\r\n }\r\n }\r\n\r\n /** The current time in Israel - determined by the current users system time and time zone offset*/\r\n static getSdNowInIsrael() {\r\n const now = new Date(),\r\n //first determine the hour differential between this user and Israel time\r\n israelTimeOffset = 2 + -Utils.currUtcOffset();\r\n //This will give us the current correct date and time in Israel\r\n now.setHours(now.getHours() + israelTimeOffset);\r\n return now;\r\n }\r\n /**\r\n * Adds the given number of days to the given javascript date and returns the new date\r\n * @param {Date} sdate\r\n * @param {Number} days\r\n */\r\n static addDaysToSdate(sdate: Date, days: number) {\r\n return new Date(sdate.valueOf() + 8.64e7 * days);\r\n }\r\n /**\r\n * Compares two js dates to se if they both refer to the same day - time is ignored.\r\n * @param {Date} sdate1\r\n * @param {Date} sdate2\r\n */\r\n static isSameSdate(sdate1: Date, sdate2: Date) {\r\n return (\r\n sdate1 && sdate2 && sdate1.toDateString() === sdate2.toDateString()\r\n );\r\n }\r\n /**\r\n * Compares two jDates to se if they both refer to the same day - time is ignored.\r\n * @param {jDate} jdate1\r\n * @param {jDate} jdate2\r\n */\r\n static isSameJdate(jdate1: jDate, jdate2: jDate) {\r\n return (\r\n jdate1 &&\r\n jdate2 &&\r\n jdate1.Abs &&\r\n jdate2.Abs &&\r\n jdate1.Abs === jdate2.Abs\r\n );\r\n }\r\n /**\r\n * Compares two jDates to see if they both refer to the same Jewish Month.\r\n * @param {jDate} jdate1\r\n * @param {jDate} jdate2\r\n */\r\n static isSameJMonth(jdate1: jDate, jdate2: jDate) {\r\n return jdate1.Month === jdate2.Month && jdate1.Year === jdate2.Year;\r\n }\r\n /**\r\n * Compares two dates to se if they both refer to the same Secular Month.\r\n * @param {Date} sdate1\r\n * @param {Date} sdate2\r\n */\r\n static isSameSMonth(sdate1: Date, sdate2: Date) {\r\n return (\r\n sdate1.getMonth() === sdate2.getMonth() &&\r\n sdate1.getFullYear() === sdate2.getFullYear()\r\n );\r\n }\r\n /**\r\n * Determines if the time of the given Date() is after sunset at the given Location\r\n * @param {Date} sdate\r\n * @param {Location} location\r\n */\r\n static isAfterSunset(sdate: Date, location: Location) {\r\n const shkia = Zmanim.getSunTimes(sdate, location).sunset,\r\n now = Utils.timeFromDate(sdate);\r\n return shkia && Utils.isTimeAfter(shkia, now);\r\n }\r\n /**\r\n * Gets the current Jewish Date at the given Location\r\n * @param {Location} location\r\n */\r\n static nowAtLocation(location: Location) {\r\n let sdate = new Date();\r\n //if isAfterSunset a day is added.\r\n if (Utils.isAfterSunset(sdate, location)) {\r\n sdate.setDate(sdate.getDate() + 1);\r\n }\r\n return new jDate(sdate);\r\n }\r\n /**\r\n * Converts the given complex number to an integer by removing the decimal part.\r\n * Returns same results as Math.floor for positive numbers and Math.ceil for negative ones.\r\n * Almost identical functionality to Math.trunc and parseInt.\r\n * The difference is if the argument is NaN. Math.trunc returns NaN while ths fuction returns 0.\r\n * In performance tests, this function was found to be quicker than the alternatives.\r\n * @param {Number} float The complex number to convert to an integer\r\n */\r\n static toInt(float: number) {\r\n return float | 0;\r\n }\r\n\r\n /***\r\n * Takes either a jDate or a Date and returns both\r\n * @param date {Date |jDate}\r\n * @returns {{ sdate:Date, jdate:jDate }}\r\n */\r\n static bothDates(date: Date | jDate) {\r\n const jdate = date instanceof Date\r\n ? new jDate(date as Date)\r\n : date as jDate;\r\n const sdate = date instanceof Date\r\n ? date as Date\r\n : jdate.getDate();\r\n return { sdate, jdate };\r\n }\r\n /** Returns true if \"thing\" is either a string primitive or String object.*/\r\n static isString(thing: unknown) {\r\n return typeof thing === 'string' || thing instanceof String;\r\n }\r\n /** Returns true if \"thing\" is either a number primitive or a Number object.*/\r\n static isNumber(thing: unknown) {\r\n return typeof thing === 'number' || thing instanceof Number;\r\n }\r\n /** Returns true if \"thing\" is a Date object containing a valid date.*/\r\n static isValidDate(thing: unknown) {\r\n return thing instanceof Date && !isNaN(thing.valueOf());\r\n }\r\n /** Returns whether or not the given, array, string, or argument list contains the given item or substring.\r\n *\r\n * This function is awfully similar to Array.includes, but has the added plus of accepting any number or type of arguments.*/\r\n static has(o: unknown, ...arr: unknown[]) {\r\n if (arr.length === 1 && (Array.isArray(arr[0]) || Utils.isString(arr[0]))) {\r\n return (arr[0] as unknown[]).includes(o);\r\n } else {\r\n return arr.includes(o);\r\n }\r\n }\r\n /** Returns the first value unless it is undefined, null or NaN.\r\n *\r\n * This is very useful for boolean, string and integer parameters\r\n * where we want to keep false, \"\" and 0 if they were supplied.\r\n *\r\n * Similar purpose to default parameters with the difference being that this function will return\r\n * the second value if the first is NaN or null, while default params will give give you the NaN or the null.\r\n */\r\n static setDefault(paramValue: unknown, defValue: unknown) {\r\n if (\r\n typeof paramValue === 'undefined' ||\r\n paramValue === null ||\r\n isNaN(paramValue as number)\r\n ) {\r\n return defValue;\r\n } else {\r\n return paramValue;\r\n }\r\n }\r\n /**\r\n * Returns an array containing a range of integers.\r\n * @param {Number} [start] The number to start at. The start number is included in the results.\r\n * If only one argument is supplied, start will be set to 1.\r\n * @param {Number} end The top end of the range.\r\n * Unlike Pythons range function, The end number is included in the results.\r\n * @returns {[Number]}\r\n */\r\n static range(start: number, end?: number) {\r\n const startNumber = typeof (end) === 'undefined' ? 1 : start,\r\n endNumber = typeof (end) === 'undefined' ? start : end;\r\n\r\n return Array.from({ length: endNumber - startNumber + 1 }, (v, i) => startNumber + i);\r\n }\r\n /**\r\n * Log message to console\r\n * @param {string} txt\r\n */\r\n static log(txt: string, ...optionalItems: any[]) {\r\n if (__DEV__) {\r\n console.log(txt, ...optionalItems);\r\n }\r\n }\r\n /**\r\n * Warn message to console\r\n * @param {string} txt\r\n */\r\n static warn(txt: string, ...optionalItems: any[]) {\r\n if (__DEV__) {\r\n console.warn(txt, ...optionalItems);\r\n }\r\n }\r\n /**\r\n * Error message to console\r\n * @param {*} txt\r\n */\r\n static error(txt: string, ...optionalItems: any[]) {\r\n if (__DEV__) {\r\n console.error(txt, ...optionalItems);\r\n }\r\n }\r\n}\r\n","/** Represents a geographic Location. Needed for calculating Zmanim.\r\nIf Israel is undefined, if the given coordinates are near the vicinity of Israel it will be assumed that it is in Israel.\r\nUTCOffset is the time zone. Israel is always 2 and the US East coast is -5. England is 0 of course.\r\nIf UTCOffset is not specifically supplied, the longitude will be used to get a quasi-educated guess.*/\r\nexport default class Location {\r\n Name: string;\r\n NameHebrew?: string;\r\n Israel: boolean;\r\n Latitude: number;\r\n Longitude: number;\r\n UTCOffset: number;\r\n Elevation: number;\r\n CandleLighting?: number;\r\n /**\r\n * Describe a new Location.\r\n * @param {String} name The name of the Location\r\n * @param {String} nameHeb The name of the Location\r\n * @param {Boolean} israel Is this Location in Israel?\r\n * @param {Number} latitude\r\n * @param {Number} longitude\r\n * @param {Number} utcOffset The time zone. Israel is 2 and New York is -5.\r\n * @param {Number} elevation Elevation in meters\r\n * @param {Number} [candleLighting] Number of minutes before sunset the candles are lit on Friday\r\n */\r\n constructor(name: string, nameHeb: string | undefined, israel: boolean, latitude: number, longitude: number, utcOffset: number, elevation: number, candleLighting?: number) {\r\n //If the israel argument was not set at all.\r\n if (typeof israel === 'undefined' || israel === null) {\r\n //If the user is within Israels general coordinates,\r\n //we feel pretty safe assuming they are in Israel.\r\n //Where else on the map is the user? (Note, the probability of our users Jewishness: 99.99%)\r\n //Sinai, Lebanon, Syria, Jordan, in a submarine under the Mediterranean ...\r\n israel = (latitude > 29.45 && latitude < 33 && longitude < -34.23 && longitude > -35.9);\r\n }\r\n if (israel) {\r\n //Israel has only one immutable time zone\r\n utcOffset = 2;\r\n }\r\n //If the utcOffset argument was not set at all.\r\n else if (typeof utcOffset === 'undefined' || utcOffset === null) {\r\n //Try to determine the \"correct\" time zone using the simple fact that Greenwich is both TZ 0 and longitude 0.\r\n //Even though technically this is the way it should be,\r\n //it will be often incorrect as time zones are almost always tweaked to accommodate the closest border.\r\n utcOffset = -Math.round(longitude / 15);\r\n }\r\n\r\n this.Name = (name || 'Unknown Location');\r\n this.NameHebrew = nameHeb;\r\n this.Israel = !!israel;\r\n this.Latitude = latitude;\r\n this.Longitude = longitude;\r\n this.UTCOffset = utcOffset || 0;\r\n this.Elevation = elevation || 0;\r\n this.CandleLighting = candleLighting || Location.getCandles(this);\r\n }\r\n\r\n static clone(location: Location) {\r\n return new Location(\r\n location.Name,\r\n location.NameHebrew,\r\n location.Israel,\r\n location.Latitude,\r\n location.Longitude,\r\n location.UTCOffset,\r\n location.Elevation,\r\n location.CandleLighting || 0);\r\n }\r\n\r\n static getCandles(location: Location) {\r\n if (location.CandleLighting) {\r\n return location.CandleLighting;\r\n }\r\n else if (!location.Israel) {\r\n return 18;\r\n }\r\n else {\r\n const special = [{ names: ['jerusalem', 'yerush', 'petach', 'petah', 'petak', 'beit shemesh', 'ירושלים', 'פתח תקוה', 'בית שמש'], min: 40 },\r\n { names: ['haifa', 'chaifa', 'be\\'er sheva', 'beersheba', 'חיפה', 'באר שבע'], min: 22 }],\r\n loclc = location.Name.toLowerCase(),\r\n city = special.find(sp => {\r\n return sp.names.find(spi => {\r\n return loclc.indexOf(spi) > -1;\r\n });\r\n });\r\n return city ? city.min : 30;\r\n }\r\n }\r\n\r\n /**Gets the Location for Jerusalem.*/\r\n static getJerusalem() {\r\n return new Location('Jerusalem', 'ירושלים', true, 31.78, -35.22, 2, 800, 40);\r\n }\r\n /**Gets the Location for Lakewood NJ*/\r\n static getLakewood() {\r\n return new Location('Lakewood NJ', undefined, false, 40.1, 74.23, -5, 0, 18);\r\n }\r\n}","import Location from './JCal/Location.js';\r\nimport { distance } from 'closest-match';\r\nimport locations from './locations.json';\r\n/**\r\n * NOTE: South and East are negative.\r\n */\r\ntype Point = { latitude: number, longitude: number };\r\n\r\n\r\nconst Locations = locations.map((l) =>\r\n new Location(l.name, l.heb, !!l.il, l.lat, l.lon, l.tz, l.el || 0, l.cl));\r\n\r\n//Sort the Locations by name\r\nLocations.sort(function (a: Location, b: Location) {\r\n return a.Name > b.Name ? 1 : b.Name > a.Name ? -1 : 0;\r\n});\r\n//The location names and indexes - until the first comma and in lowercase.\r\nconst justNames: { name: string, index: number }[] = [];\r\nfor (let i = 0; i < Locations.length - 1; i++) {\r\n const l = Locations[i];\r\n justNames.push({\r\n name: l.Name.split(',', 1)[0].toLowerCase(), index: i\r\n });\r\n if (!!l.NameHebrew) {\r\n justNames.push({\r\n name: l.NameHebrew, index: i\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Get the distance between two points in Kilometers\r\n * @param {Point} point1 \r\n * @param {Point} point2 \r\n * @returns {number}\r\n */\r\nfunction distancePointToPoint(point1: Point, point2: Point): number {\r\n if ((point1.latitude == point2.latitude) && (point1.longitude == point2.longitude)) {\r\n return 0;\r\n }\r\n else {\r\n var radlat1 = Math.PI * point1.latitude / 180;\r\n var radlat2 = Math.PI * point2.latitude / 180;\r\n var theta = point1.longitude - point2.longitude;\r\n var radtheta = Math.PI * theta / 180;\r\n var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);\r\n if (dist > 1) {\r\n dist = 1;\r\n }\r\n dist = Math.acos(dist);\r\n dist = dist * 180 / Math.PI;\r\n dist = dist * 60 * 1.1515;\r\n dist = dist * 1.609344\r\n return dist;\r\n }\r\n}\r\n\r\n/**\r\n * Find the Location (city) that is the closest to the given point of coordinates.\r\n * @param {Point} point \r\n * @returns \r\n */\r\nfunction closestDistanceMatch(point: Point): Location | undefined {\r\n let curr: { dist: number, location?: Location } = { dist: 100000 };\r\n for (let location of Locations) {\r\n const dist = distancePointToPoint(point, { latitude: location.Latitude, longitude: location.Longitude });\r\n if (dist < curr.dist) {\r\n curr = { dist, location };\r\n }\r\n }\r\n return curr.location;\r\n}\r\n\r\n/**\r\n * Find the Location (city) who's city name is the closest match to the given point of coordinates.\r\n * @param {string} val\r\n * @returns \r\n */\r\nfunction closestNameMatch(val: string): Location | undefined {\r\n let curr: {\r\n dist: number, location?: { name: string, index: number }\r\n } = { dist: 100000 };\r\n for (let location of justNames) {\r\n const dist = distance(val.toLowerCase(), location.name);\r\n if (dist < curr.dist) {\r\n curr = { dist, location };\r\n }\r\n }\r\n return curr.location ? Locations[curr.location.index] : undefined;\r\n}\r\n\r\n/**\r\n * Option 1: Find a location with the given name\r\n * Option 2: Find the location with the name that is most similar to the given name\r\n * Option 3: Find the Location with the given coordinates\r\n * Option 4: Find the location closest to the given coordinates\r\n * @param {String|Point} nameOrCoordinates\r\n */\r\nfunction findLocation(nameOrCoordinates: string | Point): Location | undefined {\r\n if (typeof nameOrCoordinates === 'string') {\r\n //First simply try to find an exact (case insensitive) match\r\n const exactNameMatch = Locations.find((l: Location) =>\r\n l.Name.toLowerCase() === nameOrCoordinates.toLowerCase() || l.NameHebrew === nameOrCoordinates);\r\n if (!!exactNameMatch) {\r\n return exactNameMatch;\r\n }\r\n //Next, we try to find an exact (case insensitive) match up untill the first comma\r\n const cityOnlyNameMatch = justNames.find(l =>\r\n l.name === nameOrCoordinates.toLowerCase());\r\n if (!!cityOnlyNameMatch) {\r\n return Locations[cityOnlyNameMatch.index];\r\n }\r\n //As a last resort, try to use some fancy algorithm to get the closest name match\r\n return closestNameMatch(nameOrCoordinates.toLowerCase(),)\r\n }\r\n else { //The given parameter is a Point of coordinates\r\n const exactCoordinateMatch = Locations.find((l: Location) =>\r\n l.Latitude === nameOrCoordinates.latitude &&\r\n l.Longitude === nameOrCoordinates.longitude);\r\n if (!!exactCoordinateMatch) {\r\n return exactCoordinateMatch;\r\n }\r\n return closestDistanceMatch(nameOrCoordinates);\r\n }\r\n}\r\n\r\nexport { Locations, findLocation, closestDistanceMatch, closestNameMatch };\r\n","[{\"name\":\"Ofakim\",\"heb\":\"אופקים\",\"il\":true,\"tz\":2,\"el\":170,\"lat\":31.32,\"lon\":-34.62},{\"name\":\"Eilat\",\"heb\":\"אילת\",\"il\":true,\"tz\":2,\"lat\":29.55,\"lon\":-34.95},{\"name\":\"Elad\",\"heb\":\"אלעד\",\"il\":true,\"tz\":2,\"el\":150,\"lat\":32.05,\"lon\":-34.95},{\"name\":\"Ashdod\",\"heb\":\"אשדוד\",\"il\":true,\"tz\":2,\"lat\":31.78,\"lon\":-34.63},{\"name\":\"Ashkelon\",\"heb\":\"אשקלון\",\"il\":true,\"tz\":2,\"lat\":31.65,\"lon\":-34.57},{\"name\":\"Be'er Ya'akov\",\"heb\":\"באר יעקב\",\"il\":true,\"tz\":2,\"lat\":31.93,\"lon\":-34.83},{\"name\":\"Bersheba\",\"heb\":\"באר שבע\",\"il\":true,\"tz\":2,\"el\":270,\"lat\":31.23,\"lon\":-34.78},{\"name\":\"Beit She'an\",\"heb\":\"בית שאן\",\"il\":true,\"tz\":2,\"el\":0,\"lat\":32.5,\"lon\":-35.5},{\"name\":\"Beit Shemesh\",\"heb\":\"בית שמש\",\"il\":true,\"tz\":2,\"el\":300,\"lat\":31.73,\"lon\":-34.98},{\"name\":\"Beitar Illit\",\"heb\":\"ביתר עלית\",\"il\":true,\"tz\":2,\"el\":800,\"lat\":31.68,\"lon\":-35.12},{\"name\":\"Bnei Brak\",\"heb\":\"בני ברק\",\"il\":true,\"tz\":2,\"el\":70,\"lat\":32.08,\"lon\":-34.82,\"cl\":21},{\"name\":\"Binyamina\",\"heb\":\"בנימינה\",\"il\":true,\"tz\":2,\"lat\":32.52,\"lon\":-34.95},{\"name\":\"Bat Yam\",\"heb\":\"בת ים\",\"il\":true,\"tz\":2,\"lat\":32.02,\"lon\":-34.73},{\"name\":\"Givat Zeev\",\"heb\":\"גבעת זאב\",\"il\":true,\"tz\":2,\"lat\":31.87,\"lon\":-35.17},{\"name\":\"Givatayim\",\"heb\":\"גבתיים\",\"il\":true,\"tz\":2,\"lat\":32.05,\"lon\":-34.8},{\"name\":\"Dimona\",\"heb\":\"דימונה\",\"il\":true,\"tz\":2,\"lat\":31.07,\"lon\":-35.03},{\"name\":\"Hertzeliya\",\"heb\":\"הרצליה\",\"il\":true,\"tz\":2,\"lat\":32.17,\"lon\":-34.83},{\"name\":\"Zichron Ya'akov\",\"heb\":\"זכרון יעקב\",\"il\":true,\"tz\":2,\"el\":170,\"lat\":32.57,\"lon\":-34.95},{\"name\":\"Hebron\",\"heb\":\"חברון\",\"il\":true,\"tz\":2,\"el\":950,\"lat\":31.53,\"lon\":-35.08},{\"name\":\"Hadera\",\"heb\":\"חדרה\",\"il\":true,\"tz\":2,\"lat\":32.43,\"lon\":-34.92},{\"name\":\"Holon\",\"heb\":\"חולון\",\"il\":true,\"tz\":2,\"lat\":32.02,\"lon\":-34.75},{\"name\":\"Chispin\",\"heb\":\"חיספין\",\"il\":true,\"tz\":2,\"lat\":32.85,\"lon\":-35.77},{\"name\":\"Haifa\",\"heb\":\"חיפה\",\"il\":true,\"tz\":2,\"el\":370,\"lat\":32.8,\"lon\":-34.98},{\"name\":\"Chafetz Chaim\",\"heb\":\"חפץ חיים\",\"il\":true,\"tz\":2,\"el\":80,\"lat\":31.48,\"lon\":-34.47},{\"name\":\"Tiberius\",\"heb\":\"טבריה\",\"il\":true,\"tz\":2,\"lat\":32.78,\"lon\":-35.53},{\"name\":\"Telz Stone\",\"heb\":\"טלז סטון\",\"il\":true,\"tz\":2,\"el\":720,\"lat\":31.78,\"lon\":-35.1},{\"name\":\"Yerucham\",\"heb\":\"ירוחם\",\"il\":true,\"tz\":2,\"lat\":30.98,\"lon\":-34.92},{\"name\":\"Jerusalem\",\"heb\":\"ירושלים\",\"il\":true,\"tz\":2,\"el\":775,\"lat\":31.77,\"lon\":-35.23,\"cl\":40},{\"name\":\"Kfar Chabad\",\"heb\":\"כפר חבד\",\"il\":true,\"tz\":2,\"lat\":31.97,\"lon\":-34.8},{\"name\":\"Kfar Chasidim\",\"heb\":\"כפר חסידים\",\"il\":true,\"tz\":2,\"el\":154,\"lat\":32.73,\"lon\":-35.08},{\"name\":\"Kfar Mimon\",\"heb\":\"כפר מיימון\",\"il\":true,\"tz\":2,\"lat\":31.42,\"lon\":-34.58},{\"name\":\"Karmiel\",\"heb\":\"כרמיאל\",\"il\":true,\"tz\":2,\"lat\":32.92,\"lon\":-35.3},{\"name\":\"Lod\",\"heb\":\"לוד\",\"il\":true,\"tz\":2,\"lat\":31.95,\"lon\":-34.88},{\"name\":\"Migdal Ha'Emek\",\"heb\":\"מגדל העמק\",\"il\":true,\"tz\":2,\"lat\":32.67,\"lon\":-35.23},{\"name\":\"Meron\",\"heb\":\"מירון\",\"il\":true,\"tz\":2,\"el\":900,\"lat\":32.98,\"lon\":-35.43},{\"name\":\"Ma'agalim\",\"heb\":\"מעגלים\",\"il\":true,\"tz\":2,\"el\":150,\"lat\":31.48,\"lon\":-34.67},{\"name\":\"Ma'aleh Adumim\",\"heb\":\"מעלה אדומים\",\"il\":true,\"tz\":2,\"lat\":31.77,\"lon\":-35.3},{\"name\":\"Mitzpeh Ramon\",\"heb\":\"מצפה רמון\",\"il\":true,\"tz\":2,\"el\":892,\"lat\":30.62,\"lon\":-34.8},{\"name\":\"Ne'halel\",\"heb\":\"נהלל\",\"il\":true,\"tz\":2,\"lat\":32.67,\"lon\":-35.23},{\"name\":\"Nahariya\",\"heb\":\"נהריה\",\"il\":true,\"tz\":2,\"el\":25,\"lat\":33.02,\"lon\":-35.1},{\"name\":\"Nir Eztyon\",\"heb\":\"ניר עציון\",\"il\":true,\"tz\":2,\"el\":220,\"lat\":32.7,\"lon\":-34.98},{\"name\":\"Nesher\",\"heb\":\"נשר\",\"il\":true,\"tz\":2,\"lat\":32.73,\"lon\":-35.08},{\"name\":\"Netivot\",\"heb\":\"נתיבות\",\"il\":true,\"tz\":2,\"el\":142,\"lat\":31.42,\"lon\":-34.58},{\"name\":\"Netanya\",\"heb\":\"נתניה\",\"il\":true,\"tz\":2,\"lat\":32.33,\"lon\":-34.87},{\"name\":\"Ein Bokek\",\"heb\":\"עין בוקק\",\"il\":true,\"tz\":2,\"lat\":31.2,\"lon\":-35.37},{\"name\":\"Acre\",\"heb\":\"עכו\",\"il\":true,\"tz\":2,\"lat\":32.93,\"lon\":-35.08},{\"name\":\"Eli\",\"heb\":\"עלי\",\"il\":true,\"tz\":2,\"el\":720,\"lat\":32.07,\"lon\":-35.27},{\"name\":\"Afula\",\"heb\":\"עפולה\",\"il\":true,\"tz\":2,\"el\":60,\"lat\":32.6,\"lon\":-35.28},{\"name\":\"Etzyon Gaver\",\"heb\":\"עציון גבר\",\"il\":true,\"tz\":2,\"el\":5,\"lat\":29.53,\"lon\":-34.95},{\"name\":\"Arad\",\"heb\":\"ערד\",\"il\":true,\"tz\":2,\"el\":640,\"lat\":31.27,\"lon\":-35.22},{\"name\":\"Pardes Chana\",\"heb\":\"פרדס חנה\",\"il\":true,\"tz\":2,\"lat\":32.47,\"lon\":-34.97},{\"name\":\"Petach Tikvah\",\"heb\":\"פתח תקווה\",\"il\":true,\"tz\":2,\"lat\":32.08,\"lon\":-34.88,\"cl\":40},{\"name\":\"Safed\",\"heb\":\"צפת\",\"il\":true,\"tz\":2,\"el\":850,\"lat\":32.97,\"lon\":-35.5},{\"name\":\"Kedumim\",\"heb\":\"קדומים\",\"il\":true,\"tz\":2,\"el\":487,\"lat\":32.22,\"lon\":-35.15},{\"name\":\"Komemiyut\",\"heb\":\"קוממיות\",\"il\":true,\"tz\":2,\"el\":76,\"lat\":31.65,\"lon\":-34.73},{\"name\":\"Kiryat Arba\",\"heb\":\"קרית ארבע\",\"il\":true,\"tz\":2,\"el\":987,\"lat\":31.52,\"lon\":-35.1},{\"name\":\"Kiryat Gat\",\"heb\":\"קרית גת\",\"il\":true,\"tz\":2,\"el\":159,\"lat\":31.62,\"lon\":-34.77},{\"name\":\"Kityat Tivon\",\"heb\":\"קרית טבעון\",\"il\":true,\"tz\":2,\"el\":39,\"lat\":32.73,\"lon\":-35.08},{\"name\":\"Kiryat Yam\",\"heb\":\"קרית ים\",\"il\":true,\"tz\":2,\"lat\":32.83,\"lon\":-35.07},{\"name\":\"Kiryat Malachi\",\"heb\":\"קרית מלאכי\",\"il\":true,\"tz\":2,\"lat\":31.73,\"lon\":-34.75},{\"name\":\"Modi'in Illit\",\"heb\":\"מודיעין עילית\",\"il\":true,\"tz\":2,\"el\":240,\"lat\":31.93,\"lon\":-35.04,\"cl\":30},{\"name\":\"Kiryat Shmona\",\"heb\":\"קרית שמונה\",\"il\":true,\"tz\":2,\"lat\":33.2,\"lon\":-35.57},{\"name\":\"Rosh Ha'ayin\",\"heb\":\"ראש העין\",\"il\":true,\"tz\":2,\"el\":90,\"lat\":32.08,\"lon\":-34.95},{\"name\":\"Rosh Pina\",\"heb\":\"ראש פינה\",\"il\":true,\"tz\":2,\"el\":131,\"lat\":32.97,\"lon\":-35.48},{\"name\":\"Rishon Le'Tzion\",\"heb\":\"ראשון לציון\",\"il\":true,\"tz\":2,\"lat\":31.97,\"lon\":-34.8},{\"name\":\"Rehovot\",\"heb\":\"רחובות\",\"il\":true,\"tz\":2,\"el\":76,\"lat\":31.88,\"lon\":-34.82},{\"name\":\"Ramla\",\"heb\":\"רמלה\",\"il\":true,\"tz\":2,\"lat\":31.92,\"lon\":-34.87},{\"name\":\"Ramat Hasharon\",\"heb\":\"רמת השרון\",\"il\":true,\"tz\":2,\"el\":85,\"lat\":32.17,\"lon\":-34.85},{\"name\":\"Ramat Magshimim\",\"heb\":\"רמת מגשימים\",\"il\":true,\"tz\":2,\"el\":450,\"lat\":32.83,\"lon\":-35.82},{\"name\":\"Ra'anana\",\"heb\":\"רעננה\",\"il\":true,\"tz\":2,\"el\":71,\"lat\":32.17,\"lon\":-34.85},{\"name\":\"Shvi tzion\",\"heb\":\"שבי ציון\",\"il\":true,\"tz\":2,\"lat\":33.02,\"lon\":-35.1},{\"name\":\"Nablus\",\"heb\":\"שכם\",\"il\":true,\"tz\":2,\"el\":667,\"lat\":32.22,\"lon\":-35.27},{\"name\":\"Shalavim\",\"heb\":\"שלעבים\",\"il\":true,\"tz\":2,\"el\":194,\"lat\":31.87,\"lon\":34.98},{\"name\":\"Tushiya\",\"heb\":\"תושיה\",\"il\":true,\"tz\":2,\"lat\":31.42,\"lon\":-34.58},{\"name\":\"Tel Aviv\",\"heb\":\"תל אביב\",\"il\":true,\"tz\":2,\"el\":20,\"lat\":32.07,\"lon\":-34.77,\"cl\":21},{\"name\":\"Tifrach\",\"heb\":\"תפרח\",\"il\":true,\"tz\":2,\"el\":173,\"lat\":31.32,\"lon\":-34.67},{\"name\":\"Nazereth\",\"heb\":\"נצרת\",\"il\":true,\"tz\":2,\"lat\":32.7,\"lon\":-35.32},{\"name\":\"Menachemya\",\"heb\":\"מנחמיה\",\"il\":true,\"tz\":2,\"lat\":32.6,\"lon\":-35.55},{\"name\":\"Ramot\",\"heb\":\"רמות\",\"il\":true,\"tz\":2,\"el\":800,\"lat\":31.82,\"lon\":-35.18},{\"name\":\"Katzrin\",\"heb\":\"קצרין\",\"il\":true,\"tz\":2,\"lat\":32.98,\"lon\":-35.68},{\"name\":\"Hashmonaim\",\"heb\":\"חשמונאים\",\"il\":true,\"tz\":2,\"el\":255,\"lat\":31.93,\"lon\":-35.02},{\"name\":\"Laniado\",\"heb\":\"לניאדו / נתניה\",\"il\":true,\"tz\":2,\"el\":26,\"lat\":32.33,\"lon\":-34.87},{\"name\":\"Melbourne\",\"tz\":10,\"el\":35,\"lat\":-37.82,\"lon\":-144.97},{\"name\":\"Aukland\",\"tz\":12,\"lat\":-36.87,\"lon\":-174.77},{\"name\":\"Boisbriand\",\"tz\":-5,\"lat\":45.62,\"lon\":73.85},{\"name\":\"Ottawa\",\"tz\":-5,\"lat\":45.42,\"lon\":75.7},{\"name\":\"Winnipeg\",\"tz\":-6,\"lat\":49.88,\"lon\":97.13},{\"name\":\"Toronto\",\"tz\":-5,\"el\":175,\"lat\":43.68,\"lon\":79.43},{\"name\":\"Montreal\",\"tz\":-5,\"el\":30,\"lat\":45.52,\"lon\":73.57},{\"name\":\"Eidenburg\",\"tz\":0,\"el\":134,\"lat\":55.92,\"lon\":3.18},{\"name\":\"Algeria\",\"tz\":1,\"lat\":36.82,\"lon\":2.98},{\"name\":\"Bogota\",\"tz\":-5,\"lat\":4.77,\"lon\":74.1},{\"name\":\"Brasilia\",\"tz\":-3,\"lat\":15.77,\"lon\":48.02},{\"name\":\"Goteborg\",\"tz\":1,\"el\":100,\"lat\":57.7,\"lon\":-11.95},{\"name\":\"Victoria\",\"tz\":8,\"lat\":22.25,\"lon\":-114.23},{\"name\":\"Touson\",\"tz\":-7,\"lat\":32.22,\"lon\":110.97},{\"name\":\"Tunville\",\"tz\":1,\"lat\":49.4,\"lon\":-6.17},{\"name\":\"Tkuarembo\",\"tz\":-3,\"lat\":-31.7,\"lon\":55.98},{\"name\":\"Trumso\",\"tz\":1,\"lat\":69.67,\"lon\":-18.97},{\"name\":\"Johannesburg\",\"tz\":2,\"el\":1655,\"lat\":-26.3,\"lon\":-28.18},{\"name\":\"Montevideo\",\"tz\":-3,\"el\":22,\"lat\":-34.83,\"lon\":56.23},{\"name\":\"Meedan Columbia\",\"tz\":-5,\"lat\":6.23,\"lon\":75.58},{\"name\":\"Mexico City\",\"tz\":-6,\"lat\":19.45,\"lon\":98.95},{\"name\":\"New Delhi\",\"tz\":5,\"lat\":28.58,\"lon\":-77.22},{\"name\":\"Narwik\",\"tz\":1,\"lat\":68.43,\"lon\":-17.42},{\"name\":\"San Jose De Mayo\",\"tz\":-3,\"lat\":-34.35,\"lon\":56.72},{\"name\":\"San Paulo\",\"tz\":-3,\"el\":790,\"lat\":-23.6,\"lon\":46.67},{\"name\":\"Sunderland\",\"tz\":0,\"lat\":54.93,\"lon\":1.43},{\"name\":\"Salford\",\"tz\":0,\"lat\":53.5,\"lon\":2.25},{\"name\":\"San Jusinto Uruguay\",\"tz\":-3,\"lat\":-34.55,\"lon\":55.87},{\"name\":\"New Square\",\"tz\":-5,\"lat\":41.1,\"lon\":74.07},{\"name\":\"Palm Springs\",\"tz\":-8,\"el\":125,\"lat\":33.83,\"lon\":116.67},{\"name\":\"Formosa\",\"tz\":-3,\"lat\":-26.18,\"lon\":58.17},{\"name\":\"Panama\",\"tz\":-5,\"lat\":9.92,\"lon\":79.93},{\"name\":\"Perta\",\"tz\":8,\"lat\":-32,\"lon\":-115.83},{\"name\":\"Peking\",\"tz\":8,\"lat\":39.97,\"lon\":-116.45},{\"name\":\"Zandiger (India)\",\"tz\":5,\"lat\":30.73,\"lon\":-76.78},{\"name\":\"The Equator\",\"tz\":0,\"lat\":0,\"lon\":0},{\"name\":\"South Pole\",\"tz\":0,\"lat\":-90,\"lon\":0},{\"name\":\"North Pole\",\"tz\":0,\"lat\":90,\"lon\":0},{\"name\":\"Caracas, Venezuela\",\"tz\":-4,\"lat\":10.37,\"lon\":66.88},{\"name\":\"Robonimi\",\"tz\":1,\"lat\":66.48,\"lon\":-25.7},{\"name\":\"Rio De Jinero\",\"tz\":-3,\"lat\":-22.85,\"lon\":43.68},{\"name\":\"Phoenix\",\"tz\":-7,\"lat\":33.43,\"lon\":112.07},{\"name\":\"Lucerne\",\"tz\":1,\"lat\":47.05,\"lon\":-8.32},{\"name\":\"Odessa\",\"tz\":2,\"lat\":46.48,\"lon\":-30.72},{\"name\":\"Uman\",\"tz\":2,\"lat\":48.73,\"lon\":-30.23},{\"name\":\"Ifran\",\"tz\":0,\"lat\":33.53,\"lon\":5.1},{\"name\":\"Alsund Norway\",\"tz\":1,\"lat\":62.47,\"lon\":-6.18},{\"name\":\"Athens\",\"tz\":2,\"lat\":37.97,\"lon\":-23.72},{\"name\":\"Bad\",\"tz\":1,\"lat\":50.2,\"lon\":-10.08},{\"name\":\"Bucharest\",\"tz\":2,\"lat\":44.38,\"lon\":-26.4},{\"name\":\"Gomel\",\"tz\":2,\"lat\":52.38,\"lon\":-30.83},{\"name\":\"Gibraltar\",\"tz\":1,\"lat\":36.13,\"lon\":5.35},{\"name\":\"Gateside\",\"tz\":0,\"lat\":54.95,\"lon\":1.6},{\"name\":\"Vienna\",\"tz\":1,\"lat\":48.22,\"lon\":-16.37},{\"name\":\"Venice\",\"tz\":1,\"lat\":45.38,\"lon\":-12.47},{\"name\":\"Warsaw\",\"tz\":1,\"lat\":52.23,\"lon\":-21},{\"name\":\"Toulon\",\"tz\":1,\"lat\":43.15,\"lon\":-5.87},{\"name\":\"Torberey Scotland\",\"tz\":0,\"lat\":55.3,\"lon\":4.82},{\"name\":\"Lusan\",\"tz\":1,\"el\":375,\"lat\":46.53,\"lon\":-6.62},{\"name\":\"London\",\"tz\":0,\"el\":45,\"lat\":51.6,\"lon\":0.1},{\"name\":\"Luxenbourg\",\"tz\":1,\"lat\":49.67,\"lon\":-6.17},{\"name\":\"Liverpool\",\"tz\":0,\"lat\":53.42,\"lon\":2.98},{\"name\":\"Leeds\",\"tz\":0,\"lat\":53.8,\"lon\":1.57},{\"name\":\"Medisimo Italy\",\"tz\":1,\"el\":1500,\"lat\":46.43,\"lon\":-9.33},{\"name\":\"Madrid\",\"tz\":1,\"lat\":40.4,\"lon\":3.7},{\"name\":\"Monterrey, Mexico\",\"tz\":1,\"lat\":46.4,\"lon\":-6.87},{\"name\":\"Moscow\",\"tz\":3,\"el\":154,\"lat\":55.75,\"lon\":-37.62},{\"name\":\"Milano\",\"tz\":1,\"el\":122,\"lat\":45.45,\"lon\":-9.18},{\"name\":\"Minsk\",\"tz\":2,\"lat\":53.87,\"lon\":-27.82},{\"name\":\"Malaga\",\"tz\":1,\"lat\":36.7,\"lon\":4.42},{\"name\":\"Manchester\",\"tz\":0,\"lat\":53.5,\"lon\":2.23},{\"name\":\"Meknes\",\"tz\":0,\"lat\":33.9,\"lon\":5.57},{\"name\":\"Marseille\",\"tz\":1,\"lat\":43.3,\"lon\":-5.32},{\"name\":\"Marrakech\",\"tz\":0,\"lat\":31.6,\"lon\":7.98},{\"name\":\"New Castle\",\"tz\":0,\"lat\":54.95,\"lon\":1.62},{\"name\":\"Nice France\",\"tz\":1,\"lat\":43.7,\"lon\":-7.18},{\"name\":\"Fes\",\"tz\":0,\"lat\":34.03,\"lon\":4.98},{\"name\":\"Prague\",\"tz\":1,\"el\":180,\"lat\":50.08,\"lon\":-14.42},{\"name\":\"Frankfurt\",\"tz\":1,\"lat\":50.12,\"lon\":-8.65},{\"name\":\"Frankfurt On Maine\",\"tz\":1,\"lat\":50.1,\"lon\":-8.68},{\"name\":\"Zurich\",\"tz\":1,\"el\":410,\"lat\":47.37,\"lon\":-8.53},{\"name\":\"Copenhagen\",\"tz\":1,\"lat\":55.77,\"lon\":-12.33},{\"name\":\"Casablanca\",\"tz\":0,\"lat\":33.58,\"lon\":7.58},{\"name\":\"Kiev\",\"tz\":2,\"lat\":50.43,\"lon\":-30.52},{\"name\":\"Colon\",\"tz\":1,\"el\":46,\"lat\":50.9,\"lon\":-6.93},{\"name\":\"Robet\",\"tz\":0,\"lat\":34.02,\"lon\":6.8},{\"name\":\"Rodes\",\"tz\":2,\"lat\":36.4,\"lon\":-28.18},{\"name\":\"Rome\",\"tz\":1,\"lat\":41.9,\"lon\":-12.5},{\"name\":\"Shpolgen\",\"tz\":1,\"lat\":46.55,\"lon\":-9.32},{\"name\":\"Baku\",\"tz\":2,\"lat\":40.4,\"lon\":-49.82},{\"name\":\"Tarvisio\",\"tz\":1,\"lat\":46.5,\"lon\":-13.58},{\"name\":\"windischgarsten\",\"tz\":1,\"lat\":47.72,\"lon\":-14.32},{\"name\":\"Nesslau\",\"tz\":1,\"lat\":47.2,\"lon\":-9.2},{\"name\":\"Deerfield Beach\",\"tz\":-5,\"lat\":26.32,\"lon\":80.08},{\"name\":\"Hartford CT\",\"tz\":-5,\"lat\":41.75,\"lon\":72.7},{\"name\":\"Boro Park, Brooklyn NY\",\"tz\":-5,\"lat\":40.63,\"lon\":74},{\"name\":\"Brooklyn NY\",\"tz\":-5,\"lat\":40.63,\"lon\":73.95},{\"name\":\"Denver\",\"tz\":-7,\"el\":1601,\"lat\":39.75,\"lon\":104.93},{\"name\":\"Houston\",\"tz\":-6,\"el\":29,\"lat\":29.83,\"lon\":95.35},{\"name\":\"Hollywood\",\"tz\":-5,\"el\":8,\"lat\":26.1,\"lon\":80.2},{\"name\":\"Washington DC\",\"tz\":-5,\"lat\":38.9,\"lon\":77.03},{\"name\":\"Los Angeles\",\"tz\":-8,\"lat\":34.05,\"lon\":118.23},{\"name\":\"Lakewood NJ\",\"tz\":-5,\"lat\":40.1,\"lon\":74.23},{\"name\":\"Monticello NY\",\"tz\":-5,\"lat\":41.65,\"lon\":74.73},{\"name\":\"Monsey NY\",\"tz\":-5,\"lat\":41.1,\"lon\":74.07},{\"name\":\"Miami\",\"tz\":-5,\"el\":2,\"lat\":25.83,\"lon\":80.27},{\"name\":\"Miami Beach\",\"tz\":-5,\"el\":3,\"lat\":25.78,\"lon\":80.28},{\"name\":\"Milwaukee\",\"tz\":-6,\"lat\":43.03,\"lon\":87.92},{\"name\":\"Miniappolis\",\"tz\":-6,\"el\":253,\"lat\":44.88,\"lon\":93.22},{\"name\":\"Memphis TN\",\"tz\":-6,\"lat\":35.13,\"lon\":90.03},{\"name\":\"New Orleans\",\"tz\":-6,\"el\":1,\"lat\":30,\"lon\":90.12},{\"name\":\"New Square NY\",\"tz\":-5,\"lat\":41.1,\"lon\":74.07},{\"name\":\"San Juan\",\"tz\":-8,\"lat\":37.33,\"lon\":121.88},{\"name\":\"San Diego\",\"tz\":-8,\"lat\":32.72,\"lon\":117.13},{\"name\":\"Saint Louis\",\"tz\":-6,\"lat\":38.65,\"lon\":90.32},{\"name\":\"Pittsburgh\",\"tz\":-5,\"lat\":40.4,\"lon\":80.03},{\"name\":\"Philadelphia\",\"tz\":-5,\"lat\":39.93,\"lon\":75.17},{\"name\":\"Providence RI\",\"tz\":-5,\"lat\":41.82,\"lon\":71.4},{\"name\":\"Kansas City\",\"tz\":-6,\"el\":225,\"lat\":39.1,\"lon\":94.6},{\"name\":\"Kiryas Joel NY\",\"tz\":-5,\"lat\":41.33,\"lon\":74.17},{\"name\":\"Cali\",\"tz\":-5,\"lat\":3.45,\"lon\":76.52},{\"name\":\"Medellin\",\"tz\":-5,\"lat\":6.25,\"lon\":75.57},{\"name\":\"Honolulu\",\"tz\":-10,\"lat\":21.32,\"lon\":157.83},{\"name\":\"Santiago de Chile\",\"tz\":-4,\"lat\":-33.45,\"lon\":70.67},{\"name\":\"Nairobi\",\"tz\":3,\"lat\":-1.28,\"lon\":-36.82},{\"name\":\"Taipei\",\"tz\":8,\"lat\":25.05,\"lon\":-121.5},{\"name\":\"Rangun (GMT+6)\",\"tz\":6,\"lat\":16.78,\"lon\":-96.17},{\"name\":\"Rangun (GMT+7)\",\"tz\":7,\"lat\":16.78,\"lon\":-96.17},{\"name\":\"Rio de Janeiro\",\"tz\":-3,\"lat\":-22.9,\"lon\":43.25},{\"name\":\"Kapstadt (Capetown)\",\"tz\":2,\"lat\":-33.9,\"lon\":-18.37},{\"name\":\"San Juan (P.R.)\",\"tz\":-4,\"lat\":18.47,\"lon\":66.1},{\"name\":\"Elizabeth, N.J, US\",\"tz\":-5,\"lat\":40.67,\"lon\":74.18},{\"name\":\"Aach\",\"tz\":1,\"lat\":47.83,\"lon\":-8.85},{\"name\":\"Adelsheim\",\"tz\":1,\"lat\":49.4,\"lon\":-9.38},{\"name\":\"Altlandsberg\",\"tz\":1,\"lat\":52.55,\"lon\":-13.72},{\"name\":\"Angermünde\",\"tz\":1,\"lat\":53.02,\"lon\":-14},{\"name\":\"Anklam\",\"tz\":1,\"lat\":53.85,\"lon\":-13.68},{\"name\":\"Annaberg\",\"tz\":1,\"lat\":57.52,\"lon\":-13.43},{\"name\":\"Ansbach\",\"tz\":1,\"lat\":49.28,\"lon\":-10.57},{\"name\":\"Apolda\",\"tz\":1,\"lat\":51.02,\"lon\":-11.52},{\"name\":\"Arnstadt\",\"tz\":1,\"lat\":50.83,\"lon\":-10.95},{\"name\":\"Aschersleben\",\"tz\":1,\"lat\":51.75,\"lon\":-11.45},{\"name\":\"Bad Berka\",\"tz\":1,\"lat\":50.9,\"lon\":-11.28},{\"name\":\"Bad Cannstatt\",\"tz\":1,\"lat\":48.8,\"lon\":-9.18},{\"name\":\"Bad Freienwalde\",\"tz\":1,\"lat\":52.78,\"lon\":-14.02},{\"name\":\"Bad Gottleuba\",\"tz\":1,\"lat\":50.85,\"lon\":-13.93},{\"name\":\"Bad Krozingen\",\"tz\":1,\"lat\":47.92,\"lon\":-7.72},{\"name\":\"Bad Mergenheim\",\"tz\":1,\"lat\":49.5,\"lon\":-9.77},{\"name\":\"Bad Mingolsheim\",\"tz\":1,\"lat\":49.23,\"lon\":-8.65},{\"name\":\"Bad Rappenau\",\"tz\":1,\"lat\":49.32,\"lon\":-9.1},{\"name\":\"Bad Salzungen\",\"tz\":1,\"lat\":50.8,\"lon\":-10.22},{\"name\":\"Bad Wilznack\",\"tz\":1,\"lat\":52.95,\"lon\":-11.95},{\"name\":\"Bad Wimpfen\",\"tz\":1,\"lat\":49.23,\"lon\":-9.15},{\"name\":\"Baiersdorf\",\"tz\":1,\"lat\":49.65,\"lon\":-11.02},{\"name\":\"Ballenstedt\",\"tz\":1,\"lat\":51.72,\"lon\":-11.23},{\"name\":\"Barby\",\"tz\":1,\"lat\":51.97,\"lon\":-11.88},{\"name\":\"Bautzen\",\"tz\":1,\"lat\":51.18,\"lon\":-14.43},{\"name\":\"Beelitz\",\"tz\":1,\"lat\":52.23,\"lon\":-12.97},{\"name\":\"Beeskow\",\"tz\":1,\"lat\":52.17,\"lon\":-14.23},{\"name\":\"Bernau\",\"tz\":1,\"lat\":47.8,\"lon\":-12.37},{\"name\":\"Bernburg\",\"tz\":1,\"lat\":51.8,\"lon\":-11.73},{\"name\":\"Biesenthal\",\"tz\":1,\"lat\":52.77,\"lon\":-13.62},{\"name\":\"Bleicherode\",\"tz\":1,\"lat\":51.43,\"lon\":-10.57},{\"name\":\"Boizenburg\",\"tz\":1,\"lat\":53.37,\"lon\":-10.72},{\"name\":\"Borna\",\"tz\":1,\"lat\":51.32,\"lon\":-13.18},{\"name\":\"Breisach\",\"tz\":1,\"lat\":48.02,\"lon\":-7.67},{\"name\":\"Brüel\",\"tz\":1,\"lat\":53.73,\"lon\":-11.72},{\"name\":\"Burg\",\"tz\":1,\"lat\":52.27,\"lon\":-11.85},{\"name\":\"Bützow\",\"tz\":1,\"lat\":53.83,\"lon\":-11.98},{\"name\":\"Calbe\",\"tz\":1,\"lat\":51.9,\"lon\":-11.77},{\"name\":\"Calvörde\",\"tz\":1,\"lat\":52.38,\"lon\":-11.28},{\"name\":\"Caputh\",\"tz\":1,\"lat\":52.35,\"lon\":-13},{\"name\":\"Coesfeld\",\"tz\":1,\"lat\":51.93,\"lon\":-7.17},{\"name\":\"Coswig\",\"tz\":1,\"lat\":51.88,\"lon\":-12.43},{\"name\":\"Crivitz\",\"tz\":1,\"lat\":53.58,\"lon\":-11.63},{\"name\":\"Dargun\",\"tz\":1,\"lat\":53.9,\"lon\":-12.85},{\"name\":\"Deggendorf\",\"tz\":1,\"lat\":48.85,\"lon\":-12.98},{\"name\":\"Delitzsch\",\"tz\":1,\"lat\":51.52,\"lon\":-12.33},{\"name\":\"Aachen\",\"tz\":1,\"lat\":50.78,\"lon\":-6.08},{\"name\":\"Altensteig\",\"tz\":1,\"lat\":48.58,\"lon\":-8.6},{\"name\":\"Amberg\",\"tz\":1,\"lat\":49.45,\"lon\":-11.87},{\"name\":\"Augsburg\",\"tz\":1,\"lat\":48.38,\"lon\":-10.88},{\"name\":\"Aurich\",\"tz\":1,\"lat\":53.47,\"lon\":-7.48},{\"name\":\"Bad Kissingen\",\"tz\":1,\"lat\":50.2,\"lon\":-10.05},{\"name\":\"Bad Kreuznach\",\"tz\":1,\"lat\":49.87,\"lon\":-7.85},{\"name\":\"Bad Nauheim\",\"tz\":1,\"lat\":50.37,\"lon\":-8.73},{\"name\":\"Baden-Baden\",\"tz\":1,\"lat\":48.77,\"lon\":-8.23},{\"name\":\"Bamberg\",\"tz\":1,\"lat\":49.88,\"lon\":-10.88},{\"name\":\"Bayreuth\",\"tz\":1,\"lat\":49.95,\"lon\":-11.58},{\"name\":\"Berlin\",\"tz\":1,\"lat\":52.52,\"lon\":-13.38},{\"name\":\"Bielefeld\",\"tz\":1,\"lat\":52.02,\"lon\":-8.52},{\"name\":\"Bonn\",\"tz\":1,\"lat\":50.73,\"lon\":-7.1},{\"name\":\"Brandenburg\",\"tz\":1,\"lat\":52.4,\"lon\":-12.53},{\"name\":\"Braunschweig\",\"tz\":1,\"lat\":52.27,\"lon\":-10.52},{\"name\":\"Bremen\",\"tz\":1,\"lat\":53.07,\"lon\":-8.82},{\"name\":\"Bremerhaven\",\"tz\":1,\"lat\":53.55,\"lon\":-8.57},{\"name\":\"Calw\",\"tz\":1,\"lat\":48.72,\"lon\":-8.73},{\"name\":\"Celle\",\"tz\":1,\"lat\":52.62,\"lon\":-10.08},{\"name\":\"Chemnitz\",\"tz\":1,\"lat\":50.83,\"lon\":-12.92},{\"name\":\"Cottbus\",\"tz\":1,\"lat\":51.75,\"lon\":-14.32},{\"name\":\"Dachau\",\"tz\":1,\"lat\":48.25,\"lon\":-11.45},{\"name\":\"Darmstadt\",\"tz\":1,\"lat\":49.88,\"lon\":-8.67},{\"name\":\"Dessau\",\"tz\":1,\"lat\":51.83,\"lon\":-12.23},{\"name\":\"Dortmund\",\"tz\":1,\"lat\":51.52,\"lon\":-7.47},{\"name\":\"Dresden\",\"tz\":1,\"lat\":51.05,\"lon\":-13.73},{\"name\":\"Duisburg\",\"tz\":1,\"lat\":51.42,\"lon\":-6.77},{\"name\":\"Düsseldorf\",\"tz\":1,\"lat\":51.2,\"lon\":-6.78},{\"name\":\"Emmendingen\",\"tz\":1,\"lat\":48.12,\"lon\":-7.83},{\"name\":\"Erfurt\",\"tz\":1,\"lat\":50.97,\"lon\":-11.02},{\"name\":\"Essen/Ruhr\",\"tz\":1,\"lat\":51.47,\"lon\":-7.02},{\"name\":\"Frankfurt/Main\",\"tz\":1,\"lat\":50.12,\"lon\":-8.67},{\"name\":\"Frankfurt/Oder\",\"tz\":1,\"lat\":52.33,\"lon\":-14.55},{\"name\":\"Freiburg i. Br.\",\"tz\":1,\"lat\":47.98,\"lon\":-7.85},{\"name\":\"Fürth\",\"tz\":1,\"lat\":49.47,\"lon\":-10.98},{\"name\":\"Fulda\",\"tz\":1,\"lat\":50.55,\"lon\":-9.68},{\"name\":\"Gelsenkirchen\",\"tz\":1,\"lat\":51.52,\"lon\":-7.12},{\"name\":\"Gießen\",\"tz\":1,\"lat\":50.58,\"lon\":-8.67},{\"name\":\"Göttingen\",\"tz\":1,\"lat\":51.53,\"lon\":-9.92},{\"name\":\"Grabow\",\"tz\":1,\"lat\":53.27,\"lon\":-11.57},{\"name\":\"Hagen (Westf)\",\"tz\":1,\"lat\":51.37,\"lon\":-7.47},{\"name\":\"Halle/Saale\",\"tz\":1,\"lat\":51.48,\"lon\":-11.97},{\"name\":\"Hamburg\",\"tz\":1,\"lat\":53.55,\"lon\":-9.98},{\"name\":\"Hameln\",\"tz\":1,\"lat\":52.1,\"lon\":-9.35},{\"name\":\"Hannover\",\"tz\":1,\"lat\":52.4,\"lon\":-9.73},{\"name\":\"Havelberg\",\"tz\":1,\"lat\":52.83,\"lon\":-12.07},{\"name\":\"Heidelberg\",\"tz\":1,\"lat\":49.42,\"lon\":-8.72},{\"name\":\"Herford\",\"tz\":1,\"lat\":52.1,\"lon\":-8.67},{\"name\":\"Hessisch Oldendorf\",\"tz\":1,\"lat\":52.17,\"lon\":-9.25},{\"name\":\"Hildesheim\",\"tz\":1,\"lat\":52.15,\"lon\":-9.95},{\"name\":\"Hof\",\"tz\":1,\"lat\":50.3,\"lon\":-11.92},{\"name\":\"Idar-Oberstein\",\"tz\":1,\"lat\":49.7,\"lon\":-7.32},{\"name\":\"Kaiserslautern\",\"tz\":1,\"lat\":49.43,\"lon\":-7.77},{\"name\":\"Karlsruhe\",\"tz\":1,\"lat\":49.05,\"lon\":-8.4},{\"name\":\"Kassel\",\"tz\":1,\"lat\":51.32,\"lon\":-9.47},{\"name\":\"Kiel\",\"tz\":1,\"lat\":54.33,\"lon\":-10.13},{\"name\":\"Kleinmachnow\",\"tz\":1,\"lat\":52.4,\"lon\":-13.25},{\"name\":\"Koblenz\",\"tz\":1,\"lat\":50.35,\"lon\":-7.58},{\"name\":\"Köln\",\"tz\":1,\"lat\":50.93,\"lon\":-6.98},{\"name\":\"Krefeld\",\"tz\":1,\"lat\":51.33,\"lon\":-6.57},{\"name\":\"Leipzig\",\"tz\":1,\"lat\":51.32,\"lon\":-12.33},{\"name\":\"Lörrach\",\"tz\":1,\"lat\":47.62,\"lon\":-7.67},{\"name\":\"Lübeck\",\"tz\":1,\"lat\":53.87,\"lon\":-10.67},{\"name\":\"Ludwigshafen\",\"tz\":1,\"lat\":49.48,\"lon\":-8.43},{\"name\":\"Ludwigslust\",\"tz\":1,\"lat\":53.32,\"lon\":-11.5},{\"name\":\"Magdeburg\",\"tz\":1,\"lat\":52.12,\"lon\":-11.63},{\"name\":\"Mainz\",\"tz\":1,\"lat\":50.02,\"lon\":-8.27},{\"name\":\"Mannheim\",\"tz\":1,\"lat\":49.48,\"lon\":-8.47},{\"name\":\"Marburg\",\"tz\":1,\"lat\":50.82,\"lon\":-8.77},{\"name\":\"Minden\",\"tz\":1,\"lat\":52.28,\"lon\":-8.92},{\"name\":\"Mönchengladbach\",\"tz\":1,\"lat\":51.2,\"lon\":-6.47},{\"name\":\"München\",\"tz\":1,\"lat\":48.13,\"lon\":-11.57},{\"name\":\"Nagold\",\"tz\":1,\"lat\":48.55,\"lon\":-8.72},{\"name\":\"Neumünster\",\"tz\":1,\"lat\":54.07,\"lon\":-9.98},{\"name\":\"Neuruppin\",\"tz\":1,\"lat\":52.92,\"lon\":-12.8},{\"name\":\"Neustadt/Weinstraße\",\"tz\":1,\"lat\":49.35,\"lon\":-8.13},{\"name\":\"Neustrelitz\",\"tz\":1,\"lat\":53.35,\"lon\":-13.07},{\"name\":\"Nürnberg\",\"tz\":1,\"lat\":49.45,\"lon\":-11.07},{\"name\":\"Offenbach\",\"tz\":1,\"lat\":50.13,\"lon\":-8.78},{\"name\":\"Oldenburg\",\"tz\":1,\"lat\":53.13,\"lon\":-8.22},{\"name\":\"Oldenburg in Holstein\",\"tz\":1,\"lat\":54.28,\"lon\":-10.87},{\"name\":\"Osnabrück\",\"tz\":1,\"lat\":52.27,\"lon\":-8.03},{\"name\":\"Paderborn\",\"tz\":1,\"lat\":51.72,\"lon\":-8.73},{\"name\":\"Perleberg\",\"tz\":1,\"lat\":53.07,\"lon\":-11.85},{\"name\":\"Pforzheim\",\"tz\":1,\"lat\":48.9,\"lon\":-8.7},{\"name\":\"Potsdam\",\"tz\":1,\"lat\":52.4,\"lon\":-13.07},{\"name\":\"Pritzwalk\",\"tz\":1,\"lat\":53.15,\"lon\":-12.17},{\"name\":\"Rathenow\",\"tz\":1,\"lat\":52.6,\"lon\":-12.33},{\"name\":\"Recklinghausen\",\"tz\":1,\"lat\":51.6,\"lon\":-7.22},{\"name\":\"Regensburg\",\"tz\":1,\"lat\":49.02,\"lon\":-12.1},{\"name\":\"Rinteln\",\"tz\":1,\"lat\":52.18,\"lon\":-9.05},{\"name\":\"Rostock\",\"tz\":1,\"lat\":54.08,\"lon\":-12.12},{\"name\":\"Saarbrücken\",\"tz\":1,\"lat\":49.23,\"lon\":-6.98},{\"name\":\"Salzgitter\",\"tz\":1,\"lat\":52.17,\"lon\":-10.42},{\"name\":\"Schwerin\",\"tz\":1,\"lat\":53.63,\"lon\":-11.42},{\"name\":\"Sobernheim\",\"tz\":1,\"lat\":49.78,\"lon\":-7.63},{\"name\":\"Stendal\",\"tz\":1,\"lat\":52.6,\"lon\":-11.85},{\"name\":\"Straubing\",\"tz\":1,\"lat\":48.88,\"lon\":-12.57},{\"name\":\"Strausberg\",\"tz\":1,\"lat\":52.58,\"lon\":-13.88},{\"name\":\"Stuttgart\",\"tz\":1,\"lat\":48.77,\"lon\":-9.18},{\"name\":\"Trier\",\"tz\":1,\"lat\":49.75,\"lon\":-6.63},{\"name\":\"Tübingen\",\"tz\":1,\"lat\":48.52,\"lon\":-9.03},{\"name\":\"Weiden in der Oberpfalz\",\"tz\":1,\"lat\":49.68,\"lon\":-12.17},{\"name\":\"Wiesbaden\",\"tz\":1,\"lat\":50.08,\"lon\":-8.23},{\"name\":\"Wismar\",\"tz\":1,\"lat\":53.88,\"lon\":-11.47},{\"name\":\"Wittenberg\",\"tz\":1,\"lat\":51.87,\"lon\":-12.65},{\"name\":\"Wittenberge\",\"tz\":1,\"lat\":53,\"lon\":-11.73},{\"name\":\"Wittstock\",\"tz\":1,\"lat\":53.17,\"lon\":-12.48},{\"name\":\"Wörlitz\",\"tz\":1,\"lat\":51.83,\"lon\":-12.42},{\"name\":\"Wuppertal\",\"tz\":1,\"lat\":51.27,\"lon\":-7.18},{\"name\":\"Würzburg\",\"tz\":1,\"lat\":49.8,\"lon\":-9.93},{\"name\":\"Basel\",\"tz\":1,\"lat\":47.63,\"lon\":-7.67},{\"name\":\"Bern\",\"tz\":1,\"lat\":46.95,\"lon\":-7.43},{\"name\":\"Bremgarten\",\"tz\":1,\"lat\":47.35,\"lon\":-8.35},{\"name\":\"Geneve\",\"tz\":1,\"lat\":46.2,\"lon\":-6.15},{\"name\":\"Münsingen\",\"tz\":1,\"lat\":46.88,\"lon\":-7.57},{\"name\":\"Sankt Gallen\",\"tz\":1,\"lat\":47.42,\"lon\":-9.38},{\"name\":\"Vevey\",\"tz\":1,\"lat\":46.47,\"lon\":-6.85},{\"name\":\"Winterthur\",\"tz\":1,\"lat\":47.5,\"lon\":-8.72},{\"name\":\"Zug\",\"tz\":1,\"lat\":47.17,\"lon\":-8.52},{\"name\":\"Zürich\",\"tz\":1,\"lat\":47.38,\"lon\":-8.53},{\"name\":\"Graz\",\"tz\":1,\"lat\":47.08,\"lon\":-15.45},{\"name\":\"Innsbruck\",\"tz\":1,\"lat\":47.27,\"lon\":-11.4},{\"name\":\"Linz\",\"tz\":1,\"lat\":48.3,\"lon\":-14.3},{\"name\":\"Salzburg\",\"tz\":1,\"lat\":47.8,\"lon\":-13.03},{\"name\":\"Wien\",\"tz\":1,\"lat\":48.22,\"lon\":-16.33},{\"name\":\"Antwerpen\",\"tz\":1,\"lat\":51.22,\"lon\":-4.42},{\"name\":\"Arlon\",\"tz\":1,\"lat\":49.68,\"lon\":-5.82},{\"name\":\"Brüssel\",\"tz\":1,\"lat\":50.83,\"lon\":-4.33},{\"name\":\"Charleroi\",\"tz\":1,\"lat\":50.42,\"lon\":-4.43},{\"name\":\"Gent\",\"tz\":1,\"lat\":51.05,\"lon\":-3.72},{\"name\":\"Knokke\",\"tz\":1,\"lat\":51.35,\"lon\":-3.28},{\"name\":\"Liége\",\"tz\":1,\"lat\":50.63,\"lon\":-5.57},{\"name\":\"Mons\",\"tz\":1,\"lat\":50.45,\"lon\":-3.93},{\"name\":\"Ostende\",\"tz\":1,\"lat\":51.22,\"lon\":-2.9},{\"name\":\"Amersfoort\",\"tz\":1,\"lat\":52.15,\"lon\":-5.4},{\"name\":\"Amsterdam\",\"tz\":1,\"lat\":52.37,\"lon\":-4.9},{\"name\":\"Arnheim\",\"tz\":1,\"lat\":52.02,\"lon\":-5.88},{\"name\":\"Bussum\",\"tz\":1,\"lat\":52.27,\"lon\":-5.15},{\"name\":\"Den Haag\",\"tz\":1,\"lat\":52.1,\"lon\":-4.3},{\"name\":\"Eindhoven\",\"tz\":1,\"lat\":51.43,\"lon\":-5.47},{\"name\":\"Enschede\",\"tz\":1,\"lat\":52.2,\"lon\":-6.88},{\"name\":\"Groningen\",\"tz\":1,\"lat\":53.22,\"lon\":-6.55},{\"name\":\"Hilversum\",\"tz\":1,\"lat\":52.23,\"lon\":-5.15},{\"name\":\"Leiden\",\"tz\":1,\"lat\":52.15,\"lon\":-4.5},{\"name\":\"Maastricht\",\"tz\":1,\"lat\":50.87,\"lon\":-5.72},{\"name\":\"Rotterdam\",\"tz\":1,\"lat\":51.92,\"lon\":-4.47},{\"name\":\"Tilburg\",\"tz\":1,\"lat\":51.57,\"lon\":-5.08},{\"name\":\"Utrecht\",\"tz\":1,\"lat\":52.08,\"lon\":-5.13},{\"name\":\"Zwolle\",\"tz\":1,\"lat\":52.5,\"lon\":-6.08},{\"name\":\"Crossen\",\"tz\":1,\"lat\":50.75,\"lon\":-12.48},{\"name\":\"Krakau\",\"tz\":1,\"lat\":50.05,\"lon\":-19.95},{\"name\":\"Lodz\",\"tz\":1,\"lat\":51.77,\"lon\":-19.22},{\"name\":\"Tarnów\",\"tz\":1,\"lat\":52.78,\"lon\":-14.97},{\"name\":\"Warschau\",\"tz\":1,\"lat\":52.25,\"lon\":-21},{\"name\":\"Wroczlaw (Breslau)\",\"tz\":1,\"lat\":51.1,\"lon\":-17},{\"name\":\"Birobidzan\",\"tz\":9,\"lat\":48.8,\"lon\":-132.95},{\"name\":\"Irkutsk\",\"tz\":8,\"lat\":52.27,\"lon\":-104.33},{\"name\":\"Kiew\",\"tz\":2,\"lat\":50.43,\"lon\":-30.52},{\"name\":\"Moskau\",\"tz\":3,\"lat\":55.75,\"lon\":-37.58},{\"name\":\"St. Petersburg\",\"tz\":3,\"lat\":59.92,\"lon\":-30.25},{\"name\":\"Taschkent\",\"tz\":6,\"lat\":41.33,\"lon\":-69.3},{\"name\":\"Tblisi\",\"tz\":3,\"lat\":41.72,\"lon\":-44.82},{\"name\":\"Montreal, Fr.\",\"tz\":1,\"lat\":47.53,\"lon\":-4.02},{\"name\":\"Lausanne\",\"tz\":1,\"lat\":46.52,\"lon\":-6.63},{\"name\":\"Nice\",\"tz\":1,\"lat\":43.7,\"lon\":-7.25},{\"name\":\"Paris\",\"tz\":1,\"lat\":48.87,\"lon\":-2.33},{\"name\":\"Birmingham\",\"tz\":0,\"lat\":52.5,\"lon\":1.83},{\"name\":\"Bradford\",\"tz\":0,\"lat\":53.8,\"lon\":1.75},{\"name\":\"Bristol\",\"tz\":0,\"lat\":51.45,\"lon\":2.58},{\"name\":\"Edinburgh\",\"tz\":0,\"lat\":55.95,\"lon\":3.22},{\"name\":\"Gateshead\",\"tz\":0,\"lat\":54.97,\"lon\":1.62},{\"name\":\"Glasgow\",\"tz\":0,\"lat\":55.88,\"lon\":4.25},{\"name\":\"Sheffield\",\"tz\":0,\"lat\":53.38,\"lon\":1.5},{\"name\":\"Belfast\",\"tz\":0,\"lat\":54.58,\"lon\":5.92},{\"name\":\"Dublin\",\"tz\":0,\"lat\":53.33,\"lon\":6.25},{\"name\":\"Tralee\",\"tz\":0,\"lat\":52.27,\"lon\":9.7},{\"name\":\"Atlanta (Ga., US)\",\"tz\":-5,\"lat\":33.75,\"lon\":84.38},{\"name\":\"Baltimore, MD\",\"tz\":-5,\"lat\":39.28,\"lon\":76.62},{\"name\":\"Bentonville, Arkansas\",\"tz\":-6,\"lat\":36.37,\"lon\":94.22},{\"name\":\"Boston, MA\",\"tz\":-5,\"lat\":42.35,\"lon\":71.07},{\"name\":\"Buffalo\",\"tz\":-5,\"lat\":42.9,\"lon\":78.88},{\"name\":\"Burlington (VT, US)\",\"tz\":-5,\"lat\":44.48,\"lon\":73.22},{\"name\":\"Canton, Ohio\",\"tz\":-5,\"lat\":40.78,\"lon\":81.37},{\"name\":\"Charleston (S.C., US)\",\"tz\":-5,\"lat\":32.78,\"lon\":79.93},{\"name\":\"Charlotte (N.C., US)\",\"tz\":-5,\"lat\":35.23,\"lon\":80.83},{\"name\":\"Chicago\",\"tz\":-6,\"lat\":41.88,\"lon\":87.63},{\"name\":\"Cincinnati, OH\",\"tz\":-5,\"lat\":39.1,\"lon\":84.63},{\"name\":\"Cleveland (Ohio, US)\",\"tz\":-5,\"lat\":41.5,\"lon\":81.68},{\"name\":\"Columbus, OH\",\"tz\":-5,\"lat\":39.95,\"lon\":83},{\"name\":\"Dallas, TX\",\"tz\":-6,\"lat\":32.78,\"lon\":96.8},{\"name\":\"Denver (Colo., US)\",\"tz\":-7,\"lat\":39.72,\"lon\":105.02},{\"name\":\"Detroit, MI\",\"tz\":-5,\"lat\":42.33,\"lon\":83.05},{\"name\":\"Essexville, MI\",\"tz\":-5,\"lat\":43.62,\"lon\":83.83},{\"name\":\"Fairbanks, AK\",\"tz\":-10,\"lat\":64.85,\"lon\":147.72},{\"name\":\"Flagstaff, Arizona\",\"tz\":-7,\"lat\":35.18,\"lon\":111.65},{\"name\":\"Hartford (Conn., US)\",\"tz\":-5,\"lat\":41.77,\"lon\":72.68},{\"name\":\"Houston, TX\",\"tz\":-6,\"lat\":29.77,\"lon\":95.37},{\"name\":\"Indianapolis, Indiana\",\"tz\":-6,\"lat\":-19.03,\"lon\":47.92},{\"name\":\"Kansas City (Kans., US)\",\"tz\":-6,\"lat\":39.12,\"lon\":94.65},{\"name\":\"Little Rock\",\"tz\":-6,\"lat\":34.73,\"lon\":92.25},{\"name\":\"Los Angeles (LA)\",\"tz\":-8,\"lat\":34.05,\"lon\":118.25},{\"name\":\"Louisville (Ky., US)\",\"tz\":-5,\"lat\":38.25,\"lon\":85.75},{\"name\":\"Madison (Wis., US)\",\"tz\":-6,\"lat\":43.08,\"lon\":89.37},{\"name\":\"Memphis (Tenn., US)\",\"tz\":-6,\"lat\":35.13,\"lon\":90.05},{\"name\":\"Miami, FL\",\"tz\":-5,\"lat\":25.77,\"lon\":80.2},{\"name\":\"Miami Beach, FL\",\"tz\":-5,\"lat\":25.78,\"lon\":80.13},{\"name\":\"Milwaukee (Wis., US)\",\"tz\":-6,\"lat\":43.03,\"lon\":87.92},{\"name\":\"Minneapolis, Minnesota\",\"tz\":-6,\"lat\":44.98,\"lon\":93.22},{\"name\":\"Mobile\",\"tz\":-6,\"lat\":30.7,\"lon\":88.08},{\"name\":\"Monticello\",\"tz\":-5,\"lat\":41.65,\"lon\":74.7},{\"name\":\"Naples (Fla., US)\",\"tz\":-5,\"lat\":26.13,\"lon\":81.8},{\"name\":\"Nashville (Tenn., US)\",\"tz\":-6,\"lat\":36.15,\"lon\":86.8},{\"name\":\"New Brunswick\",\"tz\":-5,\"lat\":40.48,\"lon\":74.45},{\"name\":\"New Haven (Conn., US)\",\"tz\":-5,\"lat\":41.3,\"lon\":72.93},{\"name\":\"New Orleans, Louisiana\",\"tz\":-6,\"lat\":29.97,\"lon\":90.12},{\"name\":\"New York, NY\",\"tz\":-5,\"lat\":40.72,\"lon\":74.02},{\"name\":\"New York, Brooklyn\",\"tz\":-5,\"lat\":40.7,\"lon\":74},{\"name\":\"Newark (N.J., US)\",\"tz\":-5,\"lat\":40.73,\"lon\":74.15},{\"name\":\"Newport (R.I., US)\",\"tz\":-5,\"lat\":41.22,\"lon\":71.3},{\"name\":\"Omaha, Nebraska\",\"tz\":-6,\"lat\":41.27,\"lon\":95.95},{\"name\":\"Orlando, FL\",\"tz\":-5,\"lat\":28.53,\"lon\":81.38},{\"name\":\"Philadelphia, Pennsylvania\",\"tz\":-5,\"lat\":39.95,\"lon\":75.1},{\"name\":\"Phoenix, Arizona\",\"tz\":-7,\"lat\":33.45,\"lon\":112.08},{\"name\":\"Pittsburgh, Pennsylvania\",\"tz\":-5,\"lat\":40.43,\"lon\":80},{\"name\":\"Portland (Maine, US)\",\"tz\":-5,\"lat\":43.65,\"lon\":70.28},{\"name\":\"Portland (Oreg, US)\",\"tz\":-8,\"lat\":45.55,\"lon\":112.6},{\"name\":\"Providence, RI\",\"tz\":-5,\"lat\":41.83,\"lon\":71.42},{\"name\":\"Salt Lake City, Utah\",\"tz\":-7,\"lat\":40.77,\"lon\":111.88},{\"name\":\"San Antonio, TX\",\"tz\":-6,\"lat\":29.47,\"lon\":98.52},{\"name\":\"San Francisco\",\"tz\":-8,\"lat\":37.78,\"lon\":122.4},{\"name\":\"Santa Fe (N.Mex., US)\",\"tz\":-7,\"lat\":35.7,\"lon\":106.95},{\"name\":\"Seattle, WA\",\"tz\":-8,\"lat\":47.6,\"lon\":122.33},{\"name\":\"Silver Spring\",\"tz\":-5,\"lat\":39.03,\"lon\":77.05},{\"name\":\"Springfield (Mass., US)\",\"tz\":-5,\"lat\":42.12,\"lon\":72.6},{\"name\":\"Stamford, CA\",\"tz\":-5,\"lat\":41.05,\"lon\":73.55},{\"name\":\"St. Louis\",\"tz\":-6,\"lat\":38.63,\"lon\":90.18},{\"name\":\"Tampa, FL\",\"tz\":-5,\"lat\":27.95,\"lon\":82.45},{\"name\":\"Topeka (KS, US)\",\"tz\":-6,\"lat\":39.05,\"lon\":95.68},{\"name\":\"Tucson\",\"tz\":-7,\"lat\":32.22,\"lon\":110.97},{\"name\":\"Washington, DC\",\"tz\":-5,\"lat\":38.9,\"lon\":77.02},{\"name\":\"Wichita, TX\",\"tz\":-6,\"lat\":37.67,\"lon\":97.33},{\"name\":\"Yellowstone Lake\",\"tz\":-7,\"lat\":44.42,\"lon\":110.37},{\"name\":\"Ancona\",\"tz\":1,\"lat\":43.63,\"lon\":-13.5},{\"name\":\"Asti\",\"tz\":1,\"lat\":44.9,\"lon\":-8.18},{\"name\":\"Bologna\",\"tz\":1,\"lat\":44.48,\"lon\":-11.33},{\"name\":\"Ferrara\",\"tz\":1,\"lat\":44.83,\"lon\":-11.58},{\"name\":\"Florenz\",\"tz\":1,\"lat\":43.77,\"lon\":-11.25},{\"name\":\"Genua\",\"tz\":1,\"lat\":44.42,\"lon\":-8.95},{\"name\":\"Livorno\",\"tz\":1,\"lat\":43.55,\"lon\":-10.32},{\"name\":\"Mantova\",\"tz\":1,\"lat\":45.15,\"lon\":-10.8},{\"name\":\"Meran\",\"tz\":1,\"lat\":46.67,\"lon\":-11.15},{\"name\":\"Mailand\",\"tz\":1,\"lat\":45.47,\"lon\":-9.18},{\"name\":\"Modena\",\"tz\":1,\"lat\":44.67,\"lon\":-10.92},{\"name\":\"Neapel\",\"tz\":1,\"lat\":40.85,\"lon\":-14.28},{\"name\":\"Padova\",\"tz\":1,\"lat\":45.42,\"lon\":-11.88},{\"name\":\"Parma\",\"tz\":1,\"lat\":44.8,\"lon\":-10.32},{\"name\":\"Perugia\",\"tz\":1,\"lat\":43.13,\"lon\":-12.37},{\"name\":\"Pisa\",\"tz\":1,\"lat\":43.72,\"lon\":-10.38},{\"name\":\"Rom\",\"tz\":1,\"lat\":41.9,\"lon\":-12.48},{\"name\":\"Siena\",\"tz\":1,\"lat\":43.32,\"lon\":-11.35},{\"name\":\"Spiazzo\",\"tz\":1,\"lat\":46.12,\"lon\":-10.67},{\"name\":\"Trieste\",\"tz\":1,\"lat\":45.67,\"lon\":-13.77},{\"name\":\"Turin\",\"tz\":1,\"lat\":45.07,\"lon\":-7.67},{\"name\":\"Venedig\",\"tz\":1,\"lat\":45.45,\"lon\":-12.35},{\"name\":\"Verona\",\"tz\":1,\"lat\":45.45,\"lon\":-11},{\"name\":\"Alburquerque\",\"tz\":1,\"lat\":39.22,\"lon\":7},{\"name\":\"Alicante\",\"tz\":1,\"lat\":38.35,\"lon\":0.47},{\"name\":\"Barcelona\",\"tz\":1,\"lat\":41.38,\"lon\":-2.18},{\"name\":\"Mallorca\",\"tz\":1,\"lat\":39.48,\"lon\":-3},{\"name\":\"Marbella\",\"tz\":1,\"lat\":36.52,\"lon\":4.88},{\"name\":\"Sevilla\",\"tz\":1,\"lat\":37.37,\"lon\":5.98},{\"name\":\"Torremolinos\",\"tz\":1,\"lat\":36.6,\"lon\":4.5},{\"name\":\"Valencia\",\"tz\":1,\"lat\":39.47,\"lon\":0.37},{\"name\":\"Belmonte\",\"tz\":0,\"lat\":40.37,\"lon\":7.37},{\"name\":\"Lissabon\",\"tz\":0,\"lat\":38.72,\"lon\":9.13},{\"name\":\"Porto\",\"tz\":0,\"lat\":41.18,\"lon\":8.6},{\"name\":\"Athen\",\"tz\":2,\"lat\":37.97,\"lon\":-23.72},{\"name\":\"Korfu\",\"tz\":2,\"lat\":39.6,\"lon\":-19.92},{\"name\":\"Rhodos\",\"tz\":2,\"lat\":36.17,\"lon\":-28},{\"name\":\"Saloniki\",\"tz\":2,\"lat\":40.65,\"lon\":-23.02},{\"name\":\"Trikala\",\"tz\":2,\"lat\":39.57,\"lon\":-21.77},{\"name\":\"Volos\",\"tz\":2,\"lat\":39.35,\"lon\":-22.93},{\"name\":\"Ankara\",\"tz\":2,\"lat\":39.93,\"lon\":-32.87},{\"name\":\"Bursa\",\"tz\":2,\"lat\":40.18,\"lon\":-29.07},{\"name\":\"Istanbul\",\"tz\":2,\"lat\":41.02,\"lon\":-28.97},{\"name\":\"Izmir\",\"tz\":2,\"lat\":38.42,\"lon\":-27.15},{\"name\":\"Esch-sur-Alzette\",\"tz\":1,\"lat\":49.5,\"lon\":-5.98},{\"name\":\"Luxemburg\",\"tz\":1,\"lat\":49.6,\"lon\":-6.15},{\"name\":\"Kopenhagen\",\"tz\":1,\"lat\":55.67,\"lon\":-12.58},{\"name\":\"Boras\",\"tz\":1,\"lat\":57.72,\"lon\":-12.92},{\"name\":\"Göteborg\",\"tz\":1,\"lat\":57.72,\"lon\":-11.97},{\"name\":\"Lund\",\"tz\":1,\"lat\":55.7,\"lon\":-13.18},{\"name\":\"Malmö\",\"tz\":1,\"lat\":55.6,\"lon\":-13},{\"name\":\"Stockholm\",\"tz\":1,\"lat\":59.33,\"lon\":-18.05},{\"name\":\"Oslo\",\"tz\":1,\"lat\":59.92,\"lon\":-10.75},{\"name\":\"Trondheim\",\"tz\":1,\"lat\":63.42,\"lon\":-10.42},{\"name\":\"Helsinki\",\"tz\":2,\"lat\":60.17,\"lon\":-24.97},{\"name\":\"Turku\",\"tz\":2,\"lat\":60.45,\"lon\":-22.28},{\"name\":\"Pazardjik\",\"tz\":2,\"lat\":42.2,\"lon\":-24.33},{\"name\":\"Plovdiv\",\"tz\":2,\"lat\":42.15,\"lon\":-24.75},{\"name\":\"Ruse\",\"tz\":2,\"lat\":43.83,\"lon\":-25.95},{\"name\":\"Sofia\",\"tz\":2,\"lat\":42.68,\"lon\":-23.32},{\"name\":\"Bacau\",\"tz\":2,\"lat\":46.57,\"lon\":-26.92},{\"name\":\"Botosani\",\"tz\":2,\"lat\":47.75,\"lon\":-26.67},{\"name\":\"Brasov\",\"tz\":2,\"lat\":45.65,\"lon\":-25.62},{\"name\":\"Cluj\",\"tz\":2,\"lat\":46.78,\"lon\":-23.6},{\"name\":\"Constanta\",\"tz\":2,\"lat\":44.18,\"lon\":-28.65},{\"name\":\"Dorohoi\",\"tz\":2,\"lat\":47.95,\"lon\":-26.4},{\"name\":\"Galati\",\"tz\":2,\"lat\":45.43,\"lon\":-28.05},{\"name\":\"Iasi\",\"tz\":2,\"lat\":47.17,\"lon\":-27.58},{\"name\":\"Oradea\",\"tz\":2,\"lat\":47.05,\"lon\":-21.95},{\"name\":\"Piatra Neamt\",\"tz\":2,\"lat\":46.93,\"lon\":-26.37},{\"name\":\"Radauti\",\"tz\":2,\"lat\":47.85,\"lon\":-25.92},{\"name\":\"Satu Mare\",\"tz\":2,\"lat\":47.8,\"lon\":-22.88},{\"name\":\"Sighetul Marmatiei\",\"tz\":2,\"lat\":47.93,\"lon\":-23.9},{\"name\":\"Suceava\",\"tz\":2,\"lat\":47.65,\"lon\":-26.32},{\"name\":\"Timisoara\",\"tz\":2,\"lat\":45.75,\"lon\":-21.22},{\"name\":\"Tirgu Mures\",\"tz\":2,\"lat\":46.55,\"lon\":-24.55},{\"name\":\"Budapest\",\"tz\":1,\"lat\":47.5,\"lon\":-19.08},{\"name\":\"Sopron\",\"tz\":1,\"lat\":47.68,\"lon\":-16.6},{\"name\":\"Brünn\",\"tz\":1,\"lat\":49.2,\"lon\":-16.62},{\"name\":\"Karlsbad\",\"tz\":1,\"lat\":50.18,\"lon\":-12.87},{\"name\":\"Liberec\",\"tz\":1,\"lat\":50.77,\"lon\":-15.05},{\"name\":\"Olomouc\",\"tz\":1,\"lat\":49.6,\"lon\":-17.27},{\"name\":\"Ostrava\",\"tz\":1,\"lat\":49.83,\"lon\":-18.28},{\"name\":\"Pilsen\",\"tz\":1,\"lat\":49.75,\"lon\":-13.38},{\"name\":\"Prag\",\"tz\":1,\"lat\":50.08,\"lon\":-14.43},{\"name\":\"Teplice\",\"tz\":1,\"lat\":50.65,\"lon\":-13.8},{\"name\":\"Usti nad Labem\",\"tz\":1,\"lat\":50.67,\"lon\":-14.03},{\"name\":\"Bratislava\",\"tz\":1,\"lat\":48.15,\"lon\":-17.12},{\"name\":\"Galanta\",\"tz\":1,\"lat\":48.2,\"lon\":-17.72},{\"name\":\"Kosice\",\"tz\":1,\"lat\":48.72,\"lon\":-21.25},{\"name\":\"Piestany\",\"tz\":1,\"lat\":48.6,\"lon\":-17.83},{\"name\":\"Presov\",\"tz\":1,\"lat\":49,\"lon\":-21.25},{\"name\":\"Trnava\",\"tz\":1,\"lat\":48.38,\"lon\":-17.58},{\"name\":\"Belgrad\",\"tz\":1,\"lat\":44.83,\"lon\":-20.5},{\"name\":\"Novi Sad\",\"tz\":1,\"lat\":45.25,\"lon\":-19.83},{\"name\":\"Subotica\",\"tz\":1,\"lat\":46.1,\"lon\":-19.65},{\"name\":\"Dubrovnik\",\"tz\":1,\"lat\":42.63,\"lon\":-18.12},{\"name\":\"Rijeka\",\"tz\":1,\"lat\":45.33,\"lon\":-14.45},{\"name\":\"Split\",\"tz\":1,\"lat\":43.52,\"lon\":-16.45},{\"name\":\"Zagreb\",\"tz\":1,\"lat\":45.8,\"lon\":-15.97},{\"name\":\"Skopje\",\"tz\":1,\"lat\":41.98,\"lon\":-21.43},{\"name\":\"Sarajevo\",\"tz\":1,\"lat\":43.87,\"lon\":-18.42},{\"name\":\"Ljubljana\",\"tz\":1,\"lat\":46.05,\"lon\":-14.52},{\"name\":\"Teheran (GMT+3)\",\"tz\":3,\"lat\":35.67,\"lon\":-51.43},{\"name\":\"Teheran (GMT+4)\",\"tz\":4,\"lat\":35.67,\"lon\":-51.43},{\"name\":\"Tokyo\",\"tz\":9,\"lat\":35.7,\"lon\":-139.77},{\"name\":\"Asuncion\",\"tz\":-4,\"lat\":-25.27,\"lon\":57.67},{\"name\":\"Sao Paulo\",\"tz\":-3,\"lat\":-23.53,\"lon\":46.62},{\"name\":\"Buenos Aires\",\"tz\":-3,\"lat\":-34.6,\"lon\":58.45},{\"name\":\"Guangzhou (Canton)\",\"tz\":8,\"lat\":23.1,\"lon\":-113.27},{\"name\":\"Hong Kong\",\"tz\":8,\"lat\":25.25,\"lon\":-114.17},{\"name\":\"Peking (Beijing)\",\"tz\":8,\"lat\":39.9,\"lon\":-116.42},{\"name\":\"Shanghai\",\"tz\":8,\"lat\":31.23,\"lon\":-121.47},{\"name\":\"Shenyang\",\"tz\":8,\"lat\":41.8,\"lon\":-123.45},{\"name\":\"Bangkok\",\"tz\":7,\"lat\":13.58,\"lon\":-100.48},{\"name\":\"Neu Dehli (GMT+5)\",\"tz\":5,\"lat\":28.3,\"lon\":-77.47},{\"name\":\"Neu Dehli (GMT+6)\",\"tz\":6,\"lat\":28.3,\"lon\":-77.47},{\"name\":\"Kairo\",\"tz\":2,\"lat\":29.67,\"lon\":-31.02},{\"name\":\"Damaskus\",\"tz\":3,\"lat\":33.13,\"lon\":-36.43},{\"name\":\"Amman\",\"tz\":2,\"lat\":31.7,\"lon\":-35.88},{\"name\":\"Ar-Rijad (Riyadh)\",\"tz\":3,\"lat\":24.63,\"lon\":-46.72},{\"name\":\"Beirut\",\"tz\":2,\"lat\":33.33,\"lon\":-35.37},{\"name\":\"Pjongjang (P´yongyang)\",\"tz\":9,\"lat\":39.02,\"lon\":-125.75},{\"name\":\"Seoul (Soul)\",\"tz\":9,\"lat\":37.55,\"lon\":-126.97},{\"name\":\"Singapur\",\"tz\":8,\"lat\":11.37,\"lon\":-103.8},{\"name\":\"Lima\",\"tz\":-5,\"lat\":-12.05,\"lon\":77.05},{\"name\":\"Havana\",\"tz\":-5,\"lat\":23.13,\"lon\":82.37},{\"name\":\"Brisbane\",\"tz\":10,\"lat\":-27.47,\"lon\":-153.03},{\"name\":\"Canberra\",\"tz\":10,\"lat\":-35.28,\"lon\":-149.13},{\"name\":\"Sydney\",\"tz\":10,\"lat\":-33.87,\"lon\":-151.22},{\"name\":\"Halifax, N.S., Can.\",\"tz\":-4,\"lat\":44.65,\"lon\":63.6},{\"name\":\"Montreal, Quebec, Can.\",\"tz\":-5,\"lat\":45.52,\"lon\":73.57},{\"name\":\"Quebec\",\"tz\":-5,\"lat\":46.82,\"lon\":71.23},{\"name\":\"Vancouver\",\"tz\":-8,\"lat\":49.27,\"lon\":123.12},{\"name\":\"Demmin\",\"tz\":1,\"lat\":53.9,\"lon\":-13.03},{\"name\":\"Dieburg\",\"tz\":1,\"lat\":49.9,\"lon\":-8.83},{\"name\":\"Dömitz\",\"tz\":1,\"lat\":53.13,\"lon\":-11.23},{\"name\":\"Durlach\",\"tz\":1,\"lat\":49,\"lon\":-8.45},{\"name\":\"Landau\",\"tz\":1,\"lat\":49.2,\"lon\":-8.12},{\"name\":\"Landau an der Isar\",\"tz\":1,\"lat\":48.67,\"lon\":-12.72},{\"name\":\"Parchim\",\"tz\":1,\"lat\":53.42,\"lon\":-11.85},{\"name\":\"Suhl\",\"tz\":1,\"lat\":50.62,\"lon\":-10.68},{\"name\":\"Worms\",\"tz\":1,\"lat\":49.63,\"lon\":-8.37},{\"name\":\"Strasbourg\",\"tz\":1,\"lat\":48.58,\"lon\":-7.75},{\"name\":\"Kaunas\",\"tz\":2,\"lat\":54.9,\"lon\":-23.9},{\"name\":\"Königsberg\",\"tz\":2,\"lat\":54.72,\"lon\":-20.5},{\"name\":\"Riga\",\"tz\":2,\"lat\":56.95,\"lon\":-24.1},{\"name\":\"Tallinn\",\"tz\":2,\"lat\":59.42,\"lon\":-24.75},{\"name\":\"Vilnius\",\"tz\":2,\"lat\":54.68,\"lon\":-25.32},{\"name\":\"Blackpool\",\"tz\":0,\"lat\":53.83,\"lon\":3.05},{\"name\":\"Bournemouth\",\"tz\":0,\"lat\":50.72,\"lon\":1.9},{\"name\":\"Brighton\",\"tz\":0,\"lat\":50.83,\"lon\":0.13},{\"name\":\"Cambridge\",\"tz\":0,\"lat\":52.22,\"lon\":-0.13},{\"name\":\"Coventry\",\"tz\":0,\"lat\":52.42,\"lon\":1.5},{\"name\":\"Croydon\",\"tz\":0,\"lat\":51.38,\"lon\":0.1},{\"name\":\"Eastbourne\",\"tz\":0,\"lat\":50.77,\"lon\":-0.28},{\"name\":\"Exeter\",\"tz\":0,\"lat\":50.72,\"lon\":3.52},{\"name\":\"Grimsby\",\"tz\":0,\"lat\":53.58,\"lon\":0.08},{\"name\":\"Guildford\",\"tz\":0,\"lat\":51.23,\"lon\":0.58},{\"name\":\"Harlow\",\"tz\":0,\"lat\":51.78,\"lon\":-0.13},{\"name\":\"Harrogate\",\"tz\":0,\"lat\":54,\"lon\":1.55},{\"name\":\"Hemel Hempstead\",\"tz\":0,\"lat\":51.77,\"lon\":0.47},{\"name\":\"Hove\",\"tz\":0,\"lat\":50.82,\"lon\":0.17},{\"name\":\"Leicester\",\"tz\":0,\"lat\":52.63,\"lon\":1.08},{\"name\":\"Luton\",\"tz\":0,\"lat\":51.88,\"lon\":0.42},{\"name\":\"Newcastle\",\"tz\":0,\"lat\":54.2,\"lon\":5.75},{\"name\":\"Norwich\",\"tz\":0,\"lat\":52.63,\"lon\":-1.3},{\"name\":\"Nottingham\",\"tz\":0,\"lat\":52.97,\"lon\":1.17},{\"name\":\"Oxford\",\"tz\":0,\"lat\":51.77,\"lon\":1.23},{\"name\":\"Plymouth\",\"tz\":0,\"lat\":50.38,\"lon\":4.15},{\"name\":\"Portsmouth\",\"tz\":0,\"lat\":50.8,\"lon\":1.08},{\"name\":\"Ramsgate\",\"tz\":0,\"lat\":51.33,\"lon\":-1.42},{\"name\":\"Reading\",\"tz\":0,\"lat\":51.47,\"lon\":0.98},{\"name\":\"Rochester\",\"tz\":0,\"lat\":51.4,\"lon\":-0.5},{\"name\":\"Saint Anne's\",\"tz\":0,\"lat\":53.75,\"lon\":3.03},{\"name\":\"Solihull\",\"tz\":0,\"lat\":52.42,\"lon\":1.75},{\"name\":\"Southend-on-SEA\",\"tz\":0,\"lat\":51.55,\"lon\":-0.72},{\"name\":\"Southport\",\"tz\":0,\"lat\":53.65,\"lon\":3.02},{\"name\":\"Watford\",\"tz\":0,\"lat\":51.67,\"lon\":0.42},{\"name\":\"Agen\",\"tz\":1,\"lat\":44.2,\"lon\":-0.62},{\"name\":\"Aix-en-Provence\",\"tz\":1,\"lat\":43.53,\"lon\":-5.43},{\"name\":\"Aix-les-Bains\",\"tz\":1,\"lat\":45.7,\"lon\":-5.75},{\"name\":\"Annecy\",\"tz\":1,\"lat\":45.9,\"lon\":-6.12},{\"name\":\"Antibes\",\"tz\":1,\"lat\":43.58,\"lon\":-7.12},{\"name\":\"Arcachon\",\"tz\":1,\"lat\":44.62,\"lon\":1.2},{\"name\":\"Bayonne\",\"tz\":1,\"lat\":43.48,\"lon\":1.48},{\"name\":\"Belfort\",\"tz\":1,\"lat\":47.63,\"lon\":-6.87},{\"name\":\"Benfeld\",\"tz\":1,\"lat\":48.37,\"lon\":-7.6},{\"name\":\"Besancon\",\"tz\":1,\"lat\":47.25,\"lon\":-6.03},{\"name\":\"Biarritz\",\"tz\":1,\"lat\":43.48,\"lon\":1.57},{\"name\":\"Bordeuax\",\"tz\":1,\"lat\":44.83,\"lon\":0.57},{\"name\":\"Boulay-Moselle\",\"tz\":1,\"lat\":49.18,\"lon\":-6.5},{\"name\":\"Boulogne-Sur-Mer\",\"tz\":1,\"lat\":50.72,\"lon\":-1.62},{\"name\":\"Brest, Fr.\",\"tz\":1,\"lat\":48.4,\"lon\":4.48},{\"name\":\"Caen\",\"tz\":1,\"lat\":49.18,\"lon\":0.35},{\"name\":\"Caluire et Cuire\",\"tz\":1,\"lat\":45.8,\"lon\":-4.85},{\"name\":\"Cannes\",\"tz\":1,\"lat\":43.55,\"lon\":-7.02},{\"name\":\"Carpentras\",\"tz\":1,\"lat\":44.05,\"lon\":-5.05},{\"name\":\"Cavaillon\",\"tz\":1,\"lat\":43.83,\"lon\":-5.02},{\"name\":\"Chalons-Sur-Marne\",\"tz\":1,\"lat\":48.95,\"lon\":-4.37},{\"name\":\"Chalons-Sur-Saone\",\"tz\":1,\"lat\":46.78,\"lon\":-4.85},{\"name\":\"Clermont-Ferrand\",\"tz\":1,\"lat\":45.78,\"lon\":-3.08},{\"name\":\"Colmar\",\"tz\":1,\"lat\":58.08,\"lon\":-7.37},{\"name\":\"Dijon\",\"tz\":1,\"lat\":47.32,\"lon\":-5.02},{\"name\":\"Evian-Les-Bains\",\"tz\":1,\"lat\":46.38,\"lon\":-6.58},{\"name\":\"Grasse\",\"tz\":1,\"lat\":43.67,\"lon\":-6.92},{\"name\":\"Grenoble\",\"tz\":1,\"lat\":45.17,\"lon\":-5.72},{\"name\":\"Haguenau\",\"tz\":1,\"lat\":48.82,\"lon\":-7.78},{\"name\":\"La Rochelle\",\"tz\":1,\"lat\":46.17,\"lon\":1.17},{\"name\":\"La Seyne-Sur-Mer\",\"tz\":1,\"lat\":43.1,\"lon\":-5.88},{\"name\":\"Le Havre\",\"tz\":1,\"lat\":49.5,\"lon\":-0.13},{\"name\":\"Lille\",\"tz\":1,\"lat\":50.63,\"lon\":-3.07},{\"name\":\"Limoges\",\"tz\":1,\"lat\":45.83,\"lon\":-1.25},{\"name\":\"Lyon\",\"tz\":1,\"lat\":45.75,\"lon\":-4.85},{\"name\":\"Mâcon, Fr.\",\"tz\":1,\"lat\":46.3,\"lon\":-4.83},{\"name\":\"Menton\",\"tz\":1,\"lat\":43.78,\"lon\":-7.5},{\"name\":\"Metz\",\"tz\":1,\"lat\":49.13,\"lon\":-6.17},{\"name\":\"Montpellier\",\"tz\":1,\"lat\":43.6,\"lon\":-3.88},{\"name\":\"Mülhausen im Täle\",\"tz\":1,\"lat\":48.57,\"lon\":-9.65},{\"name\":\"Nancy\",\"tz\":1,\"lat\":48.68,\"lon\":-6.2},{\"name\":\"Nîmes\",\"tz\":1,\"lat\":43.83,\"lon\":-4.35},{\"name\":\"Nizza Monferrato\",\"tz\":1,\"lat\":44.77,\"lon\":-8.35},{\"name\":\"Orléans, Fr.\",\"tz\":1,\"lat\":47.92,\"lon\":-1.9},{\"name\":\"Perpignan\",\"tz\":1,\"lat\":42.68,\"lon\":-2.87},{\"name\":\"Reims\",\"tz\":1,\"lat\":49.25,\"lon\":-4.02},{\"name\":\"Rouen\",\"tz\":1,\"lat\":49.43,\"lon\":-1.08},{\"name\":\"Saint-Louis, Fr.\",\"tz\":1,\"lat\":47.58,\"lon\":-7.57},{\"name\":\"Sens\",\"tz\":1,\"lat\":48.2,\"lon\":-3.28},{\"name\":\"Toulouse\",\"tz\":1,\"lat\":43.6,\"lon\":-1.43},{\"name\":\"Tours\",\"tz\":1,\"lat\":47.38,\"lon\":-0.68},{\"name\":\"Troyes\",\"tz\":1,\"lat\":48.3,\"lon\":-4.08},{\"name\":\"Versailles, Fr.\",\"tz\":1,\"lat\":48.8,\"lon\":-2.13},{\"name\":\"Vittel\",\"tz\":1,\"lat\":48.2,\"lon\":-5.95},{\"name\":\"Wasselonne\",\"tz\":1,\"lat\":48.63,\"lon\":-7.45},{\"name\":\"Rothenburg ob der Tauber\",\"tz\":1,\"lat\":49.38,\"lon\":-10.17},{\"name\":\"Rothenburg\",\"tz\":1,\"lat\":51.33,\"lon\":-14.97},{\"name\":\"Rothenburg an der Oder\",\"tz\":1,\"lat\":52.02,\"lon\":-15.42},{\"name\":\"Alexandria, Egypt\",\"tz\":2,\"lat\":31.18,\"lon\":-29.93},{\"name\":\"Anchorage, AK\",\"tz\":-9,\"lat\":61.22,\"lon\":149.88},{\"name\":\"Ann Arbor, MI\",\"tz\":-5,\"lat\":42.3,\"lon\":83.75},{\"name\":\"Augusta, GA\",\"tz\":-5,\"lat\":33.48,\"lon\":81.93},{\"name\":\"Baghdad, Iraq\",\"tz\":3,\"lat\":33.35,\"lon\":-44.42},{\"name\":\"Birmingham, AL\",\"tz\":-6,\"lat\":33.52,\"lon\":86.82},{\"name\":\"Bombay, India (GMT+5)\",\"tz\":5,\"lat\":18.95,\"lon\":-72.83},{\"name\":\"Bombay, India (GMT+6)\",\"tz\":6,\"lat\":18.95,\"lon\":-72.83},{\"name\":\"Casablanca, Marokko\",\"tz\":0,\"lat\":33.65,\"lon\":7.58},{\"name\":\"Djakarta, Indonesia\",\"tz\":7,\"lat\":-6.17,\"lon\":-106.8},{\"name\":\"Desmoines, IA\",\"tz\":-6,\"lat\":41.58,\"lon\":93.62},{\"name\":\"Dubayy\",\"tz\":4,\"lat\":25.3,\"lon\":-55.3},{\"name\":\"Fort Lauderdale, FL\",\"tz\":-5,\"lat\":26.12,\"lon\":80.13},{\"name\":\"Jacksonsville, FL\",\"tz\":-5,\"lat\":30.33,\"lon\":81.67},{\"name\":\"Karachi\",\"tz\":5,\"lat\":24.87,\"lon\":-67.05},{\"name\":\"Kuala Lumpur, Malaysia\",\"tz\":8,\"lat\":3.15,\"lon\":-101.72},{\"name\":\"Kuwait, Kuwait\",\"tz\":3,\"lat\":29.5,\"lon\":-47.75},{\"name\":\"Lagos, Nigeria\",\"tz\":1,\"lat\":6.45,\"lon\":-3.4},{\"name\":\"Las Vegas, NV\",\"tz\":-8,\"lat\":36.18,\"lon\":115.13},{\"name\":\"Mauritius\",\"tz\":4,\"lat\":-20.28,\"lon\":-57.55},{\"name\":\"Panama, Panama\",\"tz\":-5,\"lat\":8.97,\"lon\":79.52},{\"name\":\"Peoria, IL\",\"tz\":-6,\"lat\":40.7,\"lon\":89.6},{\"name\":\"Raleigh, NC\",\"tz\":-5,\"lat\":35.78,\"lon\":78.65},{\"name\":\"Redmond, WA\",\"tz\":-8,\"lat\":47.4,\"lon\":122.07},{\"name\":\"Sacramento, CA\",\"tz\":-8,\"lat\":38.58,\"lon\":121.5},{\"name\":\"Tenerife, Spain\",\"tz\":1,\"lat\":28.03,\"lon\":-16.57},{\"name\":\"Durres, Albania\",\"tz\":1,\"lat\":41.32,\"lon\":-19.43},{\"name\":\"Lushnje, Albania\",\"tz\":1,\"lat\":40.93,\"lon\":-19.7},{\"name\":\"Lugoj, Romania\",\"tz\":2,\"lat\":45.68,\"lon\":-21.9},{\"name\":\"Shkoder, Albania\",\"tz\":1,\"lat\":42.08,\"lon\":-19.5},{\"name\":\"Addis Abeba\",\"tz\":3,\"lat\":9.15,\"lon\":-38.77},{\"name\":\"Aden, Jemen\",\"tz\":3,\"lat\":12.78,\"lon\":-45.03},{\"name\":\"Boca Raton, FL\",\"tz\":-5,\"lat\":26.35,\"lon\":80.08},{\"name\":\"Buchara\",\"tz\":5,\"lat\":39.77,\"lon\":-64.42},{\"name\":\"Gondar, Ethiopia\",\"tz\":3,\"lat\":12.6,\"lon\":-37.48},{\"name\":\"Jekaterinburg\",\"tz\":5,\"lat\":56.83,\"lon\":-60.5},{\"name\":\"Kaifeng, China\",\"tz\":8,\"lat\":34.78,\"lon\":-114.43},{\"name\":\"Krasnojarsk\",\"tz\":7,\"lat\":56,\"lon\":-92.98},{\"name\":\"Mbale, Uganda\",\"tz\":3,\"lat\":1.07,\"lon\":-34.18},{\"name\":\"New Bedfort, MA\",\"tz\":-5,\"lat\":41.63,\"lon\":70.93},{\"name\":\"Nicosia, Cyprus\",\"tz\":2,\"lat\":34.78,\"lon\":-33.48},{\"name\":\"Nowgorod\",\"tz\":3,\"lat\":58.58,\"lon\":-31.23},{\"name\":\"Omsk\",\"tz\":6,\"lat\":54.95,\"lon\":-73.33},{\"name\":\"Plano, TX\",\"tz\":-6,\"lat\":33.03,\"lon\":96.7},{\"name\":\"Perm\",\"tz\":5,\"lat\":57.92,\"lon\":-56.05},{\"name\":\"Sana, Jemen\",\"tz\":3,\"lat\":15.18,\"lon\":-44.02},{\"name\":\"Skokie, IL\",\"tz\":-6,\"lat\":42.03,\"lon\":87.77},{\"name\":\"Woronesch, Russia\",\"tz\":3,\"lat\":51.7,\"lon\":-39.25},{\"name\":\"Allentown, PA\",\"tz\":-5,\"lat\":40.6,\"lon\":75.48},{\"name\":\"Capetown, South Africa\",\"tz\":2,\"lat\":-33.9,\"lon\":-18.37},{\"name\":\"Chapel Hill, NC\",\"tz\":-5,\"lat\":35.9,\"lon\":79.07},{\"name\":\"Ft. Walton Beach, FL\",\"tz\":-5,\"lat\":30.4,\"lon\":86.52},{\"name\":\"Greenwich Meridian\",\"tz\":0,\"lat\":0,\"lon\":0},{\"name\":\"Monsey, NY\",\"tz\":-5,\"lat\":41.12,\"lon\":74.07},{\"name\":\"Ramat Gan\",\"tz\":2,\"lat\":32.07,\"lon\":-34.82},{\"name\":\"Lugano\",\"tz\":1,\"lat\":46.02,\"lon\":-8.97},{\"name\":\"Baden, Austria\",\"tz\":1,\"lat\":48,\"lon\":-16.23},{\"name\":\"Gadsten, AL\",\"tz\":-6,\"lat\":34.02,\"lon\":86.02},{\"name\":\"Huntsville, AL\",\"tz\":-6,\"lat\":34.73,\"lon\":86.58},{\"name\":\"Montgomery, AL\",\"tz\":-6,\"lat\":32.37,\"lon\":86.32},{\"name\":\"Juneau, AK\",\"tz\":-10,\"lat\":58.3,\"lon\":134.42},{\"name\":\"Nome, AK\",\"tz\":-10,\"lat\":64.5,\"lon\":165.42},{\"name\":\"Algiers\",\"tz\":1,\"lat\":36.48,\"lon\":-3},{\"name\":\"Luanda\",\"tz\":1,\"lat\":-8.5,\"lon\":-13.15},{\"name\":\"Yuma, Arizona\",\"tz\":-7,\"lat\":32.72,\"lon\":114.62},{\"name\":\"Ft Smith, Arkansas\",\"tz\":-6,\"lat\":35.37,\"lon\":94.43},{\"name\":\"Perth\",\"tz\":8,\"lat\":-31.83,\"lon\":-116.17},{\"name\":\"Porto Novo\",\"tz\":1,\"lat\":6.3,\"lon\":-2.45},{\"name\":\"Ouagadougou\",\"tz\":0,\"lat\":12.2,\"lon\":1.4},{\"name\":\"Bujumbura\",\"tz\":2,\"lat\":-3.22,\"lon\":-29.18},{\"name\":\"Bakersfield, CA\",\"tz\":-8,\"lat\":35.37,\"lon\":119.02},{\"name\":\"Berkeley, CA\",\"tz\":-8,\"lat\":37.87,\"lon\":122.27},{\"name\":\"Eureka, CA\",\"tz\":-8,\"lat\":40.78,\"lon\":124.17},{\"name\":\"Fresno, CA\",\"tz\":-8,\"lat\":36.73,\"lon\":119.78},{\"name\":\"Long Beach, CA\",\"tz\":-8,\"lat\":33.77,\"lon\":118.18},{\"name\":\"Oakland, CA\",\"tz\":-8,\"lat\":37.78,\"lon\":122.27},{\"name\":\"Pasadena, CA\",\"tz\":-8,\"lat\":34.15,\"lon\":118.15},{\"name\":\"San Bernardino, CA\",\"tz\":-8,\"lat\":34.12,\"lon\":117.47},{\"name\":\"San Jose, CA\",\"tz\":-8,\"lat\":37.33,\"lon\":121.88},{\"name\":\"Santa Barbara, CA\",\"tz\":-8,\"lat\":34.42,\"lon\":119.7},{\"name\":\"Santa Cruz, CA\",\"tz\":-8,\"lat\":36.97,\"lon\":122.02},{\"name\":\"Stockton, CA\",\"tz\":-8,\"lat\":37.97,\"lon\":121.28},{\"name\":\"Yaounde\",\"tz\":1,\"lat\":3.52,\"lon\":-11.32},{\"name\":\"Calgary\",\"tz\":-7,\"lat\":51.05,\"lon\":114.05},{\"name\":\"Edmondton\",\"tz\":-7,\"lat\":53.55,\"lon\":113.48},{\"name\":\"Lethbridge\",\"tz\":-7,\"lat\":49.7,\"lon\":112.83},{\"name\":\"Prince Rupert, British Columbia\",\"tz\":-8,\"lat\":54.32,\"lon\":130.32},{\"name\":\"Victoria, British Columbia\",\"tz\":-8,\"lat\":48.43,\"lon\":123.37},{\"name\":\"Brandon\",\"tz\":-6,\"lat\":49.85,\"lon\":99.95},{\"name\":\"Churchill\",\"tz\":-6,\"lat\":58.75,\"lon\":94.17},{\"name\":\"Fredericton\",\"tz\":-4,\"lat\":45.97,\"lon\":66.65},{\"name\":\"Moncton\",\"tz\":-4,\"lat\":46.08,\"lon\":64.78},{\"name\":\"St John\",\"tz\":-4,\"lat\":45.27,\"lon\":66.07},{\"name\":\"St John's\",\"tz\":-4,\"lat\":47.57,\"lon\":52.72},{\"name\":\"Yellowknife\",\"tz\":-7,\"lat\":62.45,\"lon\":114.38},{\"name\":\"Sydney, Canada\",\"tz\":-4,\"lat\":46.13,\"lon\":60.2},{\"name\":\"Belleville\",\"tz\":-5,\"lat\":44.17,\"lon\":77.38},{\"name\":\"Brantford\",\"tz\":-5,\"lat\":43.15,\"lon\":80.27},{\"name\":\"Burlington\",\"tz\":-5,\"lat\":43.33,\"lon\":79.8},{\"name\":\"Guelph\",\"tz\":-5,\"lat\":43.55,\"lon\":80.25},{\"name\":\"Hamilton\",\"tz\":-5,\"lat\":43.25,\"lon\":79.88},{\"name\":\"Kingston\",\"tz\":-5,\"lat\":44.23,\"lon\":76.48},{\"name\":\"Kitchener\",\"tz\":-5,\"lat\":43.45,\"lon\":80.48},{\"name\":\"London, Ontario\",\"tz\":-5,\"lat\":42.98,\"lon\":81.23},{\"name\":\"Mississauga\",\"tz\":-5,\"lat\":43.55,\"lon\":79.57},{\"name\":\"North Bay\",\"tz\":-5,\"lat\":46.32,\"lon\":79.47},{\"name\":\"Oshawa\",\"tz\":-5,\"lat\":43.9,\"lon\":78.87},{\"name\":\"Peterborough\",\"tz\":-5,\"lat\":44.32,\"lon\":78.32},{\"name\":\"St Catherines\",\"tz\":-5,\"lat\":43.17,\"lon\":79.25},{\"name\":\"Sault St Marie\",\"tz\":-5,\"lat\":46.5,\"lon\":84.33},{\"name\":\"Sudbury\",\"tz\":-5,\"lat\":46.48,\"lon\":80.98},{\"name\":\"Thunder Bay\",\"tz\":-5,\"lat\":48.38,\"lon\":89.25},{\"name\":\"Windsor\",\"tz\":-5,\"lat\":42.32,\"lon\":83.03},{\"name\":\"Hull\",\"tz\":-5,\"lat\":45.43,\"lon\":75.72},{\"name\":\"La Salle\",\"tz\":-5,\"lat\":45.43,\"lon\":73.67},{\"name\":\"Laval\",\"tz\":-5,\"lat\":45.22,\"lon\":73.75},{\"name\":\"Sherbrooke\",\"tz\":-5,\"lat\":45.4,\"lon\":71.85},{\"name\":\"Trois Riveres\",\"tz\":-5,\"lat\":46.35,\"lon\":72.55},{\"name\":\"Dawson\",\"tz\":-8,\"lat\":64.07,\"lon\":139.43},{\"name\":\"Whitehorse\",\"tz\":-8,\"lat\":60.72,\"lon\":135.05},{\"name\":\"Moose Jaw\",\"tz\":-6,\"lat\":50.4,\"lon\":105.53},{\"name\":\"Regina\",\"tz\":-6,\"lat\":50.45,\"lon\":104.62},{\"name\":\"Saskatoon\",\"tz\":-6,\"lat\":52.13,\"lon\":106.67},{\"name\":\"Bangui\",\"tz\":1,\"lat\":4.22,\"lon\":-18.37},{\"name\":\"N'Djamena\",\"tz\":1,\"lat\":12.1,\"lon\":-14.58},{\"name\":\"Grand Junction\",\"tz\":-7,\"lat\":39.07,\"lon\":108.57},{\"name\":\"Pueblo\",\"tz\":-7,\"lat\":38.25,\"lon\":104.62},{\"name\":\"Brazzaville\",\"tz\":1,\"lat\":-4.13,\"lon\":-15.13},{\"name\":\"Bridgeport\",\"tz\":-5,\"lat\":41.18,\"lon\":73.18},{\"name\":\"Abidjan\",\"tz\":0,\"lat\":5.18,\"lon\":4.02},{\"name\":\"Wilmington, Delaware\",\"tz\":-5,\"lat\":39.75,\"lon\":75.55},{\"name\":\"Quito\",\"tz\":-5,\"lat\":-0.28,\"lon\":78.52},{\"name\":\"Daytona Beach, FL\",\"tz\":-5,\"lat\":29.22,\"lon\":81.02},{\"name\":\"Gainesville, FL\",\"tz\":-5,\"lat\":29.65,\"lon\":82.32},{\"name\":\"Key West, FL\",\"tz\":-5,\"lat\":24.57,\"lon\":81.8},{\"name\":\"Pensacola, FL\",\"tz\":-5,\"lat\":30.42,\"lon\":87.22},{\"name\":\"St. Petersburg, FL\",\"tz\":-5,\"lat\":27.78,\"lon\":82.63},{\"name\":\"Sarasota, FL\",\"tz\":-5,\"lat\":27.33,\"lon\":82.55},{\"name\":\"Tallahassee, FL\",\"tz\":-5,\"lat\":30.45,\"lon\":84.45},{\"name\":\"W. Palm Beach, FL\",\"tz\":-5,\"lat\":26.72,\"lon\":80.05},{\"name\":\"Libreville\",\"tz\":1,\"lat\":0.23,\"lon\":-9.25},{\"name\":\"Banjul\",\"tz\":0,\"lat\":13.28,\"lon\":16.38},{\"name\":\"Augusta, Georgia\",\"tz\":-5,\"lat\":33.47,\"lon\":81.97},{\"name\":\"Columbus, Georgia\",\"tz\":-5,\"lat\":32.47,\"lon\":84.98},{\"name\":\"Macon, Georgia\",\"tz\":-5,\"lat\":32.83,\"lon\":83.63},{\"name\":\"Savannah, Georgia\",\"tz\":-5,\"lat\":32.07,\"lon\":81.1},{\"name\":\"Accra\",\"tz\":0,\"lat\":5.33,\"lon\":0.15},{\"name\":\"Conakry\",\"tz\":0,\"lat\":9.32,\"lon\":-13.17},{\"name\":\"Hilo\",\"tz\":10,\"lat\":19.73,\"lon\":155.08},{\"name\":\"Lihue\",\"tz\":10,\"lat\":21.98,\"lon\":159.37},{\"name\":\"Victoria, Hongkong\",\"tz\":8,\"lat\":22.17,\"lon\":-114.3},{\"name\":\"Reykjavik\",\"tz\":0,\"lat\":64.15,\"lon\":21.65},{\"name\":\"Boise, Idaho\",\"tz\":-7,\"lat\":43.62,\"lon\":116.2},{\"name\":\"Pocatello, Idaho\",\"tz\":-7,\"lat\":42.87,\"lon\":112.45},{\"name\":\"Bloomington, IL\",\"tz\":-6,\"lat\":40.48,\"lon\":89},{\"name\":\"Champaign, IL\",\"tz\":-6,\"lat\":40.12,\"lon\":88.25},{\"name\":\"Decatur, IL\",\"tz\":-6,\"lat\":39.85,\"lon\":88.95},{\"name\":\"Moline, IL\",\"tz\":-6,\"lat\":41.52,\"lon\":90.52},{\"name\":\"Rockford, IL\",\"tz\":-6,\"lat\":42.27,\"lon\":89.1},{\"name\":\"Springfield, IL\",\"tz\":-6,\"lat\":39.78,\"lon\":89.65},{\"name\":\"Urbana, IL\",\"tz\":-6,\"lat\":40.12,\"lon\":88.2},{\"name\":\"Evansville, Indiana\",\"tz\":-6,\"lat\":37.97,\"lon\":87.57},{\"name\":\"Ft. Wayne, Indiana\",\"tz\":-6,\"lat\":41.07,\"lon\":85.13},{\"name\":\"Gary, Indiana\",\"tz\":-6,\"lat\":41.62,\"lon\":87.33},{\"name\":\"Lafayette, Indiana\",\"tz\":-6,\"lat\":40.42,\"lon\":86.9},{\"name\":\"Muncie, Indiana\",\"tz\":-6,\"lat\":40.18,\"lon\":85.38},{\"name\":\"South Bend, Indiana\",\"tz\":-6,\"lat\":41.68,\"lon\":86.25},{\"name\":\"Terre Houte, Indiana\",\"tz\":-6,\"lat\":39.47,\"lon\":87.4},{\"name\":\"Cedar Rapids, IA\",\"tz\":-6,\"lat\":41.97,\"lon\":91.67},{\"name\":\"Davenport, IA\",\"tz\":-6,\"lat\":41.52,\"lon\":90.58},{\"name\":\"Dubuque, IA\",\"tz\":-6,\"lat\":42.5,\"lon\":90.67},{\"name\":\"Iowa City, IA\",\"tz\":-6,\"lat\":41.67,\"lon\":91.53},{\"name\":\"Sioux City, IA\",\"tz\":-6,\"lat\":42.5,\"lon\":96.42},{\"name\":\"Waterloo, IA\",\"tz\":-6,\"lat\":42.5,\"lon\":92.33},{\"name\":\"Dodge City (Kans., US)\",\"tz\":-6,\"lat\":37.75,\"lon\":100.02},{\"name\":\"Salina (Kans., US)\",\"tz\":-6,\"lat\":38.85,\"lon\":97.62},{\"name\":\"Wichita (Kans., US)\",\"tz\":-6,\"lat\":37.7,\"lon\":97.33},{\"name\":\"Ashland, KY\",\"tz\":-5,\"lat\":38.48,\"lon\":82.63},{\"name\":\"Bowling Green, KY\",\"tz\":-5,\"lat\":37,\"lon\":86.45},{\"name\":\"Lexington, KY\",\"tz\":-5,\"lat\":38.05,\"lon\":84.5},{\"name\":\"Paducah, KY\",\"tz\":-5,\"lat\":37.07,\"lon\":88.6},{\"name\":\"Maseru\",\"tz\":2,\"lat\":-29.18,\"lon\":-27.28},{\"name\":\"Monrovia\",\"tz\":0,\"lat\":6.2,\"lon\":10.47},{\"name\":\"Tripoli\",\"tz\":1,\"lat\":32.83,\"lon\":-13.22},{\"name\":\"Baton Rouge, Louisiana\",\"tz\":-6,\"lat\":30.45,\"lon\":91.18},{\"name\":\"Shreveport, Louisiana\",\"tz\":-6,\"lat\":32.52,\"lon\":93.75},{\"name\":\"Antananarivo\",\"tz\":3,\"lat\":-18.5,\"lon\":-47.3},{\"name\":\"Augusta, Maine\",\"tz\":-5,\"lat\":44.32,\"lon\":69.75},{\"name\":\"Bangor, Maine\",\"tz\":-5,\"lat\":44.8,\"lon\":68.75},{\"name\":\"Lilongwe\",\"tz\":2,\"lat\":-13.58,\"lon\":-33.48},{\"name\":\"Bamako\",\"tz\":0,\"lat\":12.4,\"lon\":7.58},{\"name\":\"Brockton, MA\",\"tz\":-5,\"lat\":42.08,\"lon\":71.02},{\"name\":\"Cambridge, MA\",\"tz\":-5,\"lat\":42.37,\"lon\":71.1},{\"name\":\"Fall River, MA\",\"tz\":-5,\"lat\":41.7,\"lon\":71.15},{\"name\":\"Holyoke, MA\",\"tz\":-5,\"lat\":42.2,\"lon\":72.62},{\"name\":\"Lawrence, MA\",\"tz\":-5,\"lat\":42.7,\"lon\":71.15},{\"name\":\"Lowell, MA\",\"tz\":-5,\"lat\":42.63,\"lon\":71.32},{\"name\":\"Pittsfield, MA\",\"tz\":-5,\"lat\":42.45,\"lon\":73.25},{\"name\":\"Somerville, MA\",\"tz\":-5,\"lat\":42.38,\"lon\":71.1},{\"name\":\"Worcester, MA\",\"tz\":-5,\"lat\":42.27,\"lon\":71.8},{\"name\":\"Nouakchott\",\"tz\":0,\"lat\":18.08,\"lon\":15.58},{\"name\":\"Battle Creek, MI\",\"tz\":-5,\"lat\":42.32,\"lon\":85.18},{\"name\":\"Bay City, MI\",\"tz\":-5,\"lat\":43.6,\"lon\":83.88},{\"name\":\"Flint, MI\",\"tz\":-5,\"lat\":43.02,\"lon\":83.7},{\"name\":\"Grand Rapids, MI\",\"tz\":-5,\"lat\":42.97,\"lon\":85.67},{\"name\":\"Jackson, MI\",\"tz\":-5,\"lat\":42.25,\"lon\":84.4},{\"name\":\"Kalamazoo, MI\",\"tz\":-5,\"lat\":42.28,\"lon\":85.58},{\"name\":\"Lansing, MI\",\"tz\":-5,\"lat\":42.73,\"lon\":84.55},{\"name\":\"Saginaw, MI\",\"tz\":-5,\"lat\":43.43,\"lon\":83.93},{\"name\":\"Duluth, Minnesota\",\"tz\":-6,\"lat\":46.78,\"lon\":92.1},{\"name\":\"Rochester, Minnesota\",\"tz\":-6,\"lat\":44.02,\"lon\":92.47},{\"name\":\"St. Cloud, Minnesota\",\"tz\":-6,\"lat\":45.57,\"lon\":94.17},{\"name\":\"St. Paul, Minnesota\",\"tz\":-6,\"lat\":44.95,\"lon\":93.1},{\"name\":\"Biloxi, Mississippi\",\"tz\":-6,\"lat\":30.4,\"lon\":88.88},{\"name\":\"Gulfport, Mississippi\",\"tz\":-6,\"lat\":30.37,\"lon\":89.1},{\"name\":\"Jackson, Mississippi\",\"tz\":-6,\"lat\":32.3,\"lon\":90.18},{\"name\":\"Natchez, Mississippi\",\"tz\":-6,\"lat\":31.57,\"lon\":91.38},{\"name\":\"Columbia, Missouri\",\"tz\":-6,\"lat\":38.95,\"lon\":92.33},{\"name\":\"Joplin, Missouri\",\"tz\":-6,\"lat\":37.07,\"lon\":94.5},{\"name\":\"Kansas City, Missouri\",\"tz\":-6,\"lat\":39.07,\"lon\":94.58},{\"name\":\"St. Joseph, Missouri\",\"tz\":-6,\"lat\":39.77,\"lon\":94.85},{\"name\":\"St. Louis, Missouri\",\"tz\":-6,\"lat\":38.63,\"lon\":90.2},{\"name\":\"Springfield, Missouri\",\"tz\":-6,\"lat\":37.22,\"lon\":93.3},{\"name\":\"Billings, Montana\",\"tz\":-7,\"lat\":45.78,\"lon\":108.5},{\"name\":\"Butte, Montana\",\"tz\":-7,\"lat\":46.02,\"lon\":112.53},{\"name\":\"Great Falls, Montana\",\"tz\":-7,\"lat\":47.5,\"lon\":111.3},{\"name\":\"Helena, Montana\",\"tz\":-7,\"lat\":46.6,\"lon\":112.03},{\"name\":\"Rabat\",\"tz\":1,\"lat\":34.02,\"lon\":6.52},{\"name\":\"Maputo\",\"tz\":2,\"lat\":-25.58,\"lon\":-32.35},{\"name\":\"Windhoek\",\"tz\":2,\"lat\":-22.33,\"lon\":-17.07},{\"name\":\"Lincoln, Nebraska\",\"tz\":-6,\"lat\":40.82,\"lon\":96.7},{\"name\":\"Carson City, NV\",\"tz\":-8,\"lat\":39.17,\"lon\":119.77},{\"name\":\"Reno, NV\",\"tz\":-8,\"lat\":39.52,\"lon\":119.82},{\"name\":\"Concord, New Hampshire\",\"tz\":-5,\"lat\":43.2,\"lon\":71.52},{\"name\":\"Manchester, New Hampshire\",\"tz\":-5,\"lat\":42.98,\"lon\":71.47},{\"name\":\"Portsmouth, New Hampshire\",\"tz\":-5,\"lat\":43.07,\"lon\":70.75},{\"name\":\"Atlantic City, NJ\",\"tz\":-5,\"lat\":39.37,\"lon\":74.43},{\"name\":\"Camdon, NJ\",\"tz\":-5,\"lat\":39.95,\"lon\":75.1},{\"name\":\"Jersey City, NJ\",\"tz\":-5,\"lat\":40.73,\"lon\":74.07},{\"name\":\"Paterson, NJ\",\"tz\":-5,\"lat\":40.9,\"lon\":74.15},{\"name\":\"Trenton, NJ\",\"tz\":-5,\"lat\":40.22,\"lon\":74.8},{\"name\":\"Albuquerque, NM\",\"tz\":-7,\"lat\":35.07,\"lon\":106.65},{\"name\":\"Gallup, NM\",\"tz\":-7,\"lat\":35.52,\"lon\":108.73},{\"name\":\"Santa Fe, NM\",\"tz\":-7,\"lat\":35.67,\"lon\":105.93},{\"name\":\"Albany, NY\",\"tz\":-5,\"lat\":42.65,\"lon\":73.75},{\"name\":\"Binghamton, NY\",\"tz\":-5,\"lat\":42.1,\"lon\":86.82},{\"name\":\"Buffalo, NY\",\"tz\":-5,\"lat\":42.88,\"lon\":78.87},{\"name\":\"Central Islip, NY\",\"tz\":-5,\"lat\":40.78,\"lon\":73.2},{\"name\":\"Niagra Falls, NY\",\"tz\":-5,\"lat\":43.1,\"lon\":79.05},{\"name\":\"Rochester, NY\",\"tz\":-5,\"lat\":43.17,\"lon\":77.6},{\"name\":\"Schenectady, NY\",\"tz\":-5,\"lat\":42.82,\"lon\":73.93},{\"name\":\"Syracuse, NY\",\"tz\":-5,\"lat\":43.05,\"lon\":76.15},{\"name\":\"Troy, NY\",\"tz\":-5,\"lat\":42.73,\"lon\":73.68},{\"name\":\"Utica, NY\",\"tz\":-5,\"lat\":43.1,\"lon\":75.23},{\"name\":\"White Plains, NY\",\"tz\":-5,\"lat\":41.03,\"lon\":73.75},{\"name\":\"Yonkers, NY\",\"tz\":-5,\"lat\":40.93,\"lon\":73.9},{\"name\":\"Auckland\",\"tz\":12,\"lat\":-36.88,\"lon\":-174.75},{\"name\":\"Niamey\",\"tz\":1,\"lat\":13.32,\"lon\":-2.03},{\"name\":\"Lagos\",\"tz\":1,\"lat\":6.27,\"lon\":-3.28},{\"name\":\"Ashlville, NC\",\"tz\":-5,\"lat\":35.6,\"lon\":82.55},{\"name\":\"Durham, NC\",\"tz\":-5,\"lat\":36,\"lon\":78.92},{\"name\":\"Greensboro, NC\",\"tz\":-5,\"lat\":36.07,\"lon\":79.78},{\"name\":\"Wilmington, NC\",\"tz\":-5,\"lat\":34.23,\"lon\":77.93},{\"name\":\"Winston Salem, NC\",\"tz\":-5,\"lat\":36.1,\"lon\":80.25},{\"name\":\"Bismark, N. Dakota\",\"tz\":-7,\"lat\":46.8,\"lon\":100.78},{\"name\":\"Fargo, N. Dakota\",\"tz\":-7,\"lat\":46.88,\"lon\":96.78},{\"name\":\"Minot, N. Dakota\",\"tz\":-7,\"lat\":48.23,\"lon\":101.3},{\"name\":\"Akron, OH\",\"tz\":-5,\"lat\":41.08,\"lon\":81.52},{\"name\":\"Dayton, OH\",\"tz\":-5,\"lat\":39.77,\"lon\":84.2},{\"name\":\"Hamilton, OH\",\"tz\":-5,\"lat\":39.4,\"lon\":84.57},{\"name\":\"Lima, OH\",\"tz\":-5,\"lat\":40.75,\"lon\":84.1},{\"name\":\"Lorain, OH\",\"tz\":-5,\"lat\":41.47,\"lon\":82.18},{\"name\":\"Springfield, OH\",\"tz\":-5,\"lat\":39.95,\"lon\":83.8},{\"name\":\"Stuebenville, OH\",\"tz\":-5,\"lat\":40.37,\"lon\":80.62},{\"name\":\"Toledo, OH\",\"tz\":-5,\"lat\":41.65,\"lon\":83.55},{\"name\":\"Youngstown, OH\",\"tz\":-5,\"lat\":41.1,\"lon\":80.65},{\"name\":\"Zanesville, OH\",\"tz\":-5,\"lat\":39.93,\"lon\":82.52},{\"name\":\"Enid, Oklahoma\",\"tz\":-6,\"lat\":36.4,\"lon\":97.88},{\"name\":\"Oklahoma City\",\"tz\":-6,\"lat\":35.47,\"lon\":97.52},{\"name\":\"Tulsa, Oklahoma\",\"tz\":-6,\"lat\":36.15,\"lon\":96},{\"name\":\"Eugene (Oreg, US)\",\"tz\":-8,\"lat\":44.05,\"lon\":123.1},{\"name\":\"Salem (Oreg, US)\",\"tz\":-8,\"lat\":44.93,\"lon\":123.03},{\"name\":\"Altonna, Pennsylvania\",\"tz\":-5,\"lat\":40.52,\"lon\":78.38},{\"name\":\"Bethlehem, Pennsylvania\",\"tz\":-5,\"lat\":40.6,\"lon\":75.38},{\"name\":\"Erie, Pennsylvania\",\"tz\":-5,\"lat\":42.12,\"lon\":80.08},{\"name\":\"Harrisburg, Pennsylvania\",\"tz\":-5,\"lat\":40.25,\"lon\":76.88},{\"name\":\"Johnstown, Pennsylvania\",\"tz\":-5,\"lat\":40.33,\"lon\":78.92},{\"name\":\"Lancaster, Pennsylvania\",\"tz\":-5,\"lat\":40.03,\"lon\":76.3},{\"name\":\"Reading, Pennsylvania\",\"tz\":-5,\"lat\":40.33,\"lon\":75.93},{\"name\":\"Scranton, Pennsylvania\",\"tz\":-5,\"lat\":41.42,\"lon\":75.67},{\"name\":\"WilkesEBarre, Pennsylvania\",\"tz\":-5,\"lat\":41.25,\"lon\":75.88},{\"name\":\"York, Pennsylvania\",\"tz\":-5,\"lat\":39.97,\"lon\":76.73},{\"name\":\"Manila\",\"tz\":8,\"lat\":14.62,\"lon\":-121},{\"name\":\"Kigali\",\"tz\":2,\"lat\":-1.57,\"lon\":-3.03},{\"name\":\"Dakar\",\"tz\":0,\"lat\":14.38,\"lon\":17.27},{\"name\":\"Mogadishu\",\"tz\":3,\"lat\":2,\"lon\":-45.22},{\"name\":\"Columbia, SC\",\"tz\":-5,\"lat\":34,\"lon\":81.03},{\"name\":\"Greenville, SC\",\"tz\":-5,\"lat\":34.85,\"lon\":82.4},{\"name\":\"Spartanburg, SC\",\"tz\":-5,\"lat\":34.95,\"lon\":81.93},{\"name\":\"Pierre, South Dakota\",\"tz\":-6,\"lat\":44.37,\"lon\":100.35},{\"name\":\"Rapid City, South Dakota\",\"tz\":-6,\"lat\":44.08,\"lon\":103.22},{\"name\":\"Sioux Falls, South Dakota\",\"tz\":-6,\"lat\":43.55,\"lon\":96.73},{\"name\":\"Khartoum\",\"tz\":2,\"lat\":15.33,\"lon\":-32.22},{\"name\":\"Daressalam\",\"tz\":3,\"lat\":-6.52,\"lon\":-39.18},{\"name\":\"Chattanooga (Tenn., US)\",\"tz\":-6,\"lat\":35.05,\"lon\":85.32},{\"name\":\"Knoxville (Tenn., US)\",\"tz\":-6,\"lat\":35.97,\"lon\":83.92},{\"name\":\"Abilene, TX\",\"tz\":-6,\"lat\":32.45,\"lon\":99.73},{\"name\":\"Amarillo, TX\",\"tz\":-6,\"lat\":35.18,\"lon\":101.83},{\"name\":\"Austin, TX\",\"tz\":-6,\"lat\":30.27,\"lon\":97.75},{\"name\":\"Beaumont, TX\",\"tz\":-6,\"lat\":30.08,\"lon\":94.1},{\"name\":\"Brownsville, TX\",\"tz\":-6,\"lat\":25.9,\"lon\":97.5},{\"name\":\"Corpus Christi, TX\",\"tz\":-6,\"lat\":27.8,\"lon\":97.4},{\"name\":\"El Paso, TX\",\"tz\":-6,\"lat\":31.77,\"lon\":106.48},{\"name\":\"Ft Worth, TX\",\"tz\":-6,\"lat\":32.75,\"lon\":97.33},{\"name\":\"Galveston, TX\",\"tz\":-6,\"lat\":29.3,\"lon\":94.8},{\"name\":\"Laredo, TX\",\"tz\":-6,\"lat\":27.5,\"lon\":99.52},{\"name\":\"Lubbock, TX\",\"tz\":-6,\"lat\":33.58,\"lon\":101.85},{\"name\":\"Marshall, TX\",\"tz\":-6,\"lat\":32.55,\"lon\":94.38},{\"name\":\"Port Arthur, TX\",\"tz\":-6,\"lat\":29.88,\"lon\":93.93},{\"name\":\"San Angelo, TX\",\"tz\":-6,\"lat\":31.47,\"lon\":100.43},{\"name\":\"Texarkana, TX\",\"tz\":-6,\"lat\":33.43,\"lon\":94.05},{\"name\":\"Waco, TX\",\"tz\":-6,\"lat\":31.55,\"lon\":97.13},{\"name\":\"Lhasa\",\"tz\":8,\"lat\":29.68,\"lon\":-92.2},{\"name\":\"Lome\",\"tz\":0,\"lat\":6.1,\"lon\":-1.2},{\"name\":\"Tunis\",\"tz\":1,\"lat\":36.48,\"lon\":-10.13},{\"name\":\"Kampala\",\"tz\":3,\"lat\":0.2,\"lon\":-32.35},{\"name\":\"Logan, Utah\",\"tz\":-7,\"lat\":41.73,\"lon\":111.83},{\"name\":\"Ogden, Utah\",\"tz\":-7,\"lat\":41.23,\"lon\":111.97},{\"name\":\"Provo, Utah\",\"tz\":-7,\"lat\":40.23,\"lon\":111.65},{\"name\":\"Brattleboro, VT\",\"tz\":-5,\"lat\":42.85,\"lon\":72.57},{\"name\":\"Montpelier, VT\",\"tz\":-5,\"lat\":44.27,\"lon\":72.55},{\"name\":\"Hanoi\",\"tz\":7,\"lat\":21.07,\"lon\":-105.83},{\"name\":\"Norfolk, Virginia\",\"tz\":-5,\"lat\":36.85,\"lon\":76.28},{\"name\":\"Portsmouth, Virginia\",\"tz\":-5,\"lat\":36.83,\"lon\":76.28},{\"name\":\"Richmond, Virginia\",\"tz\":-5,\"lat\":37.53,\"lon\":77.43},{\"name\":\"Roanooke, Virginia\",\"tz\":-5,\"lat\":37.25,\"lon\":79.93},{\"name\":\"Bellingham, WA\",\"tz\":-8,\"lat\":48.77,\"lon\":122.48},{\"name\":\"Spokane, WA\",\"tz\":-8,\"lat\":47.67,\"lon\":117.43},{\"name\":\"Tacoma, WA\",\"tz\":-8,\"lat\":47.25,\"lon\":122.43},{\"name\":\"Walla Walla, WA\",\"tz\":-8,\"lat\":46.07,\"lon\":118.33},{\"name\":\"Yakima, WA\",\"tz\":-8,\"lat\":46.6,\"lon\":120.52},{\"name\":\"Laayoune\",\"tz\":1,\"lat\":27.1,\"lon\":13.12},{\"name\":\"Charleston, West Virginia\",\"tz\":-5,\"lat\":38.35,\"lon\":81.63},{\"name\":\"Huntington, West Virginia\",\"tz\":-5,\"lat\":38.42,\"lon\":82.45},{\"name\":\"Wheeling, West Virginia\",\"tz\":-5,\"lat\":40.07,\"lon\":80.72},{\"name\":\"Eau Claire (Wis., US)\",\"tz\":-6,\"lat\":44.82,\"lon\":91.5},{\"name\":\"Green Bay (Wis., US)\",\"tz\":-6,\"lat\":44.52,\"lon\":88.02},{\"name\":\"Kenosha (Wis., US)\",\"tz\":-6,\"lat\":42.6,\"lon\":87.83},{\"name\":\"Racine (Wis., US)\",\"tz\":-6,\"lat\":42.73,\"lon\":87.78},{\"name\":\"Sheboygan (Wis., US)\",\"tz\":-6,\"lat\":43.75,\"lon\":87.72},{\"name\":\"Superior (Wis., US)\",\"tz\":-6,\"lat\":46.72,\"lon\":92.1},{\"name\":\"Cheyenne, Wyoming\",\"tz\":-7,\"lat\":41.13,\"lon\":104.82},{\"name\":\"Sheridan, Wyoming\",\"tz\":-7,\"lat\":44.8,\"lon\":106.95},{\"name\":\"Lusaka\",\"tz\":2,\"lat\":-15.28,\"lon\":-28.17},{\"name\":\"Kinshasa\",\"tz\":1,\"lat\":-4.18,\"lon\":-15.18},{\"name\":\"Harare\",\"tz\":2,\"lat\":-17.5,\"lon\":-31.03},{\"name\":\"Abu Dhabi\",\"tz\":4,\"lat\":24.33,\"lon\":-54.57},{\"name\":\"Acapulco\",\"tz\":-6,\"lat\":17.08,\"lon\":100.13},{\"name\":\"Agana, Guam\",\"tz\":10,\"lat\":13.48,\"lon\":-144.73},{\"name\":\"Al-Manamah, Bharain\",\"tz\":3,\"lat\":26.22,\"lon\":-50.55},{\"name\":\"Andorra, Spain\",\"tz\":1,\"lat\":40.97,\"lon\":0.47},{\"name\":\"Asmara, Eritrea\",\"tz\":3,\"lat\":15.02,\"lon\":-38.48},{\"name\":\"Baku, Aserbaidschan\",\"tz\":4,\"lat\":40.35,\"lon\":-49.82},{\"name\":\"Bergen, The Netherlands\",\"tz\":1,\"lat\":51.62,\"lon\":-6.07},{\"name\":\"Bischkek, Kirgistan\",\"tz\":6,\"lat\":43.02,\"lon\":-74.97},{\"name\":\"Bridgetown (Barbados)\",\"tz\":-4,\"lat\":13.08,\"lon\":59.47},{\"name\":\"Brno\",\"tz\":1,\"lat\":49.2,\"lon\":-16.58},{\"name\":\"Broken Hill, Australia\",\"tz\":10,\"lat\":-31.87,\"lon\":-141.17},{\"name\":\"Bukavu, Zaire\",\"tz\":2,\"lat\":-2.55,\"lon\":-28.65},{\"name\":\"Kanarische Inseln\",\"tz\":0,\"lat\":28.47,\"lon\":15.05},{\"name\":\"Cayenne (French - Guyana)\",\"tz\":-3,\"lat\":4.78,\"lon\":-52.47},{\"name\":\"Cebu, Phillipines\",\"tz\":8,\"lat\":10.18,\"lon\":-123.75},{\"name\":\"Cordoba, Spain\",\"tz\":1,\"lat\":57.87,\"lon\":4.83},{\"name\":\"Cordoba, Argentinia\",\"tz\":-3,\"lat\":-31.15,\"lon\":64.25},{\"name\":\"Cordova, Alaska, U.S.A.\",\"tz\":-9,\"lat\":60.55,\"lon\":145.73},{\"name\":\"Dalian, China\",\"tz\":8,\"lat\":38.9,\"lon\":-121.65},{\"name\":\"Dakar, Senegal\",\"tz\":0,\"lat\":14.78,\"lon\":16.95},{\"name\":\"Dhaka, Bangladesh\",\"tz\":6,\"lat\":23.48,\"lon\":-90.4},{\"name\":\"Durban, South Africa\",\"tz\":2,\"lat\":-29.87,\"lon\":-30.9},{\"name\":\"Dushanbe, Tadschikistan\",\"tz\":6,\"lat\":38.6,\"lon\":-69.1},{\"name\":\"Er Riad\",\"tz\":3,\"lat\":24.65,\"lon\":-46.7},{\"name\":\"Firenze, Italy\",\"tz\":1,\"lat\":43.77,\"lon\":-11.23},{\"name\":\"Freetown, Sierra Leone\",\"tz\":0,\"lat\":8.5,\"lon\":13.22},{\"name\":\"Georgetown, Gambia\",\"tz\":0,\"lat\":13.22,\"lon\":14.75},{\"name\":\"Guatemala City\",\"tz\":-6,\"lat\":14.58,\"lon\":90.67},{\"name\":\"Hermosillo, Mexico\",\"tz\":-6,\"lat\":29.18,\"lon\":110.98},{\"name\":\"Jakarta, Indonesia\",\"tz\":7,\"lat\":-6.28,\"lon\":-106.65},{\"name\":\"Katmandu, Nepal\",\"tz\":6,\"lat\":27.67,\"lon\":-85.47},{\"name\":\"Khabarovsk, Russia\",\"tz\":10,\"lat\":48.07,\"lon\":-134.63},{\"name\":\"Khartoum, Sudan\",\"tz\":2,\"lat\":15.23,\"lon\":-32.57},{\"name\":\"La Paz, Argentinia\",\"tz\":-3,\"lat\":-30.75,\"lon\":59.67},{\"name\":\"La Plata, Argentinia\",\"tz\":-3,\"lat\":-34.97,\"lon\":57.97},{\"name\":\"Limerick, Ireland\",\"tz\":0,\"lat\":52.7,\"lon\":8.67},{\"name\":\"Macao, China\",\"tz\":8,\"lat\":22.22,\"lon\":-113.6},{\"name\":\"Managua, Nikaragva\",\"tz\":-6,\"lat\":12.15,\"lon\":86.32},{\"name\":\"Manaus\",\"tz\":-4,\"lat\":-2.87,\"lon\":60.12},{\"name\":\"Maracaibo, Venezuela\",\"tz\":-4,\"lat\":10.52,\"lon\":71.97},{\"name\":\"Mbabane, Swasiland\",\"tz\":2,\"lat\":-26.07,\"lon\":-31.15},{\"name\":\"Monte Carlo, Monaco\",\"tz\":1,\"lat\":43.73,\"lon\":-7.42},{\"name\":\"Nassau, Germany\",\"tz\":1,\"lat\":50.32,\"lon\":-7.8},{\"name\":\"Nandi, Simbabwe\",\"tz\":2,\"lat\":-20.98,\"lon\":-31.78},{\"name\":\"Nantes, France\",\"tz\":1,\"lat\":47.23,\"lon\":1.48},{\"name\":\"Noumea, New Caledonia\",\"tz\":11,\"lat\":-22.12,\"lon\":-166.5},{\"name\":\"Nizhniy Novgorod\",\"tz\":4,\"lat\":56.33,\"lon\":-44.17},{\"name\":\"Odense, Denmark\",\"tz\":1,\"lat\":55.43,\"lon\":10.3},{\"name\":\"Osaka, Japan\",\"tz\":9,\"lat\":34.75,\"lon\":-135.47},{\"name\":\"Paramaribo, Surinam\",\"tz\":-3,\"lat\":5.77,\"lon\":55.25},{\"name\":\"Phnom Penh, Kambodscha\",\"tz\":7,\"lat\":11.53,\"lon\":-104.78},{\"name\":\"Port Au Prince, Haiti\",\"tz\":-5,\"lat\":18.57,\"lon\":72.33},{\"name\":\"Port Louis, Mauritius\",\"tz\":4,\"lat\":-20.15,\"lon\":-57.5},{\"name\":\"Port Moresby, Papua-Neuguinea\",\"tz\":10,\"lat\":-9.43,\"lon\":-147},{\"name\":\"Port Said, Egypt\",\"tz\":2,\"lat\":30.9,\"lon\":-32.07},{\"name\":\"Pretoria, South Africa\",\"tz\":2,\"lat\":-25.63,\"lon\":-28.33},{\"name\":\"San Salvador, El Salvador\",\"tz\":-6,\"lat\":13.98,\"lon\":89.18},{\"name\":\"Santo Domingo, Dominican Republic\",\"tz\":-4,\"lat\":18.5,\"lon\":69.93},{\"name\":\"Suez, Egypt\",\"tz\":2,\"lat\":29.97,\"lon\":-32.55},{\"name\":\"Szeged, Hungary\",\"tz\":1,\"lat\":46.32,\"lon\":-20.08},{\"name\":\"Tahiti, Polynesia\",\"tz\":-10,\"lat\":-18.3,\"lon\":149.43},{\"name\":\"Tegucigalpa, Honduras\",\"tz\":-6,\"lat\":14.28,\"lon\":87.4},{\"name\":\"Thessalonikia, Greece\",\"tz\":2,\"lat\":40.65,\"lon\":-23.02},{\"name\":\"Thimbu, Bhutan\",\"tz\":6,\"lat\":27.47,\"lon\":-89.63},{\"name\":\"Tirana, Albania\",\"tz\":1,\"lat\":41.35,\"lon\":-19.8},{\"name\":\"Tijuana, Mexico\",\"tz\":-6,\"lat\":32.48,\"lon\":117.03},{\"name\":\"Ulan Bator, Mongolia\",\"tz\":8,\"lat\":47.45,\"lon\":-106.4},{\"name\":\"Vaduz, Liechtenstein\",\"tz\":1,\"lat\":47.13,\"lon\":-9.53},{\"name\":\"Vientiane, Laos\",\"tz\":7,\"lat\":17.88,\"lon\":-102.63},{\"name\":\"Wellington, New Zealand\",\"tz\":12,\"lat\":-41.3,\"lon\":-174.98},{\"name\":\"Yerevan, Armenia\",\"tz\":4,\"lat\":39.93,\"lon\":-44.75},{\"name\":\"Towson, MD\",\"tz\":-5,\"lat\":39.28,\"lon\":76.62},{\"name\":\"Florina\",\"tz\":2,\"lat\":40.78,\"lon\":-21.42},{\"name\":\"Kishinew, Moldova\",\"tz\":2,\"lat\":47,\"lon\":-28.83},{\"name\":\"Belts, Moldova\",\"tz\":2,\"lat\":47.75,\"lon\":-27.92},{\"name\":\"Bendery, Moldova\",\"tz\":2,\"lat\":46.83,\"lon\":-29.47},{\"name\":\"Cahul, Moldova\",\"tz\":2,\"lat\":45.9,\"lon\":-28.2},{\"name\":\"Taraclia, Moldova\",\"tz\":2,\"lat\":45.9,\"lon\":-28.68},{\"name\":\"Alexandria, Greece\",\"tz\":2,\"lat\":40.63,\"lon\":-22.52},{\"name\":\"Chalkis, Greece\",\"tz\":2,\"lat\":38.47,\"lon\":-23.6},{\"name\":\"Drama, Greece\",\"tz\":2,\"lat\":41.15,\"lon\":-24.17},{\"name\":\"Kilkis, Greece\",\"tz\":2,\"lat\":41,\"lon\":-22.9},{\"name\":\"Larissa, Greece\",\"tz\":2,\"lat\":39.63,\"lon\":-22.42},{\"name\":\"Thessaloniki, Greece\",\"tz\":2,\"lat\":40.63,\"lon\":-22.97},{\"name\":\"Äli Bayramli, Aserbaidschan\",\"tz\":4,\"lat\":39.93,\"lon\":-48.92},{\"name\":\"Puta, Aserbaidschan\",\"tz\":4,\"lat\":40.3,\"lon\":-49.68},{\"name\":\"Sumqayit, Aserbaidschan\",\"tz\":4,\"lat\":40.6,\"lon\":-49.75},{\"name\":\"Siyäzän, Aserbaidschan\",\"tz\":4,\"lat\":41.07,\"lon\":-49.1},{\"name\":\"Decin\",\"tz\":1,\"lat\":50.8,\"lon\":-14.22},{\"name\":\"Karlovy Vary\",\"tz\":1,\"lat\":50.18,\"lon\":-12.87},{\"name\":\"Zilina\",\"tz\":1,\"lat\":49.23,\"lon\":-18.77},{\"name\":\"Appenweier\",\"tz\":1,\"lat\":48.53,\"lon\":-7.97},{\"name\":\"Denzlingen\",\"tz\":1,\"lat\":48.07,\"lon\":-7.87},{\"name\":\"Ettenheim\",\"tz\":1,\"lat\":48.25,\"lon\":-7.82},{\"name\":\"Kehl\",\"tz\":1,\"lat\":48.58,\"lon\":-7.83},{\"name\":\"Kenzingen\",\"tz\":1,\"lat\":48.18,\"lon\":-7.77},{\"name\":\"Lahr\",\"tz\":1,\"lat\":48.33,\"lon\":-7.87},{\"name\":\"Oberkirch\",\"tz\":1,\"lat\":48.52,\"lon\":-8.08},{\"name\":\"Offenburg\",\"tz\":1,\"lat\":48.47,\"lon\":-7.95},{\"name\":\"Rust, Germany\",\"tz\":1,\"lat\":48.27,\"lon\":-7.72},{\"name\":\"Waldkirch\",\"tz\":1,\"lat\":48.08,\"lon\":-7.95},{\"name\":\"Königs Wusterhausen\",\"tz\":1,\"lat\":52.3,\"lon\":-13.62},{\"name\":\"Oderberg\",\"tz\":1,\"lat\":52.87,\"lon\":-14.03},{\"name\":\"Oranienburg\",\"tz\":1,\"lat\":52.75,\"lon\":-13.23},{\"name\":\"Schwedt/Oder\",\"tz\":1,\"lat\":53.05,\"lon\":-14.28},{\"name\":\"Harrow, United Kingdom\",\"tz\":0,\"lat\":51.58,\"lon\":0.37},{\"name\":\"Markkleeberg\",\"tz\":1,\"lat\":51.28,\"lon\":-12.38},{\"name\":\"Gap, France\",\"tz\":1,\"lat\":44.57,\"lon\":-6.08},{\"name\":\"Amiens, France\",\"tz\":1,\"lat\":49.9,\"lon\":-2.3},{\"name\":\"Angers, France\",\"tz\":1,\"lat\":47.47,\"lon\":0.55},{\"name\":\"Bischeim, France\",\"tz\":1,\"lat\":48.62,\"lon\":-7.75},{\"name\":\"Chambery, France\",\"tz\":1,\"lat\":45.57,\"lon\":-6.08},{\"name\":\"Deauville, France\",\"tz\":1,\"lat\":49.37,\"lon\":-0.07},{\"name\":\"Dieuze, France\",\"tz\":1,\"lat\":48.82,\"lon\":-6.72},{\"name\":\"Dunkerque, France\",\"tz\":1,\"lat\":51.05,\"lon\":-2.37},{\"name\":\"Elbeuf, France\",\"tz\":1,\"lat\":49.28,\"lon\":-1},{\"name\":\"Epernay, France\",\"tz\":1,\"lat\":49.05,\"lon\":-3.95},{\"name\":\"Epinal, France\",\"tz\":1,\"lat\":48.18,\"lon\":-6.45},{\"name\":\"Forbach, France\",\"tz\":1,\"lat\":49.18,\"lon\":-6.9},{\"name\":\"Ingwiller, France\",\"tz\":1,\"lat\":48.87,\"lon\":-7.48},{\"name\":\"Saint-Laurent-du-Var, France (1)\",\"tz\":1,\"lat\":45.38,\"lon\":-5.73},{\"name\":\"La Ciotat, France\",\"tz\":1,\"lat\":43.17,\"lon\":-5.6},{\"name\":\"Le Mans, France\",\"tz\":1,\"lat\":48,\"lon\":-0.2},{\"name\":\"Libourne, France\",\"tz\":1,\"lat\":44.92,\"lon\":0.23},{\"name\":\"Luneville, France\",\"tz\":1,\"lat\":48.6,\"lon\":-6.5},{\"name\":\"Marignane, France\",\"tz\":1,\"lat\":43.42,\"lon\":-5.22},{\"name\":\"Melun, France\",\"tz\":1,\"lat\":48.53,\"lon\":-2.67},{\"name\":\"Merlebach, France\",\"tz\":1,\"lat\":49.15,\"lon\":-6.8},{\"name\":\"Montauban, France\",\"tz\":1,\"lat\":44.02,\"lon\":-1.35},{\"name\":\"Montbeliard, France\",\"tz\":1,\"lat\":47.52,\"lon\":-6.8},{\"name\":\"Obernai, France\",\"tz\":1,\"lat\":48.47,\"lon\":-7.48},{\"name\":\"Pau, France\",\"tz\":1,\"lat\":43.3,\"lon\":0.37},{\"name\":\"Perigueux, France\",\"tz\":1,\"lat\":45.18,\"lon\":-0.72},{\"name\":\"Phalsbourg, France\",\"tz\":1,\"lat\":48.77,\"lon\":-7.27},{\"name\":\"Poitiers, France\",\"tz\":1,\"lat\":46.58,\"lon\":-0.33},{\"name\":\"Reims, France\",\"tz\":1,\"lat\":49.25,\"lon\":-4.02},{\"name\":\"Rennes, France\",\"tz\":1,\"lat\":48.08,\"lon\":1.68},{\"name\":\"Roanne, France\",\"tz\":1,\"lat\":46.03,\"lon\":-4.07},{\"name\":\"Saint-Avold, France\",\"tz\":1,\"lat\":49.1,\"lon\":-6.7},{\"name\":\"Saint-Die, France\",\"tz\":1,\"lat\":48.28,\"lon\":-6.95},{\"name\":\"Saint-Etienne, France\",\"tz\":1,\"lat\":45.43,\"lon\":-4.4},{\"name\":\"Saint-Fons, France\",\"tz\":1,\"lat\":45.7,\"lon\":-4.85},{\"name\":\"Saint-Laurent-du-Var, France (2)\",\"tz\":1,\"lat\":43.67,\"lon\":-7.18},{\"name\":\"Saint-Quentin, France\",\"tz\":1,\"lat\":49.85,\"lon\":-3.28},{\"name\":\"Sarrebourg, France\",\"tz\":1,\"lat\":48.73,\"lon\":-7.05},{\"name\":\"Sarreguemines, France\",\"tz\":1,\"lat\":49.1,\"lon\":-7.05},{\"name\":\"Saverne, France\",\"tz\":1,\"lat\":48.73,\"lon\":-7.37},{\"name\":\"Sedan, France\",\"tz\":1,\"lat\":49.7,\"lon\":-4.95},{\"name\":\"Selestat, France\",\"tz\":1,\"lat\":48.27,\"lon\":-7.45},{\"name\":\"Tarbes, France\",\"tz\":1,\"lat\":43.23,\"lon\":-0.08},{\"name\":\"Thionville, France\",\"tz\":1,\"lat\":49.37,\"lon\":-6.17},{\"name\":\"Toul, France\",\"tz\":1,\"lat\":48.68,\"lon\":-5.9},{\"name\":\"Toulon, France\",\"tz\":1,\"lat\":43.12,\"lon\":-5.93},{\"name\":\"Valence, France\",\"tz\":1,\"lat\":44.93,\"lon\":-4.9},{\"name\":\"Valenciennes, France\",\"tz\":1,\"lat\":50.35,\"lon\":-3.53},{\"name\":\"Venissieux, France\",\"tz\":1,\"lat\":54.68,\"lon\":-4.88},{\"name\":\"Verdun, France\",\"tz\":1,\"lat\":49.17,\"lon\":-5.38},{\"name\":\"Vichy, France\",\"tz\":1,\"lat\":46.13,\"lon\":-3.43},{\"name\":\"Berdicev, Ukraine\",\"tz\":2,\"lat\":49.9,\"lon\":-28.6},{\"name\":\"Bershad, Ukraine\",\"tz\":2,\"lat\":48.37,\"lon\":-29.53},{\"name\":\"Chernigov, Ukraine\",\"tz\":2,\"lat\":50.83,\"lon\":-24.13},{\"name\":\"Czernowitz, Chernovtsy, Ukraine\",\"tz\":2,\"lat\":48.28,\"lon\":-25.97},{\"name\":\"Dnepropetrovsk, Ukraine\",\"tz\":2,\"lat\":48.45,\"lon\":-35.03},{\"name\":\"Donetsk, Ukraine\",\"tz\":2,\"lat\":48,\"lon\":-37.78},{\"name\":\"Charkow, Ukraine\",\"tz\":2,\"lat\":49.92,\"lon\":-36.17},{\"name\":\"Cherson, Ukraine\",\"tz\":2,\"lat\":46.65,\"lon\":-32.6},{\"name\":\"Korosten, Ukraine\",\"tz\":2,\"lat\":50.95,\"lon\":-28.63},{\"name\":\"Kremenchug, Ukraine\",\"tz\":2,\"lat\":49.07,\"lon\":-33.42},{\"name\":\"Lemberg, Lwow, Ukraine\",\"tz\":2,\"lat\":49.83,\"lon\":-24.03},{\"name\":\"Mukacevo, Ukraine\",\"tz\":2,\"lat\":48.45,\"lon\":-22.72},{\"name\":\"Nikolayev, Ukraine\",\"tz\":2,\"lat\":49.52,\"lon\":-23.97},{\"name\":\"Rachki, Ukraine\",\"tz\":2,\"lat\":49.5,\"lon\":-29.9},{\"name\":\"Simferopol, Ukraine\",\"tz\":2,\"lat\":44.95,\"lon\":-34.1},{\"name\":\"Slavuta, Ukraine\",\"tz\":2,\"lat\":50.3,\"lon\":-26.87},{\"name\":\"Zhitomir, Ukraine\",\"tz\":2,\"lat\":50.25,\"lon\":-28.67},{\"name\":\"Beregovoye, Ukraine\",\"tz\":2,\"lat\":44.9,\"lon\":-33.6},{\"name\":\"Tinton Falls, NJ\",\"tz\":-5,\"lat\":40.28,\"lon\":74.1},{\"name\":\"Warendorf\",\"tz\":1,\"lat\":51.95,\"lon\":-7.98},{\"name\":\"Münster\",\"tz\":1,\"lat\":51.95,\"lon\":-7.62},{\"name\":\"Neu Fahrland\",\"tz\":1,\"lat\":52.45,\"lon\":-13.05},{\"name\":\"Charlottesville, Virginia\",\"tz\":-5,\"lat\":38.03,\"lon\":78.48},{\"name\":\"Hagenow\",\"tz\":1,\"lat\":53.43,\"lon\":-11.18},{\"name\":\"Verl\",\"tz\":1,\"lat\":51.88,\"lon\":-8.52},{\"name\":\"Röbel\",\"tz\":1,\"lat\":53.37,\"lon\":-12.6},{\"name\":\"Nordhausen\",\"tz\":1,\"lat\":51.5,\"lon\":-10.78},{\"name\":\"Aschaffenburg\",\"tz\":1,\"lat\":49.98,\"lon\":-9.15},{\"name\":\"Ahrweiler\",\"tz\":1,\"lat\":50.55,\"lon\":-7.13},{\"name\":\"Cedar Grove, NJ (1)\",\"tz\":-5,\"lat\":40.85,\"lon\":74.23},{\"name\":\"Cedar Grove, NJ (2)\",\"tz\":-5,\"lat\":39.97,\"lon\":74.15},{\"name\":\"Encinitas, CA\",\"tz\":-8,\"lat\":33.03,\"lon\":117.28},{\"name\":\"Calabasas, AZ\",\"tz\":-7,\"lat\":31.47,\"lon\":110.97},{\"name\":\"Calabasas, CA\",\"tz\":-8,\"lat\":34.15,\"lon\":118.63},{\"name\":\"Rottweil\",\"tz\":1,\"lat\":48.17,\"lon\":-8.62}]\r\n","import { ZmanToShow } from './jcal-zmanim.js';\r\n/**\r\n * List of ZmanTypeIds. Use as an enum.\r\n */\r\nexport const ZmanTypeIds = Object.freeze({\r\n ChatzosLayla: 0,\r\n Alos90: 1,\r\n Alos72: 2,\r\n TalisTefillin: 3,\r\n NetzAtElevation: 4,\r\n NetzMishor: 5,\r\n szksMga: 6,\r\n szksGra: 7,\r\n sztMga: 8,\r\n sztGra: 9,\r\n chatzosDay: 10,\r\n minGed: 11,\r\n minKet: 12,\r\n plag: 13,\r\n shkiaAtSeaLevel: 14,\r\n shkiaElevation: 15,\r\n tzais45: 16,\r\n tzais50: 17,\r\n tzais72: 18,\r\n rabbeinuTamZmanios: 19,\r\n rabbeinuTamZmaniosMga: 20,\r\n candleLighting: 21,\r\n SofZmanEatingChometz: 22,\r\n SofZmanBurnChometz: 23,\r\n});\r\n\r\n/**\r\n * List of Zman Types. Used to acquire the Zmanim for a particular day. \r\n */\r\nexport const ZmanTypes: ZmanToShow[] = [\r\n {\r\n id: ZmanTypeIds.ChatzosLayla,\r\n desc: 'חצות הלילה',\r\n eng: 'Chatzos - Midnight',\r\n heb: 'חצות הלילה',\r\n },\r\n {\r\n id: ZmanTypeIds.Alos90,\r\n desc: 'עלות השחר - 90 דקות',\r\n eng: 'Alos Hashachar - 90',\r\n heb: 'עלות השחר (90)',\r\n },\r\n {\r\n id: ZmanTypeIds.Alos72,\r\n desc: 'עלות השחר - 72 דקות',\r\n eng: 'Alos Hashachar - 72',\r\n heb: 'עלות השחר (72)',\r\n },\r\n {\r\n id: ZmanTypeIds.TalisTefillin,\r\n desc: 'זמן עטיפת טלית ותפילין - 36 דקות',\r\n eng: 'Taliss and Tefillin',\r\n heb: 'טלית ותפילין',\r\n },\r\n {\r\n id: ZmanTypeIds.NetzAtElevation,\r\n desc: 'הנץ החמה בגובה המיקום',\r\n eng: 'Sunrise at current elevation',\r\n heb: 'הנץ החמה - מגובה',\r\n },\r\n {\r\n id: ZmanTypeIds.NetzMishor,\r\n desc: 'הנץ החמה בגובה פני הים',\r\n eng: 'Sunrise',\r\n heb: 'הנץ החמה',\r\n },\r\n {\r\n id: ZmanTypeIds.szksMga,\r\n desc: 'סזק\"ש מג\"א',\r\n eng: 'Zman Krias Shma - MG\"A',\r\n heb: 'סזק\"ש מג\"א',\r\n },\r\n {\r\n id: ZmanTypeIds.szksGra,\r\n desc: 'סזק\"ש הגר\"א',\r\n eng: 'Zman Krias Shma - GR\"A',\r\n heb: 'סזק\"ש הגר\"א',\r\n },\r\n {\r\n id: ZmanTypeIds.sztMga,\r\n desc: 'סז\"ת מג\"א',\r\n eng: 'Zman Tefilla - MG\"A',\r\n heb: 'סז\"ת מג\"א',\r\n },\r\n {\r\n id: ZmanTypeIds.sztGra,\r\n desc: 'סז\"ת הגר\"א',\r\n eng: 'Zman Tefilla - GR\"A',\r\n heb: 'סז\"ת הגר\"א',\r\n },\r\n {\r\n id: ZmanTypeIds.chatzosDay,\r\n desc: 'חצות היום',\r\n eng: 'Chatzos - Midday',\r\n heb: 'חצות היום',\r\n },\r\n {\r\n id: ZmanTypeIds.minGed,\r\n desc: 'מנחה גדולה',\r\n eng: 'Mincha Gedola',\r\n heb: 'מנחה גדולה',\r\n },\r\n {\r\n id: ZmanTypeIds.minKet,\r\n desc: 'מנחה קטנה',\r\n eng: 'Mincha Ketana',\r\n heb: 'מנחה קטנה',\r\n },\r\n {\r\n id: ZmanTypeIds.plag,\r\n desc: 'פלג המנחה',\r\n eng: 'Plag HaMincha',\r\n heb: 'פלג המנחה',\r\n },\r\n {\r\n id: ZmanTypeIds.shkiaAtSeaLevel,\r\n desc: 'שקיעת החמה מגובה פני הים',\r\n eng: 'Sunset at sea level',\r\n heb: 'שקיעת החמה - ממישור',\r\n },\r\n {\r\n id: ZmanTypeIds.shkiaElevation,\r\n desc: 'שקיעת החמה מגובה המיקום',\r\n eng: 'Sunset',\r\n heb: 'שקיעת החמה',\r\n },\r\n {\r\n id: ZmanTypeIds.tzais45,\r\n desc: '45 דקות אחרי שקיעה',\r\n eng: 'Nightfall - 45',\r\n heb: 'צאת הכוכבים (45)',\r\n },\r\n {\r\n id: ZmanTypeIds.tzais50,\r\n desc: '50 דקות אחרי שקיעה',\r\n eng: 'Nightfall - 50',\r\n heb: 'צאת הכוכבים (50)',\r\n },\r\n {\r\n id: ZmanTypeIds.tzais72,\r\n desc: '72 דקות אחרי שקיעה',\r\n eng: 'Rabbeinu Tam',\r\n heb: 'צה\"כ ר\"ת - 72 דקות',\r\n },\r\n {\r\n id: ZmanTypeIds.rabbeinuTamZmanios,\r\n desc: '72 דקות זמניות אחרי שקיעה',\r\n eng: 'Rabbeinu Tam - Zmanios',\r\n heb: 'צה\"כ ר\"ת - זמניות',\r\n },\r\n {\r\n id: ZmanTypeIds.rabbeinuTamZmaniosMga,\r\n desc: '72 דקות זמניות אחרי שקיעה - מג\"א',\r\n eng: 'Rabbeinu Tam - Zmanios MG\"A',\r\n heb: 'צה\"כ ר\"ת - זמניות מג\"א',\r\n },\r\n {\r\n id: ZmanTypeIds.candleLighting,\r\n desc: 'זמן הדלקת נרות',\r\n eng: 'Candle lighting time',\r\n heb: 'זמן הדלקת נרות',\r\n },\r\n {\r\n id: ZmanTypeIds.SofZmanEatingChometz,\r\n desc: 'סוף זמן אכילת חמץ',\r\n eng: 'Stop eating Chometz',\r\n heb: 'סוף זמן אכילת חמץ',\r\n },\r\n {\r\n id: ZmanTypeIds.SofZmanBurnChometz,\r\n desc: 'סוף זמן ביעור חמץ',\r\n eng: 'Destroy Chometz',\r\n heb: 'סוף זמן ביעור חמץ',\r\n },\r\n];\r\n\r\n/**\r\n * Get the ZmanType with the given id, name (Hebrew or English) or description.\r\n * @param {number|string} idOrName\r\n * @returns {ZmanToShow}\r\n */\r\nexport function getZmanType(idOrName: number | string): ZmanToShow | undefined {\r\n return ZmanTypes.find(zt => zt.id === idOrName || zt.eng === idOrName || zt.heb === idOrName || zt.desc === idOrName);\r\n}\r\n","import {Utils, DaysOfWeekHeb, DaysOfWeekEng} from '../Utils.js';\r\nimport jDate from './jDate.js';\r\nimport Location from './Location.js';\r\nimport { Time } from '../jcal-zmanim.js';\r\n\r\n/**\r\n * Gets the molad for the given jewish month and year.\r\n * Algorithm was adapted from Hebcal by Danny Sadinoff\r\n *\r\n * Example of use:\r\n * const moladString = Molad.getString(5776, 10);\r\n */\r\nexport default class Molad {\r\n /**\r\n * @param {Number} month\r\n * @param {Number} year\r\n * @returns {{jDate:jDate,time:Time,chalakim:number}}\r\n */\r\n static getMolad(month: number, year: number): { jDate: jDate, time: Time, chalakim: number } {\r\n let totalMonths, partsElapsed, hoursElapsed, parts, monthAdj = month - 7;\r\n\r\n if (monthAdj < 0) {\r\n monthAdj += jDate.monthsJYear(year);\r\n }\r\n totalMonths = Utils.toInt(monthAdj + 235 * Utils.toInt((year - 1) / 19) + 12 * ((year - 1) % 19) +\r\n ((((year - 1) % 19) * 7) + 1) / 19);\r\n partsElapsed = 204 + (793 * (totalMonths % 1080));\r\n hoursElapsed = 5 + (12 * totalMonths) + 793 * Utils.toInt(totalMonths / 1080) +\r\n Utils.toInt(partsElapsed / 1080) - 6;\r\n parts = Utils.toInt((partsElapsed % 1080) + 1080 * (hoursElapsed % 24));\r\n\r\n return {\r\n jDate: new jDate((1 + (29 * Utils.toInt(totalMonths))) + Utils.toInt((hoursElapsed / 24))),\r\n time: { hour: Utils.toInt(hoursElapsed) % 24, minute: Utils.toInt((parts % 1080) / 18), second: 0 },\r\n chalakim: parts % 18\r\n };\r\n }\r\n\r\n /**\r\n * Returns the time of the molad as a string in the format: Monday Night, 8:33 PM and 12 Chalakim\r\n * The molad is always in Jerusalem so we use the Jerusalem sunset times\r\n * to determine whether to display \"Night\" or \"Motzai Shabbos\" etc. (check this...)\r\n * @param {Number} year\r\n * @param {Number} month\r\n */\r\n static getString(year: number, month: number): string {\r\n const molad = Molad.getMolad(month, year),\r\n zmanim = molad.jDate.getSunriseSunset(Location.getJerusalem()),\r\n isNight = Utils.isTimeAfter(zmanim.sunset, molad.time),\r\n dow = molad.jDate.getDayOfWeek();\r\n let str = '';\r\n\r\n if (!zmanim.sunset || isNaN(zmanim.sunset.hour)) {\r\n str += DaysOfWeekEng[dow];\r\n }\r\n else if (dow === 6 && isNight) {\r\n str += 'Motzai Shabbos,';\r\n }\r\n else if (dow === 5 && isNight) {\r\n str += 'Shabbos Night,';\r\n }\r\n else {\r\n str += DaysOfWeekEng[dow] + (isNight ? ' Night' : '');\r\n }\r\n str += ' ' + Utils.getTimeString(molad.time) + ' and ' +\r\n molad.chalakim.toString() + ' Chalakim';\r\n\r\n return str;\r\n }\r\n\r\n /**\r\n * Returns the time of the molad as a string in the format: ליל שני 20:33 12 חלקים\r\n * The molad is always in Jerusalem so we use the Jerusalem sunset times\r\n * to determine whether to display \"ליל/יום\" or \"מוצאי שב\"ק\" etc.\r\n * @param {Number} year\r\n * @param {Number} month\r\n */\r\n static getStringHeb(year: number, month: number): string {\r\n const molad = Molad.getMolad(month, year),\r\n zmanim = molad.jDate.getSunriseSunset(Location.getJerusalem()),\r\n isNight = Utils.isTimeAfter(zmanim.sunset, molad.time) &&\r\n Utils.isTimeAfter(molad.time, zmanim.sunrise),\r\n dow = molad.jDate.getDayOfWeek();\r\n let str = '';\r\n\r\n if (dow === 6) {\r\n str += (isNight ? 'מוצאי שב\"ק' : 'יום שב\"ק');\r\n }\r\n else if (dow === 5) {\r\n str += (isNight ? 'ליל שב\"ק' : 'ערב שב\"ק');\r\n }\r\n else {\r\n str += (isNight ? 'ליל' : 'יום') +\r\n DaysOfWeekHeb[dow].replace('יום', '');\r\n }\r\n str += ' ' + Utils.getTimeString(molad.time, 1, true) + ' ' +\r\n molad.chalakim.toString() + ' חלקים';\r\n\r\n return str;\r\n }\r\n}","import {Utils, DaysOfWeek} from '../Utils.js';\r\nimport Zmanim from './Zmanim.js';\r\nimport Location from './Location.js';\r\nimport jDate from './jDate.js';\r\nimport { ZmanTypes, ZmanTypeIds, getZmanType } from '../ZmanTypes.js';\r\nimport { SunTimes, Time, ZmanToShow } from '../jcal-zmanim.js';\r\n\r\ntype ZmanTime = {\r\n date: Date,\r\n location: Location,\r\n sunrise: Time | undefined,\r\n sunset: Time | undefined,\r\n suntimesMishor: SunTimes | undefined,\r\n sunriseMishor: Time | undefined,\r\n sunsetMishor: Time | undefined,\r\n mishorNeg90: Time | undefined,\r\n chatzos: Time | undefined,\r\n shaaZmanis: number | undefined,\r\n shaaZmanisMga: number | undefined,\r\n};\r\nexport const WhichDaysFlags = Object.freeze({\r\n SUNDAY: 1,\r\n MONDAY: 2,\r\n TUESDAY: 4,\r\n WEDNESDAY: 8,\r\n THURSDAY: 16,\r\n FRIDAY: 32,\r\n SHABBOS: 64,\r\n YOMTOV: 128,\r\n});\r\n\r\nexport default class ZmanimUtils {\r\n static zmanTimesCache: ZmanTime[] = []; \r\n\r\n /**\r\n * Gets the zmanim for all the types in the given list.\r\n * @param {[ZmanToShow]} zmanTypes An array of ZmanTypes to get the zman for.\r\n * @param {Date} date The secular date to get the zmanim for\r\n * @param {jDate} jdate The jewish date to get the zmanim for\r\n * @param {Location} location The location for which to get the zmanim\r\n * @returns{[{zmanType:{id:number,offset:?number,desc:string,eng:string,heb:string },time:Time}]}\r\n */\r\n static getZmanTimes(zmanTypes: ZmanToShow[], date: Date, jdate: jDate, location: Location): { zmanType: ZmanToShow, time?: Time }[] {\r\n const mem = ZmanimUtils.zmanTimesCache.find(\r\n (z) =>\r\n Utils.isSameSdate(z.date, date) &&\r\n z.location.Name === location.Name,\r\n ),\r\n zmanTimes: { zmanType: ZmanToShow, time?: Time }[] = [],\r\n whichDay = ZmanimUtils.getWhichDays(date, jdate, location);\r\n let sunrise: Time | undefined,\r\n sunset: Time | undefined,\r\n suntimesMishor: SunTimes | undefined,\r\n sunriseMishor: Time | undefined,\r\n sunsetMishor: Time | undefined,\r\n mishorNeg90: Time | undefined,\r\n chatzos: Time | undefined,\r\n shaaZmanis: number | undefined,\r\n shaaZmanisMga: number | undefined;\r\n if (mem) {\r\n sunrise = mem.sunrise;\r\n sunset = mem.sunset;\r\n suntimesMishor = mem.suntimesMishor;\r\n sunriseMishor = mem.sunriseMishor;\r\n sunsetMishor = mem.sunsetMishor;\r\n mishorNeg90 = mem.mishorNeg90;\r\n chatzos = mem.chatzos;\r\n shaaZmanis = mem.shaaZmanis;\r\n shaaZmanisMga = mem.shaaZmanisMga;\r\n } else {\r\n const suntimes = Zmanim.getSunTimes(date, location, true);\r\n sunrise = suntimes.sunrise;\r\n sunset = suntimes.sunset;\r\n suntimesMishor = Zmanim.getSunTimes(date, location, false);\r\n sunriseMishor = suntimesMishor.sunrise;\r\n sunsetMishor = suntimesMishor.sunset;\r\n mishorNeg90 = Utils.addMinutes(sunriseMishor, -90);\r\n chatzos =\r\n sunriseMishor &&\r\n sunsetMishor &&\r\n Zmanim.getChatzosFromSuntimes(suntimesMishor);\r\n shaaZmanis =\r\n sunriseMishor &&\r\n sunsetMishor &&\r\n Zmanim.getShaaZmanisFromSunTimes(suntimesMishor);\r\n shaaZmanisMga =\r\n sunriseMishor &&\r\n sunsetMishor &&\r\n Zmanim.getShaaZmanisMga(suntimesMishor, true);\r\n\r\n ZmanimUtils.zmanTimesCache.push({\r\n date,\r\n location,\r\n sunrise,\r\n sunset,\r\n suntimesMishor,\r\n sunriseMishor,\r\n sunsetMishor,\r\n mishorNeg90,\r\n chatzos,\r\n shaaZmanis,\r\n shaaZmanisMga,\r\n });\r\n }\r\n for (let zmanType of zmanTypes) {\r\n const offset = zmanType.offset &&\r\n (!zmanType.whichDaysFlags || zmanType.whichDaysFlags & whichDay)\r\n ? zmanType.offset\r\n : 0;\r\n switch (zmanType.id) {\r\n case ZmanTypeIds.ChatzosLayla: // chatzosNight\r\n zmanTimes.push({\r\n zmanType,\r\n time: Utils.addMinutes(chatzos, 720 + offset),\r\n });\r\n break;\r\n case ZmanTypeIds.Alos90: // alos90\r\n zmanTimes.push({\r\n zmanType,\r\n time: offset\r\n ? Utils.addMinutes(mishorNeg90, offset)\r\n : mishorNeg90,\r\n });\r\n break;\r\n case ZmanTypeIds.Alos72: // alos72\r\n zmanTimes.push({\r\n zmanType,\r\n time: Utils.addMinutes(sunriseMishor, -72 + offset),\r\n });\r\n break;\r\n case ZmanTypeIds.TalisTefillin: //talisTefillin\r\n zmanTimes.push({\r\n zmanType,\r\n time: Utils.addMinutes(sunriseMishor, -36 + offset),\r\n });\r\n break;\r\n case ZmanTypeIds.NetzAtElevation: //netzElevation\r\n zmanTimes.push({\r\n zmanType,\r\n time: offset\r\n ? Utils.addMinutes(sunrise, offset)\r\n : sunrise,\r\n });\r\n break;\r\n case ZmanTypeIds.NetzMishor: // netzMishor:\r\n zmanTimes.push({\r\n zmanType,\r\n time: offset\r\n ? Utils.addMinutes(sunriseMishor, offset)\r\n : sunriseMishor,\r\n });\r\n break;\r\n case ZmanTypeIds.szksMga: //szksMga\r\n if (shaaZmanisMga)\r\n zmanTimes.push({\r\n zmanType,\r\n time: Utils.addMinutes(\r\n mishorNeg90,\r\n Math.floor(shaaZmanisMga * 3) + offset,\r\n ),\r\n });\r\n break;\r\n case ZmanTypeIds.szksGra: //szksGra\r\n if (shaaZmanis)\r\n zmanTimes.push({\r\n zmanType,\r\n time: Utils.addMinutes(\r\n sunriseMishor,\r\n Math.floor(shaaZmanis * 3) + offset,\r\n ),\r\n });\r\n break;\r\n case ZmanTypeIds.sztMga: // sztMga\r\n if (shaaZmanisMga)\r\n zmanTimes.push({\r\n zmanType,\r\n time: Utils.addMinutes(\r\n mishorNeg90,\r\n Math.floor(shaaZmanisMga * 4) + offset,\r\n ),\r\n });\r\n break;\r\n case ZmanTypeIds.sztGra: //sztGra\r\n if (shaaZmanis)\r\n zmanTimes.push({\r\n zmanType,\r\n time: Utils.addMinutes(\r\n sunriseMishor,\r\n Math.floor(shaaZmanis * 4) + offset,\r\n ),\r\n });\r\n break;\r\n case ZmanTypeIds.chatzosDay: //chatzos\r\n zmanTimes.push({\r\n zmanType,\r\n time: offset\r\n ? Utils.addMinutes(chatzos, offset)\r\n : chatzos,\r\n });\r\n break;\r\n case ZmanTypeIds.minGed: //minGed\r\n if (shaaZmanis)\r\n zmanTimes.push({\r\n zmanType,\r\n time: Utils.addMinutes(\r\n chatzos,\r\n shaaZmanis * 0.5 + offset,\r\n ),\r\n });\r\n break;\r\n case ZmanTypeIds.minKet: //minKet\r\n if (shaaZmanis)\r\n zmanTimes.push({\r\n zmanType,\r\n time: Utils.addMinutes(\r\n sunriseMishor,\r\n shaaZmanis * 9.5 + offset,\r\n ),\r\n });\r\n break;\r\n case ZmanTypeIds.plag: //plag\r\n if (shaaZmanis)\r\n zmanTimes.push({\r\n zmanType,\r\n time: Utils.addMinutes(\r\n sunriseMishor,\r\n shaaZmanis * 10.75 + offset,\r\n ),\r\n });\r\n break;\r\n case ZmanTypeIds.shkiaAtSeaLevel: //shkiaMishor\r\n zmanTimes.push({\r\n zmanType,\r\n time: offset\r\n ? Utils.addMinutes(sunsetMishor, offset)\r\n : sunsetMishor,\r\n });\r\n break;\r\n case ZmanTypeIds.shkiaElevation: //shkiaElevation\r\n zmanTimes.push({\r\n zmanType,\r\n time: offset\r\n ? Utils.addMinutes(sunset, offset)\r\n : sunset,\r\n });\r\n break;\r\n case ZmanTypeIds.tzais45: // tzais45\r\n zmanTimes.push({\r\n zmanType,\r\n time: Utils.addMinutes(sunset, 45 + offset),\r\n });\r\n break;\r\n case ZmanTypeIds.tzais50: //tzais50\r\n zmanTimes.push({\r\n zmanType,\r\n time: Utils.addMinutes(sunset, 50 + offset),\r\n });\r\n break;\r\n case ZmanTypeIds.tzais72: //tzais72\r\n zmanTimes.push({\r\n zmanType,\r\n time: Utils.addMinutes(sunset, 72 + offset),\r\n });\r\n break;\r\n case ZmanTypeIds.rabbeinuTamZmanios: //tzais72Zmaniot\r\n if (shaaZmanis)\r\n zmanTimes.push({\r\n zmanType,\r\n time: Utils.addMinutes(\r\n sunset,\r\n shaaZmanis * 1.2 + offset,\r\n ),\r\n });\r\n break;\r\n case ZmanTypeIds.rabbeinuTamZmaniosMga: //tzais72ZmaniotMA\r\n if (shaaZmanisMga)\r\n zmanTimes.push({\r\n zmanType,\r\n time: Utils.addMinutes(\r\n sunset,\r\n shaaZmanisMga * 1.2 + offset,\r\n ),\r\n });\r\n break;\r\n case ZmanTypeIds.candleLighting: //candleLighting\r\n if (sunset && jdate.hasCandleLighting()) {\r\n zmanTimes.push({\r\n zmanType,\r\n time: Utils.addMinutes(\r\n Zmanim.getCandleLightingFromSunset(\r\n sunset,\r\n location,\r\n ),\r\n offset,\r\n ),\r\n });\r\n }\r\n break;\r\n case ZmanTypeIds.SofZmanEatingChometz: //Sof Zman Achilas Chometz\r\n if (shaaZmanisMga && jdate.Month === 1 &&\r\n jdate.Day === 14 &&\r\n Utils.isTimeAfter(sunrise, Utils.timeFromDate(date))) {\r\n zmanTimes.push({\r\n zmanType,\r\n time: Utils.addMinutes(\r\n sunrise,\r\n -90 + offset + shaaZmanisMga * 4,\r\n ),\r\n });\r\n }\r\n break;\r\n case ZmanTypeIds.SofZmanBurnChometz: //Sof Zman Biur Chometz\r\n if (shaaZmanisMga &&\r\n jdate.Month === 1 &&\r\n (jdate.Day === 14 ||\r\n (jdate.DayOfWeek === DaysOfWeek.FRIDAY &&\r\n jdate.Day === 13)) &&\r\n Utils.isTimeAfter(sunrise, Utils.timeFromDate(date))\r\n ) {\r\n zmanTimes.push({\r\n zmanType,\r\n time: Utils.addMinutes(\r\n sunrise,\r\n -90 + offset + shaaZmanisMga * 5,\r\n ),\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n return zmanTimes;\r\n }\r\n /**\r\n * Get the WhichDaysFlags for the given secular date\r\n * @param {Date} date\r\n * @param {jDate} jdate\r\n * @param {Location} location\r\n */\r\n static getWhichDays(date: Date, jdate: jDate, location: Location) {\r\n if (jdate.isYomTov(!!location.Israel)) {\r\n return WhichDaysFlags.YOMTOV;\r\n }\r\n switch (date.getDay()) {\r\n case DaysOfWeek.SUNDAY:\r\n return WhichDaysFlags.SUNDAY;\r\n case DaysOfWeek.MONDAY:\r\n return WhichDaysFlags.MONDAY;\r\n case DaysOfWeek.TUESDAY:\r\n return WhichDaysFlags.TUESDAY;\r\n case DaysOfWeek.WEDNESDAY:\r\n return WhichDaysFlags.WEDNESDAY;\r\n case DaysOfWeek.THURSDAY:\r\n return WhichDaysFlags.THURSDAY;\r\n case DaysOfWeek.FRIDAY:\r\n return WhichDaysFlags.FRIDAY;\r\n case DaysOfWeek.SHABBOS:\r\n return WhichDaysFlags.SHABBOS;\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * Returns the zmanim necessary for showing basic shul notifications: chatzosHayom, chatzosHalayla, alos\r\n * @param {jDate|Date} date\r\n * @param {Location} location\r\n * @returns {{chatzosHayom:Time, chatzosHalayla:Time, alos:Time, shkia:Time }}\r\n */\r\n static getBasicShulZmanim(date: jDate | Date, location: Location) {\r\n const { sdate, jdate } = Utils.bothDates(date);\r\n const zmanim = ZmanimUtils.getZmanTimes(\r\n [\r\n getZmanType(ZmanTypeIds.chatzosDay) as ZmanToShow, //Chatzos hayom\r\n getZmanType(ZmanTypeIds.Alos90) as ZmanToShow, //alos90\r\n getZmanType(ZmanTypeIds.shkiaElevation) as ZmanToShow, //shkiaElevation,\r\n getZmanType(ZmanTypeIds.candleLighting) as ZmanToShow, //candleLighting,\r\n ],\r\n sdate,\r\n jdate,\r\n location,\r\n );\r\n return {\r\n chatzosHayom: zmanim[0].time,\r\n chatzosHalayla: Utils.addMinutes(zmanim[0].time, 720),\r\n alos: zmanim[1].time,\r\n shkia: zmanim[2].time,\r\n };\r\n }\r\n\r\n /**\r\n * Returns all the zmanim for the given day \r\n * @param {Date|jDate} date\r\n * @param {Location} location\r\n * @returns {{zmanType:ZmanToShow, time?:Time }[]}\r\n */\r\n static getAllZmanim(date: jDate | Date, location: Location) {\r\n const { sdate, jdate } = Utils.bothDates(date);\r\n return ZmanimUtils.getZmanTimes(ZmanTypes, sdate, jdate, location,);\r\n }\r\n}\r\n","import { Utils, DaysOfWeek, JewishMonthsNames as m } from \"./Utils.js\";\r\nimport jDate from \"./JCal/jDate.js\";\r\nimport Molad from \"./JCal/Molad.js\";\r\nimport PirkeiAvos from \"./JCal/PirkeiAvos.js\";\r\nimport ZmanimUtils from \"./JCal/ZmanimUtils.js\";\r\nimport Location from \"./JCal/Location.js\";\r\nimport { Time } from \"./jcal-zmanim.js\";\r\n\r\ntype DayInfo = {\r\n jdate: jDate;\r\n sdate: Date;\r\n month: number;\r\n day: number;\r\n dow: number;\r\n isAfterChatzosHayom: boolean;\r\n isAfterChatzosHalayla: boolean;\r\n isAfterAlos: boolean;\r\n isAfterShkia: boolean;\r\n isDaytime: boolean;\r\n isNightTime: boolean;\r\n isMorning: boolean;\r\n isAfternoon: boolean;\r\n isYomTov: boolean;\r\n isLeapYear: boolean;\r\n noTachnun: boolean;\r\n location: Location;\r\n};\r\nconst dayNotes: string[] = [];\r\nconst tefillahNotes: string[] = [];\r\nlet showEnglish = false,\r\n dayInfo: DayInfo,\r\n showGaonShirShelYom = true,\r\n israel = true;\r\n\r\n/**\r\n * Get shul notifications for the given date and location\r\n * @param date\r\n * @param time\r\n * @param location\r\n * @param english\r\n * @param showGaonShir\r\n * @param showDafYomi\r\n * @returns {{ dayNotes: string[], tefillahNotes: string[]}}\r\n */\r\nexport function getNotifications(\r\n date: jDate | Date,\r\n time: Time,\r\n location: Location,\r\n english: boolean,\r\n showGaonShir?: boolean,\r\n showDafYomi?: boolean\r\n) {\r\n const { sdate, jdate } = Utils.bothDates(date);\r\n dayNotes.length = 0;\r\n tefillahNotes.length = 0;\r\n const month = jdate.Month,\r\n day = jdate.Day,\r\n dow = jdate.DayOfWeek,\r\n { chatzosHayom, chatzosHalayla, alos, shkia } = ZmanimUtils.getBasicShulZmanim(date, location),\r\n isAfterChatzosHayom = Utils.isTimeAfter(chatzosHayom, time),\r\n isAfterChatzosHalayla =\r\n typeof chatzosHalayla !== \"undefined\" &&\r\n (Utils.isTimeAfter(chatzosHalayla, time) || (chatzosHalayla.hour > 12 && time.hour < 12)), //Chatzos is before 0:00 and time is after 0:00\r\n isAfterAlos = Utils.isTimeAfter(alos, time),\r\n isAfterShkia = Utils.isTimeAfter(shkia, time),\r\n isDaytime = isAfterAlos && !isAfterShkia,\r\n isNightTime = !isDaytime,\r\n isNotBeinHasmashos = !isAfterShkia || Utils.isTimeAfter(Utils.addMinutes(shkia, 18), time),\r\n isMorning = isDaytime && !isAfterChatzosHayom,\r\n isAfternoon = isDaytime && isAfterChatzosHayom,\r\n isYomTov = jdate.isYomTovOrCholHamoed(location.Israel),\r\n isLeapYear = jDate.isJdLeapY(jdate.Year),\r\n noTachnun = isAfternoon && (dow === DaysOfWeek.FRIDAY || day === 29);\r\n\r\n dayInfo = {\r\n jdate,\r\n sdate,\r\n month,\r\n day,\r\n dow,\r\n isAfterChatzosHayom,\r\n isAfterChatzosHalayla,\r\n isAfterAlos,\r\n isAfterShkia,\r\n isDaytime,\r\n isNightTime,\r\n isMorning,\r\n isAfternoon,\r\n isYomTov,\r\n isLeapYear,\r\n noTachnun,\r\n location,\r\n };\r\n showEnglish = english;\r\n israel = location.Israel;\r\n showGaonShirShelYom = typeof showGaonShir === \"undefined\" ? israel : !!showGaonShir;\r\n\r\n if (dow === DaysOfWeek.SHABBOS) {\r\n getShabbosNotifications();\r\n } else {\r\n getWeekDayNotifications();\r\n }\r\n getAroundTheYearNotifications();\r\n\r\n if (dayInfo.noTachnun && isDaytime && !isYomTov) {\r\n if (dow !== DaysOfWeek.SHABBOS) {\r\n addTefillahNote(\"No Tachnun\", 'א\"א תחנון');\r\n } else if (isAfternoon) {\r\n addTefillahNote(\"No Tzidkascha\", 'א\"א צדקתך');\r\n } else if (\r\n !((month === m.NISSAN && day > 21) || month === m.IYAR || (month === m.SIVAN && day < 6))\r\n ) {\r\n addTefillahNote(\"No Av Harachamim\", 'א\"א אב הרחמים');\r\n }\r\n }\r\n if (showDafYomi !== false) {\r\n addDayNote(jdate.getDafYomi(), jdate.getDafyomiHeb());\r\n }\r\n\r\n //If it is after the earliest Nacht during Sefiras Ha'omer\r\n if (\r\n isNotBeinHasmashos &&\r\n ((month === m.NISSAN && day > 15) || month === m.IYAR || (month === m.SIVAN && day < 6))\r\n ) {\r\n const dayOfSefirah = jdate.getDayOfOmer();\r\n if (dayOfSefirah > 0) {\r\n addTefillahNote(Utils.getOmerNusach(dayOfSefirah, \"ashkenaz\"));\r\n }\r\n }\r\n\r\n //return only unique values\r\n return {\r\n dayNotes: [...new Set(dayNotes)],\r\n tefillahNotes: [...new Set(tefillahNotes)],\r\n };\r\n}\r\n\r\nfunction getShabbosNotifications() {\r\n const { month, day, isLeapYear, isMorning, isYomTov, jdate, isDaytime, isAfternoon } = dayInfo;\r\n if (month === m.NISSAN && day > 7 && day < 15) {\r\n addDayNote(\"Shabbos Hagadol\", \"שבת הגדול\");\r\n } else if (month === m.TISHREI && day > 2 && day < 10) {\r\n addDayNote(\"Shabbos Shuva\", \"שבת שובה\");\r\n } else if (month === m.AV && day > 2 && day < 10) {\r\n addDayNote(\"Shabbos Chazon\", \"שבת חזון\");\r\n } else if (\r\n (month === (isLeapYear ? m.ADAR : m.SHVAT) && day > 24) ||\r\n (month === (isLeapYear ? m.ADAR_SHEINI : m.ADAR) && day === 1)\r\n ) {\r\n addDayNote(\"Parshas Shkalim\", \"פרשת שקלים\");\r\n } else if (month === (isLeapYear ? m.ADAR_SHEINI : m.ADAR) && day > 7 && day < 14) {\r\n addDayNote(\"Parshas Zachor\", \"פרשת זכור\");\r\n } else if (month === (isLeapYear ? m.ADAR_SHEINI : m.ADAR) && day > 16 && day < 24) {\r\n addDayNote(\"Parshas Parah\", \"פרשת פרה\");\r\n } else if (\r\n (month === (isLeapYear ? m.ADAR_SHEINI : m.ADAR) && day > 23 && day < 30) ||\r\n (month === m.NISSAN && day === 1)\r\n ) {\r\n addDayNote(\"Parshas Hachodesh\", \"פרשת החודש\");\r\n }\r\n if (isMorning && !isYomTov) {\r\n const sedra = jdate.getSedra(israel);\r\n if (sedra.sedras.length > 0) {\r\n addTefillahNote(\r\n `Kriyas Hatorah Parshas ${sedra.toString()}`,\r\n `קה\"ת פרשת ${sedra.toStringHeb()}`\r\n );\r\n }\r\n //All months but Tishrei have Shabbos Mevarchim on the Shabbos before Rosh Chodesh\r\n if (month !== m.ELLUL && day > 22 && day < 30) {\r\n const nextMonth = jdate.addMonths(1);\r\n addTefillahNote(\r\n \"The molad will be \" + Molad.getString(nextMonth.Year, nextMonth.Month),\r\n \"המולד יהיה ב\" + Molad.getStringHeb(nextMonth.Year, nextMonth.Month)\r\n );\r\n addTefillahNote(\"Bircas Hachodesh\", \"מברכים החודש\");\r\n //Rosh Chodesh Bentching during Sefira, we do say Av Harachamim\r\n if (month !== m.NISSAN && month !== m.IYAR) {\r\n addTefillahNote(\"No Av Harachamim\", 'א\"א אב הרחמים');\r\n }\r\n }\r\n }\r\n //Rosh Chodesh\r\n if (month !== m.TISHREI && (day === 1 || day === 30)) {\r\n addDayNote(\"Rosh Chodesh\", \"ראש חודש\");\r\n addTefillahNote(\"Ya`aleh Viyavo\", \"יעלה ויבא\");\r\n if (showGaonShirShelYom && isDaytime) {\r\n addTefillahNote(\"Barchi Nafshi\", 'שיר של יום - קי\"ד - ברכי נפשי');\r\n }\r\n //Rosh Chodesh Teves is during Chanuka\r\n if (isDaytime && month !== m.TEVES && !(month === m.KISLEV && day === 30)) {\r\n addTefillahNote(\"Chatzi Hallel\", \"חצי הלל\");\r\n }\r\n addTefillahNote(\"No Av Harachamim\", 'א\"א אב הרחמים');\r\n } else if (isYomTov) {\r\n addTefillahNote(\"No Av Harachamim\", 'א\"א אב הרחמים');\r\n if (showGaonShirShelYom && isDaytime) {\r\n addTefillahNote(\"שיר של יום - מזמור שיר ליום השבת\");\r\n }\r\n }\r\n //Kriyas Hatora - Shabbos by mincha - besides for Yom Kippur\r\n if (isAfternoon && !(month === m.TISHREI && day === 10)) {\r\n const sedra = jdate.addDays(1).getSedra(israel);\r\n addTefillahNote(\r\n \"Kriyas Hatorah Mincha Parshas \" + sedra.sedras[0].eng,\r\n 'קה\"ת במנחה פרשת ' + sedra.sedras[0].heb\r\n );\r\n }\r\n if (\r\n isAfternoon &&\r\n ((month === m.NISSAN && day > 21) ||\r\n (month <= m.ELLUL && !(month === m.AV && [8, 9].includes(day))))\r\n ) {\r\n const prakim = PirkeiAvos.getPrakim(jdate, israel);\r\n if (prakim.length > 0) {\r\n addDayNote(\r\n \"Pirkei Avos - \" +\r\n prakim.map((s: number) => `Perek ${Utils.toJewishNumber(s)}`).join(\" and \"),\r\n \"פרקי אבות - \" + prakim.map((s: number) => `פרק ${Utils.toJewishNumber(s)}`).join(\" ו\")\r\n );\r\n }\r\n }\r\n}\r\n\r\nfunction getWeekDayNotifications() {\r\n const {\r\n isNightTime,\r\n dow,\r\n isYomTov,\r\n month,\r\n day,\r\n isMorning,\r\n jdate,\r\n location,\r\n isDaytime,\r\n isAfternoon,\r\n } = dayInfo;\r\n\r\n //מוצאי שבת\r\n if (isNightTime && dow === DaysOfWeek.SUNDAY) {\r\n //הבדלה בתפילה for מוצאי שבת\r\n addTefillahNote(\r\n (month === m.NISSAN && day === 15) || (month === m.SIVAN && day === 6)\r\n ? \"ותודיעינו\"\r\n : \"אתה חוננתנו\"\r\n );\r\n //Motzai Shabbos before Yom Tov - no ויהי נועם\r\n if (\r\n (month === m.ELLUL && day > 22) ||\r\n (month === m.TISHREI && day > 4 && day < 22) ||\r\n (month === m.NISSAN && day > 8 && day < 15) ||\r\n (month === m.SIVAN && day < 6)\r\n ) {\r\n addTefillahNote(\"No Vihi Noam\", 'א\"א ויהי נועם');\r\n }\r\n }\r\n //אתה חוננתנו for מוצאי יו\"ט\r\n else if (\r\n isNightTime &&\r\n ((month === m.NISSAN && (day === 16 || day === 22)) ||\r\n (month === m.SIVAN && day === 7) ||\r\n (month === m.TISHREI && [3, 11, 16, 23].includes(day)))\r\n ) {\r\n addTefillahNote(\"Ata Chonantanu\", \"אתה חוננתנו\");\r\n }\r\n //Kriyas hatorah for monday and thursday\r\n //when it's not chol hamoed, chanuka, purim, a fast day or rosh chodesh\r\n if (\r\n isMorning &&\r\n !isYomTov &&\r\n (dow === DaysOfWeek.MONDAY || dow === DaysOfWeek.THURSDAY) &&\r\n !hasOwnKriyasHatorah(jdate, location)\r\n ) {\r\n const sedra = jdate.getSedra(israel);\r\n if (sedra.sedras.length > 0) {\r\n addTefillahNote(\r\n `Kriyas Hatorah Parshas ${sedra.sedras[0].eng}`,\r\n `קה\"ת פרשת ${sedra.sedras[0].heb}`\r\n );\r\n }\r\n }\r\n //Rosh Chodesh\r\n if ((month !== m.TISHREI && day === 1) || day === 30) {\r\n dayInfo.noTachnun = true;\r\n addDayNote(\"Rosh Chodesh\", \"ראש חודש\");\r\n addTefillahNote(\"Ya`aleh Viyavo\", \"יעלה ויבא\");\r\n if (showGaonShirShelYom && isDaytime) {\r\n addTefillahNote(\"Barchi Nafshi\", 'שיר של יום - קי\"ד - ברכי נפשי');\r\n }\r\n //Rosh Chodesh Teves is during Chanuka\r\n if (isDaytime && month !== m.TEVES && !(month === m.KISLEV && day === 30)) {\r\n addTefillahNote(\"Chatzi Hallel\", \"חצי הלל\");\r\n if (isMorning && dow !== DaysOfWeek.SHABBOS) {\r\n noLaminatzeach();\r\n }\r\n }\r\n }\r\n //Yom Kippur Kattan\r\n else if (\r\n month !== m.ELLUL &&\r\n ((dow < DaysOfWeek.FRIDAY && day === 29) || (dow === DaysOfWeek.THURSDAY && day === 28)) &&\r\n isAfternoon\r\n ) {\r\n addTefillahNote(\"Yom Kippur Kattan\", 'יו\"כ קטן');\r\n }\r\n if (jdate.hasEiruvTavshilin(israel)) {\r\n addDayNote(\"Eruv Tavshilin\", \"עירוב תבשילין\");\r\n }\r\n}\r\n\r\nfunction getAroundTheYearNotifications() {\r\n const {\r\n month,\r\n day,\r\n isNightTime,\r\n dow,\r\n isAfternoon,\r\n isDaytime,\r\n isMorning,\r\n isAfterChatzosHalayla,\r\n jdate,\r\n sdate,\r\n isLeapYear,\r\n location,\r\n } = dayInfo;\r\n\r\n /**\r\n * A flag indicating whether to show \"V'sain Tal U'Matar\" in Chutz La'aretz.\r\n * If the Jewish year is divisible by 4, then it is said from the 6th of December.\r\n * Otherwise it is said from the 5th of December.\r\n */\r\n let showVsainTalUmatarInChul = false;\r\n\r\n if (!location.Israel && sdate.getMonth() === 11 && sdate.getDate() > 4) {\r\n const startVsainTalUmatar = jdate.Year % 4 === 0 ? 6 : 5;\r\n showVsainTalUmatarInChul =\r\n sdate.getDate() >= startVsainTalUmatar && sdate.getDate() <= startVsainTalUmatar + 14;\r\n }\r\n\r\n switch (month) {\r\n case m.NISSAN:\r\n dayInfo.noTachnun = true;\r\n if (day > 15) {\r\n addTefillahNote(\"Morid Hatal\", \"מוריד הטל\");\r\n }\r\n if (dow !== DaysOfWeek.SHABBOS && day > 15 && day !== 21) {\r\n addTefillahNote(\"Vesain Bracha\", \"ותן ברכה\");\r\n }\r\n if (isMorning && dow !== DaysOfWeek.SHABBOS && [14, 16, 17, 18, 19, 20].includes(day)) {\r\n addTefillahNote(\"No Mizmor Lesodah\", 'א\"א מזמור לתודה');\r\n if (dow !== DaysOfWeek.SHABBOS) {\r\n noLaminatzeach();\r\n }\r\n }\r\n if (day === 15) {\r\n addDayNote(\"First Day of Pesach\", 'יו\"ט ראשון של פסח');\r\n addTefillahNote(\"Full Hallel\", \"הלל השלם\");\r\n if (isAfternoon) {\r\n addTefillahNote(\"Morid Hatal\", \"מוריד הטל\");\r\n }\r\n if (showGaonShirShelYom && isDaytime && dow !== DaysOfWeek.SHABBOS) {\r\n addTefillahNote('שיר של יום - קי\"ד - בצאת ישראל');\r\n }\r\n addTefillahNote(\"Ya`aleh V`yavo\", \"יעלה ויבא\");\r\n } else if (day === 16 && !israel) {\r\n addDayNote(\"Second Day of Pesach\", 'יו\"ט שני של פסח');\r\n addTefillahNote(\"Full Hallel\", \"הלל השלם\");\r\n addTefillahNote(\"Morid Hatal\", \"מוריד הטל\");\r\n if (showGaonShirShelYom && isDaytime && dow !== DaysOfWeek.SHABBOS) {\r\n addTefillahNote('שיר של יום - קי\"ד - בצאת ישראל');\r\n }\r\n addTefillahNote(\"Ya`aleh V`yavo\", \"יעלה ויבא\");\r\n } else if ([16, 17, 18, 19, 20, 21].includes(day)) {\r\n if (day === 21) {\r\n addDayNote(\"Shvi`i Shel Pesach\", \"שביעי של פםח\");\r\n if (isDaytime) {\r\n if (israel) {\r\n addTefillahNote(\"Yizkor\", \"יזכור\");\r\n }\r\n if (showGaonShirShelYom && dow !== DaysOfWeek.SHABBOS) {\r\n addTefillahNote(\"שיר של יום - י\\\"ח - למנצח לעבד ה'\");\r\n }\r\n }\r\n } else {\r\n addDayNote(\"Chol Ha`moed Pesach\", \"פסח - חול המועד\");\r\n addTefillahNote(\"Ya`aleh Viyavo\", \"יעלה ויבא\");\r\n if (isMorning && dow !== DaysOfWeek.SHABBOS) noLaminatzeach();\r\n if (showGaonShirShelYom && isDaytime && dow !== DaysOfWeek.SHABBOS) {\r\n switch (day) {\r\n case 16:\r\n if (dow === DaysOfWeek.SUNDAY) {\r\n addTefillahNote('שיר של יום - קי\"ד - בצאת ישראל');\r\n } else {\r\n addTefillahNote('שיר של יום - ע\"ח - משכיל לאסף');\r\n }\r\n break;\r\n case 17:\r\n if (dow === DaysOfWeek.MONDAY) {\r\n addTefillahNote('שיר של יום - ע\"ח - משכיל לאסף');\r\n } else {\r\n addTefillahNote(\"שיר של יום - פ' - למנצח אל שושנים\");\r\n }\r\n break;\r\n case 18:\r\n if (dow === DaysOfWeek.TUESDAY || dow === DaysOfWeek.SUNDAY) {\r\n addTefillahNote(\"שיר של יום - פ' - למנצח אל שושנים\");\r\n } else {\r\n addTefillahNote(\"שיר של יום - ק\\\"ה - הודו לה'\");\r\n }\r\n break;\r\n case 19:\r\n if (dow === DaysOfWeek.THURSDAY) {\r\n addTefillahNote('שיר של יום - קל\"ה - הללוי-ה הללו את שם');\r\n } else {\r\n addTefillahNote(\"שיר של יום - ק\\\"ה - הודו לה'\");\r\n }\r\n break;\r\n case 20:\r\n if (dow === DaysOfWeek.FRIDAY) {\r\n addTefillahNote('שיר של יום - ס\"ו - למנצח שיר מזמור');\r\n } else {\r\n addTefillahNote('שיר של יום - קל\"ה - הללוי-ה הללו את שם');\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n if (isDaytime) addTefillahNote(\"Half Hallel\", \"חצי הלל\");\r\n addTefillahNote(\"Ya`aleh V`yavo\", \"יעלה ויבא\");\r\n }\r\n if (day === 22) {\r\n if (israel) {\r\n addDayNote(\"Isru Chag\", \"איסרו חג\");\r\n } else {\r\n addDayNote(\"Acharon Shel Pesach\", \"אחרון של פסח\");\r\n if (isDaytime) {\r\n addTefillahNote(\"Yizkor\", \"יזכור\");\r\n addTefillahNote(\"Half Hallel\", \"חצי הלל\");\r\n }\r\n addTefillahNote(\"Ya`aleh V`yavo\", \"יעלה ויבא\");\r\n }\r\n if (dow !== DaysOfWeek.SHABBOS && isMorning) {\r\n noLaminatzeach();\r\n }\r\n }\r\n if (\r\n dow === DaysOfWeek.SHABBOS &&\r\n ([15, 16, 17, 18, 19, 20, 21].includes(day) || (!israel && day === 22))\r\n ) {\r\n addTefillahNote(\"Shir Hashirim\", \"מגילת שיר השירים\");\r\n }\r\n break;\r\n case m.IYAR:\r\n if (day <= 15) {\r\n addTefillahNote(\"Morid Hatal\", \"מוריד הטל\");\r\n if (dow !== DaysOfWeek.SHABBOS) {\r\n addTefillahNote(\"V`sain Bracha\", \"ותן ברכה\");\r\n }\r\n }\r\n //Pesach Sheini and Lag Ba'Omer\r\n if (day === 14 || (day === 13 && isAfternoon) || day === 18 || (day === 17 && isAfternoon)) {\r\n dayInfo.noTachnun = true;\r\n if (day === 14) {\r\n addDayNote(\"Pesach Sheini\", \"פסח שני\");\r\n }\r\n }\r\n //Baha\"b\r\n if (\r\n isMorning &&\r\n ((dow === DaysOfWeek.MONDAY && day > 3 && day < 13) ||\r\n (dow === DaysOfWeek.THURSDAY && day > 6 && day < 14) ||\r\n (dow === DaysOfWeek.MONDAY && day > 10 && day < 18 && day !== 14))\r\n ) {\r\n addTefillahNote(\"Ba`hab\", 'סליחות בה\"ב');\r\n addTefillahNote(\"Avinu Malkeinu\", \"אבינו מלכנו\");\r\n }\r\n break;\r\n case m.SIVAN:\r\n if (day < 13) {\r\n dayInfo.noTachnun = true;\r\n }\r\n\r\n if (day === 6) {\r\n addDayNote(\"Shavuos\", \"יום טוב של שבועות\");\r\n if (isDaytime) {\r\n addTefillahNote(\"Full Hallel\", \"הלל השלם\");\r\n addTefillahNote(\"Megilas Rus\", \"מגילת רות\");\r\n addTefillahNote(\"Akdamus\", \"אקדמות\");\r\n if (israel) addTefillahNote(\"Yizkor\", \"יזכור\");\r\n if (showGaonShirShelYom) {\r\n addTefillahNote('שיר של יום - י\"ט - ..השמים מספרים..');\r\n }\r\n }\r\n addTefillahNote(\"Ya`aleh V`yavo\", \"יעלה ויבא\");\r\n } else if (day === 7) {\r\n if (israel) {\r\n addDayNote(\"Issru Chag\", \"איסרו חג\");\r\n if (isMorning && dow !== DaysOfWeek.SHABBOS) {\r\n noLaminatzeach();\r\n }\r\n } else {\r\n addDayNote(\"Shavuos Second Day\", \"יום טוב של שבועות\");\r\n if (isDaytime) {\r\n addTefillahNote(\"Full Hallel\", \"הלל השלם\");\r\n addTefillahNote(\"Yizkor\", \"יזכור\");\r\n }\r\n addTefillahNote(\"Ya`aleh V`yavo\", \"יעלה ויבא\");\r\n }\r\n }\r\n\r\n break;\r\n case m.TAMUZ:\r\n if (\r\n isDaytime &&\r\n ((day === 17 && DaysOfWeek.SHABBOS !== 6) || (day === 18 && dow === DaysOfWeek.SUNDAY))\r\n ) {\r\n if (isDaytime) {\r\n addDayNote(\"Shiva Asar B`Tamuz\", 'י\"ז בתמוז');\r\n addTefillahNote(\"Avinu Malkeinu\", \"אבינו מלכנו\");\r\n addTefillahNote(\"Aneinu\", \"עננו\");\r\n }\r\n if (isMorning) {\r\n addTefillahNote(\"Selichos\", \"סליחות\");\r\n }\r\n }\r\n break;\r\n case m.AV:\r\n if (isAfternoon && day === 8 && dow !== DaysOfWeek.FRIDAY) {\r\n dayInfo.noTachnun = true;\r\n } else if (\r\n (day === 9 && dow !== DaysOfWeek.SHABBOS) ||\r\n (day === 10 && dow === DaysOfWeek.SUNDAY)\r\n ) {\r\n addDayNote(\"Tish B`Av\", \"תשעה באב\");\r\n if (isDaytime) {\r\n addTefillahNote(\"Kinos\", \"קינות\");\r\n addTefillahNote(\"Aneinu\", \"עננו\");\r\n if (isMorning && dow !== DaysOfWeek.SHABBOS) {\r\n noLaminatzeach();\r\n }\r\n } else {\r\n addTefillahNote(\"Megilas Eicha\", \"מגילת איכה\");\r\n if (isNightTime && dow === DaysOfWeek.SUNDAY) {\r\n addTefillahNote(\"No Vihi Noam\", 'א\"א ויהי נועם');\r\n }\r\n }\r\n dayInfo.noTachnun = true;\r\n } else if (isAfternoon && day === 14) {\r\n dayInfo.noTachnun = true;\r\n } else if (day === 15) {\r\n addDayNote(\"Tu B`Av\", 'ט\"ו באב');\r\n dayInfo.noTachnun = true;\r\n }\r\n break;\r\n case m.ELLUL:\r\n addTefillahNote(\"L`Dovid Hashem Ori\", \"לדוד ה\");\r\n if (day > 20 && dow !== DaysOfWeek.SHABBOS && (isAfterChatzosHalayla || isMorning)) {\r\n let startedSelichos = day >= 26;\r\n if (day < 26) {\r\n const daysToRH = 30 - day,\r\n dowRH = (daysToRH + dow) % 7;\r\n switch (dowRH) {\r\n case DaysOfWeek.MONDAY:\r\n startedSelichos = day >= 22;\r\n break;\r\n case DaysOfWeek.TUESDAY:\r\n startedSelichos = day >= 21;\r\n break;\r\n case DaysOfWeek.SHABBOS:\r\n startedSelichos = day >= 24;\r\n break;\r\n }\r\n }\r\n if (startedSelichos) {\r\n addTefillahNote(\"Selichos\", \"סליחות\");\r\n }\r\n }\r\n if (day === 29) {\r\n dayInfo.noTachnun = true;\r\n }\r\n break;\r\n case m.TISHREI:\r\n if (day < 11) {\r\n addTefillahNote(\"Hamelech Hakadosh\", \"המלך הקדוש\");\r\n if (dow !== DaysOfWeek.SHABBOS && day !== 9) {\r\n addTefillahNote(\"Avinu Malkeinu\", \"אבינו מלכנו\");\r\n }\r\n }\r\n //Days of Rosh Hashana, Tzom Gedaliah and Yom Kippur are dealt with individually below.\r\n if (day > 4 && day < 10 && dow !== DaysOfWeek.SHABBOS) {\r\n addTefillahNote(\"Selichos\", \"סליחות\");\r\n addTefillahNote(\"Hamelech Hamishpat\", \"המלך המשפט\");\r\n }\r\n if (dow === DaysOfWeek.SHABBOS && day > 2 && day < 10) {\r\n addDayNote(\"Shabbos Shuva\", \"שבת שובה\");\r\n }\r\n if (day >= 10) {\r\n dayInfo.noTachnun = true;\r\n }\r\n switch (day) {\r\n case 1:\r\n addDayNote(\"Rosh Hashana\", \"ראש השנה\");\r\n if (dow !== DaysOfWeek.SHABBOS && isDaytime) {\r\n addTefillahNote(\"Tekias Shofar\", \"תקיעת שופר\");\r\n if (showGaonShirShelYom) {\r\n addTefillahNote('שיר של יום - פ\"א - למנצח על הגתית');\r\n }\r\n if (isAfternoon) {\r\n addDayNote(\"Tashlich\", \"תשליך\");\r\n }\r\n }\r\n addTefillahNote(\"Ya`aleh V`yavo\", \"יעלה ויבא\");\r\n break;\r\n case 2:\r\n addDayNote(\"Rosh Hashana\", \"ראש השנה\");\r\n if (isDaytime) {\r\n addTefillahNote(\"Tekias Shofar\", \"תקיעת שופר\");\r\n if (showGaonShirShelYom) {\r\n addTefillahNote('שיר של יום - פ\"א - למנצח על הגתית');\r\n }\r\n if (dow === DaysOfWeek.SUNDAY && isAfternoon) {\r\n addDayNote(\"Tashlich\", \"תשליך\");\r\n }\r\n }\r\n addTefillahNote(\"Ya`aleh V`yavo\", \"יעלה ויבא\");\r\n break;\r\n case 3:\r\n if (dow !== DaysOfWeek.SHABBOS) {\r\n if (isDaytime) {\r\n addDayNote(\"Fast of Tzom Gedalya\", \"צום גדליה\");\r\n addTefillahNote(\"Aneinu\", \"עננו\");\r\n }\r\n if (isAfterChatzosHalayla || isMorning) {\r\n addTefillahNote(\"Selichos\", \"סליחות\");\r\n }\r\n addTefillahNote(\"Hamelech Hamishpat\", \"המלך המשפט\");\r\n }\r\n break;\r\n case 4:\r\n if (dow === DaysOfWeek.SUNDAY) {\r\n if (isDaytime) {\r\n addDayNote(\"Fast of Tzom Gedalya\", \"צום גדליה\");\r\n addTefillahNote(\"Aneinu\", \"עננו\");\r\n }\r\n if (isAfterChatzosHalayla || isMorning) {\r\n addTefillahNote(\"Selichos\", \"סליחות\");\r\n }\r\n addTefillahNote(\"Hamelech Hamishpat\", \"המלך המשפט\");\r\n } else if (dow !== DaysOfWeek.SHABBOS) {\r\n addTefillahNote(\"Hamelech Hamishpat\", \"המלך המשפט\");\r\n if (isAfterChatzosHalayla || isMorning) {\r\n addTefillahNote(\"Selichos\", \"סליחות\");\r\n }\r\n }\r\n break;\r\n case 9:\r\n addDayNote(\"Erev Yom Kippur\", \"ערב יום כיפור\");\r\n if (isMorning) {\r\n addTefillahNote(\"No Mizmor L`Sodah\", 'א\"א מזמור לתודה');\r\n if (dow !== DaysOfWeek.SHABBOS) {\r\n noLaminatzeach();\r\n }\r\n if (dow === DaysOfWeek.FRIDAY) {\r\n addTefillahNote(\"Avinu Malkeinu\", \"אבינו מלכנו\");\r\n }\r\n } else if (isAfternoon) {\r\n addTefillahNote(\"Vidduy\", \"ודוי בעמידה\");\r\n }\r\n if (isDaytime && dow !== DaysOfWeek.FRIDAY) {\r\n addTefillahNote(\"No Avinu Malkeinu\", 'א\"א אבינו מלכנו');\r\n }\r\n dayInfo.noTachnun = true;\r\n break;\r\n case 10:\r\n addDayNote(\"Yom Kippur\", \"יום הכיפורים\");\r\n addDayNote(\"לפני ה' תטהרו\");\r\n if (isDaytime) {\r\n addTefillahNote(\"Yizkor\", \"יזכור\");\r\n if (showGaonShirShelYom && dow !== DaysOfWeek.SHABBOS) {\r\n addTefillahNote('שיר של יום - ל\"ב - לדוד משכיל');\r\n }\r\n }\r\n if (isAfternoon) {\r\n //only Yom Kippur has its own Kriyas Hatorah\r\n addTefillahNote('קה\"ת במנחה סוף פרשת אח\"מ');\r\n }\r\n break;\r\n case 11:\r\n if (isNightTime) {\r\n addDayNote(\"לך אכל בשמחה לחמך כי כבר רצה האלקים את מעשיך\");\r\n }\r\n case 15:\r\n addDayNote(\"First day of Sukkos\", 'יו\"ט ראשון של סוכות');\r\n addTefillahNote(\"Ya`aleh V`yavo\", \"יעלה ויבא\");\r\n if (isDaytime) {\r\n addTefillahNote(\"Full Hallel\", \"הלל השלם\");\r\n if (dow !== DaysOfWeek.SHABBOS) {\r\n addTefillahNote(\"Hoshanos - למען אמתך\", \"הושענות - למען אמתך\");\r\n addTefillahNote(\"Kah Keli\", \"קה קלי\");\r\n if (showGaonShirShelYom) {\r\n addTefillahNote('שיר של יום - ע\"ו - למנצח בנגינות מזמור');\r\n }\r\n } else {\r\n addTefillahNote(\"Hoshanos - אום נצורה\", \"הושענות - אום נצורה\");\r\n }\r\n }\r\n break;\r\n case 16:\r\n case 17:\r\n case 18:\r\n case 19:\r\n case 20:\r\n addTefillahNote(\"Ya`aleh V`yavo\", \"יעלה ויבא\");\r\n if (day === 16 && !israel) {\r\n addDayNote(\"Second day of Sukkos\", \"סוכות - יום טוב שני\");\r\n } else if (!israel) {\r\n addDayNote(\"Chol Hamoed Sukkos\", \"סוכות - חול המועד\");\r\n addTefillahNote(\"Ya`aleh V`yavo\", \"יעלה ויבא\");\r\n }\r\n if (isDaytime) {\r\n addTefillahNote(\"Full Hallel\", \"הלל השלם\");\r\n switch (day) {\r\n case 16:\r\n addTefillahNote(\r\n \"הושענות - \" + (dow === DaysOfWeek.SUNDAY ? \"למען אמתך\" : \"אבן שתיה\")\r\n );\r\n if (showGaonShirShelYom && dow !== DaysOfWeek.SHABBOS) {\r\n addTefillahNote(\"שיר של יום - כ\\\"ט - ..הבו לה' בני אלים\");\r\n }\r\n break;\r\n case 17:\r\n addTefillahNote(\r\n (showEnglish ? \"Hoshanos\" : \"הושענות\") +\r\n \" - \" +\r\n (dow === DaysOfWeek.SHABBOS ? \"אום נצורה\" : \"אערוך שועי\")\r\n );\r\n if (showGaonShirShelYom && dow !== DaysOfWeek.SHABBOS) {\r\n addTefillahNote(\"שיר של יום - נ' - מזמור לאסף\");\r\n }\r\n break;\r\n case 18:\r\n if (dow === DaysOfWeek.SUNDAY) {\r\n addTefillahNote((showEnglish ? \"Hoshanos\" : \"הושענות\") + \" - \" + \"אערוך שועי\");\r\n if (showGaonShirShelYom) {\r\n addTefillahNote(\"שיר של יום - נ' - מזמור לאסף\");\r\n }\r\n } else {\r\n if (dow === DaysOfWeek.TUESDAY) {\r\n addTefillahNote((showEnglish ? \"Hoshanos\" : \"הושענות\") + \" - \" + \"אבן שתיה\");\r\n } else if (dow === DaysOfWeek.THURSDAY) {\r\n addTefillahNote(\r\n (showEnglish ? \"Hoshanos\" : \"הושענות\") + \" - \" + \"אום אני חומה\"\r\n );\r\n } else if (dow === DaysOfWeek.FRIDAY) {\r\n addTefillahNote((showEnglish ? \"Hoshanos\" : \"הושענות\") + \" - \" + \"א-ל למושעות\");\r\n }\r\n if (showGaonShirShelYom && dow !== DaysOfWeek.SHABBOS) {\r\n addTefillahNote('שיר של יום - צ\"ד - ..מי יקום לי..');\r\n }\r\n }\r\n break;\r\n case 19:\r\n addTefillahNote(\r\n (showEnglish ? \"Hoshanos\" : \"הושענות\") +\r\n \" - \" +\r\n (dow === DaysOfWeek.SHABBOS ? \"אום נצורה\" : \"א-ל למושעות\")\r\n );\r\n if (showGaonShirShelYom && dow !== DaysOfWeek.SHABBOS) {\r\n if (dow === DaysOfWeek.MONDAY) {\r\n addTefillahNote('שיר של יום - צ\"ד - ..מי יקום לי..');\r\n } else {\r\n addTefillahNote('שיר של יום - צ\"ד - א-ל נקמות.. ישרי לב');\r\n }\r\n }\r\n break;\r\n case 20:\r\n addTefillahNote(\r\n (showEnglish ? \"Hoshanos\" : \"הושענות\") +\r\n \" - \" +\r\n (dow === DaysOfWeek.SHABBOS ? \"אום נצורה\" : \"אדון המושיע\")\r\n );\r\n if (showGaonShirShelYom && dow !== DaysOfWeek.SHABBOS) {\r\n if (dow === DaysOfWeek.THURSDAY) {\r\n addTefillahNote('שיר של יום - פ\"א - למנצח על הגתית');\r\n } else {\r\n addTefillahNote('שיר של יום - צ\"ד - א-ל נקמות.. ישרי לב');\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n break;\r\n case 21:\r\n addDayNote(\"Hoshana Raba\", \"הושעה רבה\");\r\n addTefillahNote(\"Ya`aleh V`yavo\", \"יעלה ויבא\");\r\n if (isNightTime) {\r\n addTefillahNote(\"Mishneh Torah\", \"משנה תורה\");\r\n } else {\r\n addTefillahNote(\"Hoshanos\", \"הושענות\");\r\n addTefillahNote(\"Full Hallel\", \"הלל השלם\");\r\n if (showGaonShirShelYom) {\r\n if (dow === DaysOfWeek.FRIDAY) {\r\n addTefillahNote('שיר של יום - פ\"ב - מזמור לאסף');\r\n } else {\r\n addTefillahNote('שיר של יום - פ\"א - למנצח על הגתית');\r\n }\r\n }\r\n }\r\n break;\r\n case 22:\r\n addDayNote(\"Shmini Atzeres\", \"שמיני עצרת\");\r\n addTefillahNote(\"Ya`aleh V`yavo\", \"יעלה ויבא\");\r\n if (israel) {\r\n addDayNote(\"Simchas Torah\", \"שמחת תורה\");\r\n addTefillahNote(\"Hakafos\", \"הקפות\");\r\n }\r\n if (isDaytime) {\r\n addTefillahNote(\"Full Hallel\", \"הלל השלם\");\r\n addTefillahNote(\"Yizkor\", \"יזכור\");\r\n addTefillahNote(\"Tefilas Geshem\", \"תפילת גשם\");\r\n addTefillahNote(\"משיב הרוח ומוריד הגשם\");\r\n if (showGaonShirShelYom && dow !== DaysOfWeek.SHABBOS) {\r\n addTefillahNote('שיר של יום - י\"ב - למנצח על השמינית');\r\n }\r\n }\r\n break;\r\n }\r\n if (day === 23) {\r\n if (!israel) {\r\n addDayNote(\"Simchas Torah\", \"שמחת תורה\");\r\n addTefillahNote(\"Ya`aleh V`yavo\", \"יעלה ויבא\");\r\n addTefillahNote(\"Hakafos\", \"הקפות\");\r\n addTefillahNote(\"Full Hallel\", \"הלל השלם\");\r\n } else {\r\n addDayNote(\"Issru Chag\", \"איסרו חג\");\r\n if (isNightTime) {\r\n addDayNote(\"א גוטען ווינטער\", \"חורף טוב\");\r\n } else if (dow !== DaysOfWeek.SHABBOS && isMorning) {\r\n noLaminatzeach();\r\n }\r\n }\r\n } else if (dow === DaysOfWeek.SHABBOS && [15, 17, 18, 19, 20].includes(day)) {\r\n addTefillahNote(\"Megilas Koheles\", \"מגילת קהלת\");\r\n }\r\n if (day < 22) {\r\n addTefillahNote(\"L`Dovid Hashem Ori\", \"לדוד ה\");\r\n } else if (day > 22) {\r\n addTefillahNote(\"Mashiv Haruach U`Morid Hageshem\", \"משיב הרוח ומוריד הגשם\");\r\n }\r\n break;\r\n case m.CHESHVAN:\r\n if (\r\n isDaytime &&\r\n ((dow === DaysOfWeek.MONDAY && day > 3 && day < 13) ||\r\n (dow === DaysOfWeek.THURSDAY && day > 6 && day < 14) ||\r\n (dow === DaysOfWeek.MONDAY && day > 10 && day < 18))\r\n ) {\r\n addTefillahNote(\"Ba`Hab\", 'סליחות בה\"ב');\r\n addTefillahNote(\"Avinu Malkeinu\", \"אבינו מלכנו\");\r\n }\r\n if (day <= 22) {\r\n addTefillahNote(\"Mashiv Haruach U`Morid Hageshem\", \"משיב הרוח ומוריד הגשם\");\r\n }\r\n if (\r\n ((location.Israel && day >= 7) || (!location.Israel && showVsainTalUmatarInChul)) &&\r\n dow !== DaysOfWeek.SHABBOS\r\n ) {\r\n addTefillahNote(\"V`sain Tal U`matar\", \"ותן טל ומטר\");\r\n }\r\n break;\r\n case m.KISLEV:\r\n if (\r\n ((location.Israel && day <= 7) || (!location.Israel && showVsainTalUmatarInChul)) &&\r\n dow !== DaysOfWeek.SHABBOS\r\n ) {\r\n addTefillahNote(\"V`sain Tal U`matar\", \"ותן טל ומטר\");\r\n } else if (day === 24 && dow !== DaysOfWeek.SHABBOS && isAfternoon) {\r\n dayInfo.noTachnun = true;\r\n } else if (day >= 25) {\r\n dayInfo.noTachnun = true;\r\n addDayNote(\"Chanukah\", \"חנוכה\");\r\n addTefillahNote(\"Al Hanissim\", \"על הניסים\");\r\n if (isDaytime) {\r\n addTefillahNote(\"Full Hallel\", \"הלל השלם\");\r\n if (isMorning && dow !== DaysOfWeek.SHABBOS) noLaminatzeach();\r\n if (showGaonShirShelYom && day !== 30 && dow !== DaysOfWeek.SHABBOS) {\r\n addTefillahNote(\"שיר של יום - ל' - מזמור שיר חנוכת הבית\");\r\n }\r\n }\r\n }\r\n break;\r\n case m.TEVES:\r\n if (!location.Israel && showVsainTalUmatarInChul && dow !== DaysOfWeek.SHABBOS) {\r\n addTefillahNote(\"V`sain Tal U`matar\", \"ותן טל ומטר\");\r\n }\r\n if (day <= (jDate.isShortKislev(jdate.Year) ? 3 : 2)) {\r\n dayInfo.noTachnun = true;\r\n addDayNote(\"Chanukah\", \"חנוכה\");\r\n addTefillahNote(\"Al Hanissim\", \"על הניסים\");\r\n if (isDaytime) {\r\n addTefillahNote(\"Full Hallel\", \"הלל השלם\");\r\n if (isMorning && dow !== DaysOfWeek.SHABBOS) {\r\n noLaminatzeach();\r\n if (day !== 1 && showGaonShirShelYom) {\r\n addTefillahNote(\"שיר של יום - ל' - מזמור שיר חנוכת הבית\");\r\n }\r\n }\r\n }\r\n } else if (day === 10 && isDaytime) {\r\n addDayNote(\"Fast of Asara B`Teves\", \"עשרה בטבת\");\r\n if (isMorning) {\r\n addTefillahNote(\"Selichos\", \"סליחות\");\r\n }\r\n addTefillahNote(\"Avinu Malkeinu\", \"אבינו מלכנו\");\r\n addTefillahNote(\"Aneinu\", \"עננו\");\r\n }\r\n break;\r\n case m.SHVAT:\r\n if (day === 14 && isAfternoon) dayInfo.noTachnun = true;\r\n if (day === 15) {\r\n dayInfo.noTachnun = true;\r\n addDayNote(\"Tu B`Shvat\", 'ט\"ו בשבט');\r\n }\r\n break;\r\n case m.ADAR:\r\n case m.ADAR_SHEINI:\r\n if (month === m.ADAR && isLeapYear) {\r\n //Adar Rishon in a leap year\r\n if (day === 13 && isAfternoon) dayInfo.noTachnun = true;\r\n if ([14, 15].includes(day)) {\r\n addDayNote(\r\n day === 14\r\n ? showEnglish\r\n ? \"Purim Katan\"\r\n : \"פורים קטן\"\r\n : showEnglish\r\n ? \"Shushan Purim Katan\"\r\n : \"שושן פורים קטן\"\r\n );\r\n if (isDaytime) {\r\n dayInfo.noTachnun = true;\r\n if (isMorning && dow !== DaysOfWeek.SHABBOS) {\r\n noLaminatzeach();\r\n }\r\n }\r\n }\r\n } else {\r\n //The \"real\" Adar: the only one in a non-leap-year or Adar Sheini\r\n if (\r\n isDaytime &&\r\n ((day === 11 && dow === DaysOfWeek.THURSDAY) ||\r\n (day === 13 && dow !== DaysOfWeek.SHABBOS))\r\n ) {\r\n if (isMorning) {\r\n addDayNote(\"Fast of Ta`anis Esther\", \"תענית אסתר\");\r\n addTefillahNote(\"Selichos\", \"סליחות\");\r\n }\r\n addTefillahNote(\"Avinu Malkeinu\", \"אבינו מלכנו\");\r\n addTefillahNote(\"Aneinu\", \"עננו\");\r\n } else {\r\n //Only ירושלים says על הניסים on ט\"ו\r\n const isYerushalayim = location.Name === \"Jerusalem\" || location.NameHebrew === \"ירושלים\";\r\n if (day === 14) {\r\n dayInfo.noTachnun = true;\r\n if (isMorning && dow !== DaysOfWeek.SHABBOS) {\r\n noLaminatzeach();\r\n }\r\n //On a Purim Meshulash in Yerushalayim, מגילת אסתר is on י\"ד\r\n if (!isYerushalayim || dow === DaysOfWeek.FRIDAY) {\r\n addDayNote(\"Megilas Esther\", \"מגילת אסתר\");\r\n if (!isYerushalayim) {\r\n addDayNote(\"Purim\", \"פורים\");\r\n addTefillahNote(\"Al Hanissim\", \"על הניסים\");\r\n if (showGaonShirShelYom) {\r\n addTefillahNote('שיר של יום - כ\"ב - למנצח על אילת השחר');\r\n }\r\n } else {\r\n //On a Purim Meshulash in Yerushalayim, מתנות לאביונים is on י\"ד\r\n addDayNote(\"Matanos LeEvyonim\", \"מתנות לאביונים\");\r\n }\r\n } else {\r\n addDayNote(\"Purim D`Prazim\", \"פורים דפרזים\");\r\n }\r\n } else if (day === 15) {\r\n dayInfo.noTachnun = true;\r\n if (isMorning && dow !== DaysOfWeek.SHABBOS) {\r\n noLaminatzeach();\r\n }\r\n if (isYerushalayim) {\r\n addDayNote(\"Purim\", \"פורים\");\r\n addTefillahNote(\"Al Hanissim\", \"על הניסים\");\r\n if (dow !== DaysOfWeek.SHABBOS) {\r\n addDayNote(\"Megilas Esther\", \"מגילת אסתר\");\r\n }\r\n if (showGaonShirShelYom && isDaytime && dow !== DaysOfWeek.SHABBOS) {\r\n addTefillahNote('שיר של יום - כ\"ב - למנצח על אילת השחר');\r\n }\r\n } else if (\r\n [\r\n \"טבריה\",\r\n \"יפו\",\r\n \"עכו\",\r\n \"צפת\",\r\n \"באר שבע\",\r\n \"חיפה\",\r\n \"באר שבע\",\r\n \"בית שאן\",\r\n \"לוד\",\r\n ].includes(location.Name)\r\n ) {\r\n addDayNote(\"Purim D`Mukafin\", \"פורים דמוקפין\");\r\n if (dow !== DaysOfWeek.SHABBOS) {\r\n addDayNote(\"(Megilas Esther)\", \"(מגילת אסתר)\");\r\n }\r\n } else {\r\n addDayNote(\"Shushan Purim\", \"שושן פורים\");\r\n }\r\n } else if (day === 16 && isYerushalayim && dow === DaysOfWeek.SUNDAY) {\r\n addDayNote(\"Purim Seuda and Mishloach Manos\", \"סעודת פורים ומשלוח מנות\");\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n}\r\n\r\nfunction noLaminatzeach() {\r\n addTefillahNote(\"No Laminatzeach\", 'א\"א למנצח');\r\n}\r\n\r\nfunction addDayNote(englishOrDefaultText: string, hebrewText?: string) {\r\n const note = showEnglish || !hebrewText ? englishOrDefaultText : hebrewText;\r\n if (!dayNotes.includes(note)) {\r\n dayNotes.push(note);\r\n }\r\n}\r\n\r\nfunction addTefillahNote(englishOrDefaultText: string, hebrewText?: string) {\r\n const note = showEnglish || !hebrewText ? englishOrDefaultText : hebrewText;\r\n if (!tefillahNotes.includes(note)) {\r\n tefillahNotes.push(note);\r\n }\r\n}\r\n\r\nfunction hasOwnKriyasHatorah(jdate: jDate, location: Location) {\r\n const { Month, Day, DayOfWeek } = jdate;\r\n //Rosh chodesh\r\n if (Day === 1 || Day === 30) {\r\n return true;\r\n }\r\n switch (Month) {\r\n case 1:\r\n return Day > 14 && Day < 22;\r\n case 4:\r\n return Day === 17 || (DayOfWeek === 0 && Day === 18);\r\n case 5:\r\n return Day === 9 || (DayOfWeek === 0 && Day === 10);\r\n case 7:\r\n return [3, 16, 17, 18, 19, 20, 21].includes(Day) || (DayOfWeek === 0 && Day === 4);\r\n case 9:\r\n return Day >= 25;\r\n case 10:\r\n return Day === 10 || Day < 3 || (Day === 3 && jDate.isShortKislev(jdate.Year));\r\n case 12:\r\n case 13:\r\n return (\r\n Month === (jDate.isJdLeapY(jdate.Year) ? m.ADAR_SHEINI : m.ADAR) &&\r\n (Day === 13 || Day === (location.Name === \"ירושלים\" ? 15 : 14))\r\n );\r\n default:\r\n return false;\r\n }\r\n}\r\n"]}
|