{"version":3,"sources":["jsdelivr-header.js","/npm/@kenjiuno/msgreader@1.22.0/lib/MsgReader.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAkBA,IAAI,gBAAmB,MAAQ,KAAK,iBAAoB,SAAU,GAC9D,OAAQ,GAAO,EAAI,WAAc,EAAM,CAAE,QAAW,EACxD,EACA,OAAO,eAAe,QAAS,aAAc,CAAE,OAAO,IACtD,QAAQ,cAAgB,QAAQ,QAAU,QAAQ,aAAe,QAAQ,YAAc,QAAQ,oBAAiB,EAChH,IAmBI,SAMA,QAzBA,QAAU,gBAAgB,QAAQ,YAClC,aAAe,gBAAgB,QAAQ,iBACvC,SAAW,QAAQ,YACnB,SAAW,QAAQ,YACnB,QAAU,QAAQ,WAClB,oBAAsB,QAAQ,uBAC9B,mBAAqB,QAAQ,sBAC7B,qBAAuB,QAAQ,wBAC/B,cAAgB,QAAQ,iBACxB,yBAA2B,QAAQ,4BACnC,yBAA2B,QAAQ,4BAqBvC,SAAS,oBAAoB,GACzB,OAAQ,EAAO,aAAsB,GACzC,CAtBA,OAAO,eAAe,QAAS,iBAAkB,CAAE,YAAY,EAAM,IAAK,WAAc,OAAO,yBAAyB,cAAgB,IACxI,OAAO,eAAe,QAAS,cAAe,CAAE,YAAY,EAAM,IAAK,WAAc,OAAO,yBAAyB,WAAa,IAClI,OAAO,eAAe,QAAS,eAAgB,CAAE,YAAY,EAAM,IAAK,WAAc,OAAO,yBAAyB,YAAc,IACpI,OAAO,eAAe,QAAS,UAAW,CAAE,YAAY,EAAM,IAAK,WAAc,OAAO,yBAAyB,OAAS,IAC1H,OAAO,eAAe,QAAS,gBAAiB,CAAE,YAAY,EAAM,IAAK,WAAc,OAAO,yBAAyB,aAAe,IAKtI,SAAW,GACP,EAAS,EAAoB,UAAI,GAAK,YACtC,EAAS,EAAmB,SAAI,GAAK,WACrC,EAAS,EAAe,KAAI,GAAK,MACpC,CAJD,CAIG,WAAa,SAAW,CAAC,IAE5B,SAAW,GACP,EAAQ,EAAc,KAAI,GAAK,OAC/B,EAAQ,EAAe,MAAI,GAAK,QAChC,EAAQ,EAAe,MAAI,GAAK,OACnC,CAJD,CAIG,UAAY,QAAU,CAAC,IAO1B,IAAI,UAA2B,WAC3B,SAAS,EAAU,GACf,KAAK,OAAS,IAAI,SAAS,OAAO,EACtC,CAuaA,OAtaA,EAAU,UAAU,YAAc,SAAU,EAAY,EAAW,EAAU,EAAc,GACvF,IAAI,EAAQ,IACR,EAAK,IAAI,aAAa,QAAQ,EAAO,EAAG,aAAa,QAAQ,eAC7D,EAAM,QAAQ,QAAQ,IAAI,MAAM,kBAAkB,GAAG,OAAO,GAAY,OAAO,KAC5E,QAAQ,QAAQ,IAAI,MAAM,aAAa,GAC1C,EAAU,QAAQ,KAClB,OAAc,EACd,OAAc,EACd,EAAa,SAAS,KAAK,OAAO,IACtC,GAAI,GAAc,MAAQ,CACtB,IAAI,EAAQ,KAAK,kBAAkB,GACnC,GAAI,EACA,GAAI,EAAM,QACN,EAAM,EAAM,KACZ,EAAU,QAAQ,UAEjB,CACD,EAAc,EAAM,YACpB,GAAc,EAAI,QAAQ,QAAQ,EAAM,aACxC,IAAI,EAAU,QAAQ,QAAQ,IAAI,MAAM,eAAe,EAAM,aAC7D,QAAgB,IAAZ,EAAuB,CACvB,IAAI,EAAO,EAAQ,EAAM,kBACZ,IAAT,SACoB,IAAhB,EAAK,QACL,EAAM,EAAK,OACX,EAAU,QAAQ,OAGlB,EAAM,EAAK,GACX,EAAU,QAAQ,OAG9B,CACJ,CAER,CACA,IAAI,EAAQ,EACR,GAAO,EACP,EAAW,QAAQ,QAAQ,IAAI,MAAM,aAAa,GAEjD,GAAiB,WAAb,EACL,EAAQ,EAAG,WAAW,EAAM,OAAQ,GACpC,EAAO,OAEN,GAAiB,YAAb,EACL,EAAQ,EAAG,eAAe,EAAM,OAAS,GACzC,EAAO,OAEN,GAAiB,WAAb,EACL,EAAO,OAEN,GAAiB,YAAb,EACL,EAAQ,EAAG,kBAEV,GAAiB,YAAb,EACL,IAAQ,EAAG,kBAEV,GAAiB,SAAb,EAAqB,CAC1B,IACI,EADK,EAAG,aACS,WAAe,EAAG,aACvC,EAAQ,IAAI,KAAK,oBAAoB,IAAW,aACpD,CAKK,GAJD,IACA,OAAM,GAGO,qBAAR,EACL,EAAM,gBACN,EAAU,QAAQ,KAClB,GAAQ,EAAI,mBAAmB,OAAO,QAErC,GACU,0BAAR,GACQ,wBAAR,GACQ,mBAAR,EACH,EAAU,QAAQ,KAClB,GAAQ,EAAI,qBAAqB,OAAO,QAEvC,GAAY,mBAAR,EACL,GAAQ,EAAI,cAAc,OAAO,QAEhC,GAAY,cAAR,EACL,IACI,GAAQ,EAAI,yBAAyB,OAAO,EAAI,EACpD,CACA,MAAO,GACH,QAAQ,MAAM,GAEd,OAAM,CACV,MAEC,GAAY,cAAR,EAAqB,CACZ,IAIL,EACL,EAAQ,KAJE,IAML,EACL,EAAQ,KANG,IAQN,IACL,EAAQ,MAEhB,KACiB,wBAAR,IACL,GAAQ,EAAI,QAAQ,cAAc,IAGtC,MAAO,CAAE,IAAK,EAAK,QAAS,EAAS,MAAO,EAAO,cAAe,EAAM,YADtD,GAAG,OAAO,GAAY,OAAO,GACmD,YAAa,EAAa,YAAa,EAC7I,EACA,EAAU,UAAU,mBAAqB,SAAU,EAAc,EAAkB,GAC/E,IAAI,EAAQ,EAAiB,KAAK,UAAU,IAAI,cAC5C,EAAa,EAAM,UAAU,EAAG,GAChC,EAAY,EAAM,UAAU,EAAG,GACnC,EAAa,kBAAoB,EAAa,iBAAiB,EAAQ,SAAS,EAAM,UAAU,EAAG,GAAI,IAAK,EAAiB,YACzH,GAAc,QAAQ,QAAQ,IAAI,MAAM,cAAc,iBAEtD,EAAO,OAAS,EAAiB,OACjC,EAAO,cAAgB,EAAiB,QAGxC,KAAK,kBAAkB,EAAc,EAAQ,KAAK,YAAY,EAAY,EAAW,EAAiB,SAAU,EAAa,cAAc,GAEnJ,EACA,EAAU,UAAU,kBAAoB,SAAU,EAAc,EAAQ,GACpE,IAAI,EAAM,EAAK,IAAK,EAAU,EAAK,QAAS,EAAQ,EAAK,WAC7C,IAAR,GACI,IAAY,QAAQ,OACpB,EAAO,GAAO,IAGe,IAAjC,EAAa,kBACb,EAAO,SAAW,EAAO,UAAY,GAChC,EAAK,eACN,EAAO,SAAS,KAAK,CACjB,YAAa,EAAK,YAClB,YAAa,EAAK,YAClB,YAAa,EAAK,YAClB,aAAe,EAAK,UAAY,QAAQ,MAAS,EAAK,SAAM,EAC5D,MAAO,IAIvB,EACA,EAAU,UAAU,aAAe,SAAU,GAEzC,OADY,EAAc,KAAK,UAAU,IAAI,cAChC,UAAU,EAAG,EAC9B,EACA,EAAU,UAAU,mBAAqB,SAAU,EAAc,EAAa,EAAY,GACtF,IAAI,EAAQ,KACZ,GAA6E,GAAzE,EAAY,KAAK,QAAQ,QAAQ,QAAQ,IAAI,MAAM,OAAO,YAAkB,CAE5E,IAAI,EAAkB,CAClB,SAAU,cAEd,EAAO,YAAY,KAAK,GACxB,KAAK,cAAc,EAAc,EAAa,EAAY,EAAiB,aAC/E,MACK,GAA4E,GAAxE,EAAY,KAAK,QAAQ,QAAQ,QAAQ,IAAI,MAAM,OAAO,WAAiB,CAEhF,IAAI,EAAiB,CACjB,SAAU,aAEd,EAAO,WAAW,KAAK,GACvB,KAAK,cAAc,EAAc,EAAa,EAAY,EAAgB,QAC9E,MACK,GAAyE,GAArE,EAAY,KAAK,QAAQ,QAAQ,QAAQ,IAAI,MAAM,OAAO,QAE/D,KAAK,gBAAgB,EAAc,EAAa,EAAY,OAE3D,CAGD,GADqB,KAAK,aAAa,IACjB,QAAQ,QAAQ,IAAI,MAAM,SAAS,eAGpD,CACD,IAAI,EAAwB,CACxB,SAAU,MACV,YAAa,GACb,WAAY,IAEhB,KAAK,cAAc,EAAc,EAAa,EAAY,EAAuB,OACjF,EAAO,sBAAwB,EAC/B,EAAO,iBAAkB,EACzB,EAAO,SAAW,EAAY,OAC9B,KAAK,gBAAgB,EAAY,QAAU,WAAc,OAAO,EAAM,QAAQ,EAAa,EAAa,CAC5G,CACJ,CACJ,EACA,EAAU,UAAU,QAAU,SAAU,EAAQ,GAC5C,IAAI,EAAU,CACV,CACI,KAAM,aACN,KAAM,SAAS,KACf,SAAU,GACV,OAAQ,IAIhB,OADA,KAAK,eAAe,EAAS,EAAG,EAAQ,EAAY,IAC7C,EAAI,SAAS,MAAM,EAC9B,EACA,EAAU,UAAU,eAAiB,SAAU,EAAS,EAAO,EAAQ,EAAY,GAoB/E,IAnBA,IAAI,EAAU,SAAU,GACpB,IAAI,EAAW,EAAI,SAAU,EAAW,EAAI,OAC5C,GAAc,IAAV,GAA4B,4BAAb,EAAI,KAAoC,CACvD,IAAI,EAAM,IACN,EAAQ,IAAI,WAAW,EAAI,OAAS,GACxC,EAAM,IAAI,EAAI,SAAS,EAAG,IAAK,GAC/B,EAAM,IAAI,EAAI,SAAS,IAAK,IAC5B,EAAW,WAAc,OAAO,CAAO,EACvC,EAAW,EAAM,MACrB,CACA,IAAI,EAAW,EAAQ,OACvB,EAAQ,GAAO,SAAS,KAAK,GAC7B,EAAQ,KAAK,CACT,KAAM,EAAI,KACV,KAAM,SAAS,SACf,eAAgB,EAChB,OAAQ,GAEhB,EACS,EAAK,EAAG,EAAK,EAAO,eAAgB,EAAK,EAAG,OAAQ,IAAM,CAE/D,EADU,EAAG,GAEjB,CACA,GAAc,IAAV,EAIA,IAFA,IAES,EAAK,EAAG,EAFH,EAAW,aACpB,QAAO,SAAU,GAAM,OAAO,EAAG,OAAS,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAQ,IAClD,EAAK,EAAU,OAAQ,IAAM,CAC/D,IAAI,EAAS,EAAU,GACnB,EAAW,EAAQ,OACvB,EAAQ,GAAO,SAAS,KAAK,GAC7B,EAAQ,KAAK,CACT,KAAM,EAAO,KACb,KAAM,SAAS,UACf,SAAU,GACV,OAAQ,IAEZ,KAAK,eAAe,EAAS,EAAU,EAAQ,EAAY,EAAQ,EACvE,CAEJ,IAAK,IAAI,EAAK,EAAG,EAAK,EAAO,aAAc,EAAK,EAAG,OAAQ,IAAM,CAC7D,IAAI,EAAY,EAAG,GACf,EAAW,EAAQ,OACvB,EAAQ,GAAO,SAAS,KAAK,GAC7B,EAAQ,KAAK,CACT,KAAM,EAAU,KAChB,KAAM,SAAS,UACf,SAAU,GACV,OAAQ,IAEZ,KAAK,eAAe,EAAS,EAAU,EAAW,EAAY,EAAQ,EAC1E,CACJ,EACA,EAAU,UAAU,mCAAqC,SAAU,EAAc,EAAkB,GAC/F,IAAI,EAAmB,EAAiB,WACpC,EAAe,IAAI,aAAa,QAAQ,EAAkB,EAAG,aAAa,QAAQ,eACtF,KAAK,yBAAyB,EAAc,EAAc,EAC9D,EACA,EAAU,UAAU,yBAA2B,SAAU,EAAc,EAAc,GAsBjF,IAnBA,IAMI,EAAU,WACV,IAAI,EAAc,EAAa,aAC/B,GAAoB,IAAhB,EACA,MAAO,QAEC,EAAa,aAAzB,IACI,EAAM,EAAa,eAAe,GACtC,EAAa,iBAAiB,EAAQ,EAAa,GACnD,IAAI,GAAa,EAAI,QAAQ,QAAS,EAAc,MAAS,OACzD,GAAY,EAAI,QAAQ,QAAsB,MAAd,GACpC,EAAO,kBAAkB,EAAc,EAAQ,EAAO,YAAY,EAAY,GAAW,WAAc,OAAO,CAAK,GAAG,EAAa,cAAc,GACrJ,EACI,EAAS,MACL,EAAa,SAAS,CAE1B,GAAgB,UADF,IAEV,KACR,CACJ,EACA,EAAU,UAAU,qBAAuB,SAAU,EAAc,EAAkB,GACjF,IAAI,EAAmB,EAAiB,WACpC,EAAe,IAAI,aAAa,QAAQ,EAAkB,GAAI,aAAa,QAAQ,eACvF,KAAK,yBAAyB,EAAc,EAAc,EAC9D,EACA,EAAU,UAAU,cAAgB,SAAU,EAAc,EAAa,EAAY,EAAQ,GACzF,IAAK,IAAI,EAAK,EAAG,EAAK,EAAY,aAAc,EAAK,EAAG,OAAQ,IAAM,CAClE,IAAI,EAAY,EAAG,GACnB,KAAK,mBAAmB,EAAc,EAAW,EAAY,EACjE,CACA,IAAK,IAAI,EAAK,EAAG,EAAK,EAAY,eAAgB,EAAK,EAAG,OAAQ,IAAM,CACpE,IAAI,EAAU,EAAG,GAE2D,GAAnE,EAAQ,KAAK,QAAQ,QAAQ,QAAQ,IAAI,MAAM,OAAO,UAC3D,KAAK,mBAAmB,EAAc,EAAS,GAEzB,4BAAjB,EAAQ,OACI,UAAb,GAAqC,eAAb,GAA0C,QAAb,EACrD,KAAK,mCAAmC,EAAc,EAAS,GAE7C,SAAb,GACL,KAAK,qBAAqB,EAAc,EAAS,GAG7D,CACJ,EACA,EAAU,UAAU,gBAAkB,SAAU,EAAc,EAAa,EAAY,GAInF,IAHA,IAAI,OAAY,EACZ,OAAc,EACd,OAAa,EACR,EAAK,EAAG,EAAK,EAAY,eAAgB,EAAK,EAAG,OAAQ,IAAM,CACpE,IAAI,EAAU,EAAG,GAEZ,GAAuE,GAAnE,EAAQ,KAAK,QAAQ,QAAQ,QAAQ,IAAI,MAAM,OAAO,UAAgB,CAC3E,IAAI,EAAQ,EAAQ,KAAK,UAAU,IAAI,cACnC,EAAa,EAAM,UAAU,EAAG,GAChC,EAAY,EAAM,UAAU,EAAG,GAEX,SAAf,GAAuC,SAAd,EAC9B,EAAY,EAAQ,WAEA,SAAf,GAAuC,SAAd,EAC9B,EAAa,EAAQ,WAED,SAAf,GAAuC,SAAd,IAC9B,EAAc,EAAQ,WAE9B,CACJ,CAEA,QAAkB,IAAd,QAA2C,IAAhB,QAA4C,IAAf,EAGxD,IAFA,IAAI,GAAU,EAAI,oBAAoB,OAAO,GACzC,EAAe,IAAI,aAAa,QAAQ,EAAa,EAAG,aAAa,QAAQ,eACxE,EAAK,EAAG,EAAY,EAAS,EAAK,EAAU,OAAQ,IAAM,CAC/D,IAAI,EAAQ,EAAU,GACtB,GAAI,EAAM,iBAAkB,CACxB,EAAa,KAAK,EAAM,KACxB,IAAI,EAAe,EAAa,aAChC,KAAK,kBAAkB,MAAS,EAAM,eAAiB,CACnD,SAAS,EACT,KAAM,EAAa,eAAe,EAAe,GAEzD,MAEI,KAAK,kBAAkB,MAAS,EAAM,eAAiB,CACnD,SAAS,EACT,YAAkC,IAApB,EAAM,UAAmB,uCACZ,IAApB,EAAM,UAAmB,wCACtB,EAAI,QAAQ,mBAAmB,EAAW,IAAM,EAAM,UAAY,IAC5E,YAAa,EAAM,IAG/B,CAGR,EAIA,EAAU,UAAU,iBAAmB,SAAU,GAC7C,IAAI,EAAS,CACT,SAAU,MACV,YAAa,GACb,WAAY,IAGhB,OADA,KAAK,cAAc,EAAc,KAAK,OAAO,aAAc,KAAK,OAAO,aAAc,EAAQ,QACtF,CACX,EAIA,EAAU,UAAU,aAAe,SAAU,GAEzC,OADA,KAAK,OAAO,QACL,KAAK,iBAAiB,EACjC,EACA,EAAU,UAAU,YAAc,WAC9B,IAAI,EAAI,EAAI,EACZ,QAAwB,IAApB,KAAK,WAA0B,CAC/B,IAAK,KAAK,OAAO,YACb,MAAO,CACH,SAAU,KACV,MAAO,0BAGf,KAAK,gBAAkB,CAAC,EACxB,KAAK,kBAAoB,CAAC,EAC1B,KAAK,WAAa,KAAK,aAAa,CAChC,kBAAgD,QAA5B,EAAK,KAAK,oBAAiC,IAAP,OAAgB,EAAS,EAAG,mBAAqB,WAAgB,EACzH,mBAA+C,QAA5B,EAAK,KAAK,oBAAiC,IAAP,OAAgB,EAAS,EAAG,iBACnF,cAAc,EAAI,QAAQ,aAA0C,QAA5B,EAAK,KAAK,oBAAiC,IAAP,OAAgB,EAAS,EAAG,eAEhH,CACA,OAAO,KAAK,UAChB,EAMA,EAAU,UAAU,cAAgB,SAAU,GAC1C,IAAI,EAA+B,iBAAX,EAAsB,KAAK,WAAW,YAAY,GAAU,EACpF,IAAmC,IAA/B,EAAW,iBAA2D,iBAAxB,EAAW,SAEzD,MAAO,CAAE,SAAU,EAAW,KAAO,OAAQ,QAAS,KAAK,gBAAgB,EAAW,aAItF,IAAI,EAAY,KAAK,OAAO,WAAW,EAAW,QAClD,MAAO,CAAE,SAAU,EAAW,SAAU,QAAS,EAEzD,EACO,CACX,CA3a8B,GA4a9B,QAAQ,QAAU","file":"/npm/@kenjiuno/msgreader@1.22.0/lib/MsgReader.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@kenjiuno/msgreader@1.22.0/lib/MsgReader.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\r\n/* Copyright 2016 Yury Karpovich\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n *     http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/*\r\n MSG Reader\r\n */\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.OverrideFlags = exports.EndType = exports.CalendarType = exports.PatternType = exports.RecurFrequency = void 0;\r\nvar const_1 = __importDefault(require(\"./const\"));\r\nvar DataStream_1 = __importDefault(require(\"./DataStream\"));\r\nvar Reader_1 = require(\"./Reader\");\r\nvar Burner_1 = require(\"./Burner\");\r\nvar utils_1 = require(\"./utils\");\r\nvar EntryStreamParser_1 = require(\"./EntryStreamParser\");\r\nvar VerbStreamParser_1 = require(\"./VerbStreamParser\");\r\nvar TZDEFINITIONParser_1 = require(\"./TZDEFINITIONParser\");\r\nvar TZREGParser_1 = require(\"./TZREGParser\");\r\nvar AppointmentRecurParser_1 = require(\"./AppointmentRecurParser\");\r\nvar AppointmentRecurParser_2 = require(\"./AppointmentRecurParser\");\r\nObject.defineProperty(exports, \"RecurFrequency\", { enumerable: true, get: function () { return AppointmentRecurParser_2.RecurFrequency; } });\r\nObject.defineProperty(exports, \"PatternType\", { enumerable: true, get: function () { return AppointmentRecurParser_2.PatternType; } });\r\nObject.defineProperty(exports, \"CalendarType\", { enumerable: true, get: function () { return AppointmentRecurParser_2.CalendarType; } });\r\nObject.defineProperty(exports, \"EndType\", { enumerable: true, get: function () { return AppointmentRecurParser_2.EndType; } });\r\nObject.defineProperty(exports, \"OverrideFlags\", { enumerable: true, get: function () { return AppointmentRecurParser_2.OverrideFlags; } });\r\n/**\r\n * CONST.MSG.PROP.TYPE_ENUM\r\n */\r\nvar TypeEnum;\r\n(function (TypeEnum) {\r\n    TypeEnum[TypeEnum[\"DIRECTORY\"] = 1] = \"DIRECTORY\";\r\n    TypeEnum[TypeEnum[\"DOCUMENT\"] = 2] = \"DOCUMENT\";\r\n    TypeEnum[TypeEnum[\"ROOT\"] = 5] = \"ROOT\";\r\n})(TypeEnum || (TypeEnum = {}));\r\nvar KeyType;\r\n(function (KeyType) {\r\n    KeyType[KeyType[\"root\"] = 0] = \"root\";\r\n    KeyType[KeyType[\"toSub\"] = 1] = \"toSub\";\r\n    KeyType[KeyType[\"named\"] = 2] = \"named\";\r\n})(KeyType || (KeyType = {}));\r\nfunction fileTimeToUnixEpoch(time) {\r\n    return (time - 116444736000000000) / 10000;\r\n}\r\n/**\r\n * The core implementation of MsgReader\r\n */\r\nvar MsgReader = /** @class */ (function () {\r\n    function MsgReader(arrayBuffer) {\r\n        this.reader = new Reader_1.Reader(arrayBuffer);\r\n    }\r\n    MsgReader.prototype.decodeField = function (fieldClass, fieldType, provider, ansiEncoding, insideProps) {\r\n        var array = provider();\r\n        var ds = new DataStream_1.default(array, 0, DataStream_1.default.LITTLE_ENDIAN);\r\n        var key = const_1.default.MSG.FIELD.FULL_NAME_MAPPING[\"\".concat(fieldClass).concat(fieldType)]\r\n            || const_1.default.MSG.FIELD.NAME_MAPPING[fieldClass];\r\n        var keyType = KeyType.root;\r\n        var propertySet = undefined;\r\n        var propertyLid = undefined;\r\n        var classValue = parseInt(\"0x\".concat(fieldClass));\r\n        if (classValue >= 0x8000) {\r\n            var keyed = this.privatePidToKeyed[classValue];\r\n            if (keyed) {\r\n                if (keyed.useName) {\r\n                    key = keyed.name;\r\n                    keyType = KeyType.named;\r\n                }\r\n                else {\r\n                    propertySet = keyed.propertySet;\r\n                    propertyLid = (0, utils_1.toHex4)(keyed.propertyLid);\r\n                    var lidDict = const_1.default.MSG.FIELD.PIDLID_MAPPING[keyed.propertySet];\r\n                    if (lidDict !== undefined) {\r\n                        var prop = lidDict[keyed.propertyLid];\r\n                        if (prop !== undefined) {\r\n                            if (prop.dispid !== undefined) {\r\n                                key = prop.dispid; // e.g. `votingResponse`\r\n                                keyType = KeyType.root;\r\n                            }\r\n                            else {\r\n                                key = prop.id; // e.g. `PidLidVerbStream` listed in SomeParsedOxProps\r\n                                keyType = KeyType.toSub;\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        var value = array;\r\n        var skip = false;\r\n        var decodeAs = const_1.default.MSG.FIELD.TYPE_MAPPING[fieldType];\r\n        if (0) { }\r\n        else if (decodeAs === \"string\") {\r\n            value = ds.readString(array.length, ansiEncoding);\r\n            skip = insideProps;\r\n        }\r\n        else if (decodeAs === \"unicode\") {\r\n            value = ds.readUCS2String(array.length / 2);\r\n            skip = insideProps;\r\n        }\r\n        else if (decodeAs === \"binary\") {\r\n            skip = insideProps;\r\n        }\r\n        else if (decodeAs === \"integer\") {\r\n            value = ds.readUint32();\r\n        }\r\n        else if (decodeAs === \"boolean\") {\r\n            value = ds.readUint16() ? true : false;\r\n        }\r\n        else if (decodeAs === \"time\") {\r\n            var lo = ds.readUint32();\r\n            var fileTime = lo + (4294967296.0 * ds.readUint32());\r\n            value = new Date(fileTimeToUnixEpoch(fileTime)).toUTCString();\r\n        }\r\n        if (skip) {\r\n            key = undefined;\r\n        }\r\n        if (0) { }\r\n        else if (key === \"PidLidVerbStream\") {\r\n            key = \"votingOptions\";\r\n            keyType = KeyType.root;\r\n            value = (0, VerbStreamParser_1.parse)(ds);\r\n        }\r\n        else if (false\r\n            || key === \"apptTZDefStartDisplay\"\r\n            || key === \"apptTZDefEndDisplay\"\r\n            || key === \"apptTZDefRecur\") {\r\n            keyType = KeyType.root;\r\n            value = (0, TZDEFINITIONParser_1.parse)(ds);\r\n        }\r\n        else if (key === \"timeZoneStruct\") {\r\n            value = (0, TZREGParser_1.parse)(ds);\r\n        }\r\n        else if (key === \"apptRecur\") {\r\n            try {\r\n                value = (0, AppointmentRecurParser_1.parse)(ds, ansiEncoding);\r\n            }\r\n            catch (ex) {\r\n                console.debug(ex);\r\n                // drop this data\r\n                key = undefined;\r\n            }\r\n        }\r\n        else if (key === \"recipType\") {\r\n            var MAPI_TO = 1;\r\n            var MAPI_CC = 2;\r\n            var MAPI_BCC = 3;\r\n            if (0) { }\r\n            else if (value === MAPI_TO) {\r\n                value = \"to\";\r\n            }\r\n            else if (value === MAPI_CC) {\r\n                value = \"cc\";\r\n            }\r\n            else if (value === MAPI_BCC) {\r\n                value = \"bcc\";\r\n            }\r\n        }\r\n        else if (key === \"globalAppointmentID\") {\r\n            value = (0, utils_1.bin2HexUpper)(ds);\r\n        }\r\n        var propertyTag = \"\".concat(fieldClass).concat(fieldType);\r\n        return { key: key, keyType: keyType, value: value, notForRawProp: skip, propertyTag: propertyTag, propertySet: propertySet, propertyLid: propertyLid, };\r\n    };\r\n    MsgReader.prototype.fieldsDataDocument = function (parserConfig, documentProperty, fields) {\r\n        var value = documentProperty.name.substring(12).toLowerCase();\r\n        var fieldClass = value.substring(0, 4);\r\n        var fieldType = value.substring(4, 8);\r\n        parserConfig.propertyObserver && parserConfig.propertyObserver(fields, parseInt(value.substring(0, 8), 16), documentProperty.provider());\r\n        if (fieldClass == const_1.default.MSG.FIELD.CLASS_MAPPING.ATTACHMENT_DATA) {\r\n            // attachment specific info\r\n            fields.dataId = documentProperty.dataId;\r\n            fields.contentLength = documentProperty.length;\r\n        }\r\n        else {\r\n            this.setDecodedFieldTo(parserConfig, fields, this.decodeField(fieldClass, fieldType, documentProperty.provider, parserConfig.ansiEncoding, false));\r\n        }\r\n    };\r\n    MsgReader.prototype.setDecodedFieldTo = function (parserConfig, fields, pair) {\r\n        var key = pair.key, keyType = pair.keyType, value = pair.value;\r\n        if (key !== undefined) {\r\n            if (keyType === KeyType.root) {\r\n                fields[key] = value;\r\n            }\r\n        }\r\n        if (parserConfig.includeRawProps === true) {\r\n            fields.rawProps = fields.rawProps || [];\r\n            if (!pair.notForRawProp) {\r\n                fields.rawProps.push({\r\n                    propertyTag: pair.propertyTag,\r\n                    propertySet: pair.propertySet,\r\n                    propertyLid: pair.propertyLid,\r\n                    propertyName: (pair.keyType === KeyType.named) ? pair.key : undefined,\r\n                    value: value,\r\n                });\r\n            }\r\n        }\r\n    };\r\n    MsgReader.prototype.getFieldType = function (fieldProperty) {\r\n        var value = fieldProperty.name.substring(12).toLowerCase();\r\n        return value.substring(4, 8);\r\n    };\r\n    MsgReader.prototype.fieldsDataDirInner = function (parserConfig, dirProperty, rootFolder, fields) {\r\n        var _this = this;\r\n        if (dirProperty.name.indexOf(const_1.default.MSG.FIELD.PREFIX.ATTACHMENT) == 0) {\r\n            // attachment\r\n            var attachmentField = {\r\n                dataType: \"attachment\",\r\n            };\r\n            fields.attachments.push(attachmentField);\r\n            this.fieldsDataDir(parserConfig, dirProperty, rootFolder, attachmentField, \"attachment\");\r\n        }\r\n        else if (dirProperty.name.indexOf(const_1.default.MSG.FIELD.PREFIX.RECIPIENT) == 0) {\r\n            // recipient\r\n            var recipientField = {\r\n                dataType: \"recipient\",\r\n            };\r\n            fields.recipients.push(recipientField);\r\n            this.fieldsDataDir(parserConfig, dirProperty, rootFolder, recipientField, \"recip\");\r\n        }\r\n        else if (dirProperty.name.indexOf(const_1.default.MSG.FIELD.PREFIX.NAMEID) == 0) {\r\n            // unknown, read\r\n            this.fieldsNameIdDir(parserConfig, dirProperty, rootFolder, fields);\r\n        }\r\n        else {\r\n            // other dir\r\n            var childFieldType = this.getFieldType(dirProperty);\r\n            if (childFieldType != const_1.default.MSG.FIELD.DIR_TYPE.INNER_MSG) {\r\n                // ignore\r\n            }\r\n            else {\r\n                var innerMsgContentFields = {\r\n                    dataType: \"msg\",\r\n                    attachments: [],\r\n                    recipients: [],\r\n                };\r\n                this.fieldsDataDir(parserConfig, dirProperty, rootFolder, innerMsgContentFields, \"sub\");\r\n                fields.innerMsgContentFields = innerMsgContentFields;\r\n                fields.innerMsgContent = true;\r\n                fields.folderId = dirProperty.dataId;\r\n                this.innerMsgBurners[dirProperty.dataId] = function () { return _this.burnMsg(dirProperty, rootFolder); };\r\n            }\r\n        }\r\n    };\r\n    MsgReader.prototype.burnMsg = function (folder, rootFolder) {\r\n        var entries = [\r\n            {\r\n                name: \"Root Entry\",\r\n                type: TypeEnum.ROOT,\r\n                children: [],\r\n                length: 0,\r\n            }\r\n        ];\r\n        this.registerFolder(entries, 0, folder, rootFolder, 0);\r\n        return (0, Burner_1.burn)(entries);\r\n    };\r\n    MsgReader.prototype.registerFolder = function (entries, index, folder, rootFolder, depth) {\r\n        var _loop_1 = function (set) {\r\n            var provider = set.provider, length_1 = set.length;\r\n            if (depth === 0 && set.name === \"__properties_version1.0\") {\r\n                var src = provider();\r\n                var dst_1 = new Uint8Array(src.length + 8);\r\n                dst_1.set(src.subarray(0, 24), 0);\r\n                dst_1.set(src.subarray(24), 32);\r\n                provider = function () { return dst_1; };\r\n                length_1 = dst_1.length;\r\n            }\r\n            var subIndex = entries.length;\r\n            entries[index].children.push(subIndex);\r\n            entries.push({\r\n                name: set.name,\r\n                type: TypeEnum.DOCUMENT,\r\n                binaryProvider: provider,\r\n                length: length_1,\r\n            });\r\n        };\r\n        for (var _i = 0, _a = folder.fileNameSets(); _i < _a.length; _i++) {\r\n            var set = _a[_i];\r\n            _loop_1(set);\r\n        }\r\n        if (depth === 0) {\r\n            // include root `__nameid_version1.0` folder.\r\n            var sources = rootFolder.subFolders()\r\n                .filter(function (it) { return it.name === const_1.default.MSG.FIELD.PREFIX.NAMEID; });\r\n            for (var _b = 0, sources_1 = sources; _b < sources_1.length; _b++) {\r\n                var source = sources_1[_b];\r\n                var subIndex = entries.length;\r\n                entries[index].children.push(subIndex);\r\n                entries.push({\r\n                    name: source.name,\r\n                    type: TypeEnum.DIRECTORY,\r\n                    children: [],\r\n                    length: 0,\r\n                });\r\n                this.registerFolder(entries, subIndex, source, rootFolder, depth + 1);\r\n            }\r\n        }\r\n        for (var _c = 0, _d = folder.subFolders(); _c < _d.length; _c++) {\r\n            var subFolder = _d[_c];\r\n            var subIndex = entries.length;\r\n            entries[index].children.push(subIndex);\r\n            entries.push({\r\n                name: subFolder.name,\r\n                type: TypeEnum.DIRECTORY,\r\n                children: [],\r\n                length: 0,\r\n            });\r\n            this.registerFolder(entries, subIndex, subFolder, rootFolder, depth + 1);\r\n        }\r\n    };\r\n    MsgReader.prototype.fieldsRecipAndAttachmentProperties = function (parserConfig, documentProperty, fields) {\r\n        var propertiesBinary = documentProperty.provider();\r\n        var propertiesDs = new DataStream_1.default(propertiesBinary, 8, DataStream_1.default.LITTLE_ENDIAN);\r\n        this.importPropertiesFromFile(parserConfig, propertiesDs, fields);\r\n    };\r\n    MsgReader.prototype.importPropertiesFromFile = function (parserConfig, propertiesDs, fields) {\r\n        // See: [MS-OXMSG]: Outlook Item (.msg) File Format, 2.4 Property Stream\r\n        // https://docs.microsoft.com/en-us/openspecs/exchange_server_protocols/ms-oxmsg/20c1125f-043d-42d9-b1dc-cb9b7e5198ef\r\n        var typeConverters = {\r\n            0x0040: function (dataView) {\r\n                var fileTime = dataView.getUint32(0, true) + (4294967296.0 * dataView.getUint32(4, true));\r\n                return new Date(fileTimeToUnixEpoch(fileTime)).toUTCString();\r\n            },\r\n        };\r\n        var _loop_2 = function () {\r\n            var propertyTag = propertiesDs.readUint32();\r\n            if (propertyTag === 0) {\r\n                return \"break\";\r\n            }\r\n            var flags = propertiesDs.readUint32();\r\n            var arr = propertiesDs.readUint8Array(8);\r\n            parserConfig.propertyObserver(fields, propertyTag, arr);\r\n            var fieldClass = (0, utils_1.toHex2)((propertyTag / 65536) & 0xFFFF);\r\n            var fieldType = (0, utils_1.toHex2)(propertyTag & 0xFFFF);\r\n            this_1.setDecodedFieldTo(parserConfig, fields, this_1.decodeField(fieldClass, fieldType, function () { return arr; }, parserConfig.ansiEncoding, true));\r\n        };\r\n        var this_1 = this;\r\n        while (!propertiesDs.isEof()) {\r\n            var state_1 = _loop_2();\r\n            if (state_1 === \"break\")\r\n                break;\r\n        }\r\n    };\r\n    MsgReader.prototype.fieldsRootProperties = function (parserConfig, documentProperty, fields) {\r\n        var propertiesBinary = documentProperty.provider();\r\n        var propertiesDs = new DataStream_1.default(propertiesBinary, 32, DataStream_1.default.LITTLE_ENDIAN);\r\n        this.importPropertiesFromFile(parserConfig, propertiesDs, fields);\r\n    };\r\n    MsgReader.prototype.fieldsDataDir = function (parserConfig, dirProperty, rootFolder, fields, subClass) {\r\n        for (var _i = 0, _a = dirProperty.subFolders(); _i < _a.length; _i++) {\r\n            var subFolder = _a[_i];\r\n            this.fieldsDataDirInner(parserConfig, subFolder, rootFolder, fields);\r\n        }\r\n        for (var _b = 0, _c = dirProperty.fileNameSets(); _b < _c.length; _b++) {\r\n            var fileSet = _c[_b];\r\n            if (0) { }\r\n            else if (fileSet.name.indexOf(const_1.default.MSG.FIELD.PREFIX.DOCUMENT) == 0) {\r\n                this.fieldsDataDocument(parserConfig, fileSet, fields);\r\n            }\r\n            else if (fileSet.name === \"__properties_version1.0\") {\r\n                if (subClass === \"recip\" || subClass === \"attachment\" || subClass === \"sub\") {\r\n                    this.fieldsRecipAndAttachmentProperties(parserConfig, fileSet, fields);\r\n                }\r\n                else if (subClass === \"root\") {\r\n                    this.fieldsRootProperties(parserConfig, fileSet, fields);\r\n                }\r\n            }\r\n        }\r\n    };\r\n    MsgReader.prototype.fieldsNameIdDir = function (parserConfig, dirProperty, rootFolder, fields) {\r\n        var guidTable = undefined;\r\n        var stringTable = undefined;\r\n        var entryTable = undefined;\r\n        for (var _i = 0, _a = dirProperty.fileNameSets(); _i < _a.length; _i++) {\r\n            var fileSet = _a[_i];\r\n            if (0) { }\r\n            else if (fileSet.name.indexOf(const_1.default.MSG.FIELD.PREFIX.DOCUMENT) == 0) {\r\n                var value = fileSet.name.substring(12).toLowerCase();\r\n                var fieldClass = value.substring(0, 4);\r\n                var fieldType = value.substring(4, 8);\r\n                if (0) { }\r\n                else if (fieldClass === \"0002\" && fieldType === \"0102\") {\r\n                    guidTable = fileSet.provider();\r\n                }\r\n                else if (fieldClass === \"0003\" && fieldType === \"0102\") {\r\n                    entryTable = fileSet.provider();\r\n                }\r\n                else if (fieldClass === \"0004\" && fieldType === \"0102\") {\r\n                    stringTable = fileSet.provider();\r\n                }\r\n            }\r\n        }\r\n        //console.log(\"%\", guidTable, stringTable, entryTable);\r\n        if (guidTable !== undefined && stringTable !== undefined && entryTable !== undefined) {\r\n            var entries = (0, EntryStreamParser_1.parse)(entryTable);\r\n            var stringReader = new DataStream_1.default(stringTable, 0, DataStream_1.default.LITTLE_ENDIAN);\r\n            for (var _b = 0, entries_1 = entries; _b < entries_1.length; _b++) {\r\n                var entry = entries_1[_b];\r\n                if (entry.isStringProperty) {\r\n                    stringReader.seek(entry.key);\r\n                    var numTextBytes = stringReader.readUint32();\r\n                    this.privatePidToKeyed[0x8000 | entry.propertyIndex] = {\r\n                        useName: true,\r\n                        name: stringReader.readUCS2String(numTextBytes / 2),\r\n                    };\r\n                }\r\n                else {\r\n                    this.privatePidToKeyed[0x8000 | entry.propertyIndex] = {\r\n                        useName: false,\r\n                        propertySet: (entry.guidIndex === 1) ? \"00020328-00000-0000-C000-00000000046\"\r\n                            : (entry.guidIndex === 2) ? \"00020329-00000-0000-C000-00000000046\"\r\n                                : (0, utils_1.msftUuidStringify)(guidTable, 16 * (entry.guidIndex - 3)),\r\n                        propertyLid: entry.key,\r\n                    };\r\n                }\r\n            }\r\n            //console.log(\"@\", this.privatePidToKeyed);\r\n        }\r\n    };\r\n    /**\r\n     * extract real fields\r\n     */\r\n    MsgReader.prototype.fieldsDataReader = function (parserConfig) {\r\n        var fields = {\r\n            dataType: \"msg\",\r\n            attachments: [],\r\n            recipients: []\r\n        };\r\n        this.fieldsDataDir(parserConfig, this.reader.rootFolder(), this.reader.rootFolder(), fields, \"root\");\r\n        return fields;\r\n    };\r\n    /**\r\n     * convert binary data to dictionary\r\n     */\r\n    MsgReader.prototype.parseMsgData = function (parserConfig) {\r\n        this.reader.parse();\r\n        return this.fieldsDataReader(parserConfig);\r\n    };\r\n    MsgReader.prototype.getFileData = function () {\r\n        var _a, _b, _c;\r\n        if (this.fieldsData === undefined) {\r\n            if (!this.reader.isMSGFile()) {\r\n                return {\r\n                    dataType: null,\r\n                    error: 'Unsupported file type!'\r\n                };\r\n            }\r\n            this.innerMsgBurners = {};\r\n            this.privatePidToKeyed = {};\r\n            this.fieldsData = this.parseMsgData({\r\n                propertyObserver: ((_a = this.parserConfig) === null || _a === void 0 ? void 0 : _a.propertyObserver) || (function () { }),\r\n                includeRawProps: ((_b = this.parserConfig) === null || _b === void 0 ? void 0 : _b.includeRawProps) ? true : false,\r\n                ansiEncoding: (0, utils_1.emptyToNull)((_c = this.parserConfig) === null || _c === void 0 ? void 0 : _c.ansiEncoding),\r\n            });\r\n        }\r\n        return this.fieldsData;\r\n    };\r\n    /**\r\n     Reads an attachment content by key/ID\r\n     \r\n      @return {Object} The attachment for specific attachment key\r\n      */\r\n    MsgReader.prototype.getAttachment = function (attach) {\r\n        var attachData = typeof attach === 'number' ? this.fieldsData.attachments[attach] : attach;\r\n        if (attachData.innerMsgContent === true && typeof attachData.folderId === \"number\") {\r\n            // embedded msg\r\n            return { fileName: attachData.name + \".msg\", content: this.innerMsgBurners[attachData.folderId]() };\r\n        }\r\n        else {\r\n            // raw attachment file\r\n            var fieldData = this.reader.readFileOf(attachData.dataId);\r\n            return { fileName: attachData.fileName, content: fieldData };\r\n        }\r\n    };\r\n    return MsgReader;\r\n}());\r\nexports.default = MsgReader;\r\n"]}