{"version":3,"sources":["webpack:///./node_modules/ejs/lib/utils.js","webpack:///./node_modules/js-pinyin/pinyin.js","webpack:///./node_modules/js-pinyin/index.js","webpack:///./node_modules/vue-lazyload/vue-lazyload.esm.js","webpack:///./node_modules/ejs/lib/ejs.js"],"names":["regExpChars","exports","escapeRegExpChars","string","String","replace","_ENCODE_HTML_RULES","_MATCH_HTML","encode_char","c","escapeFuncStr","escapeXML","markup","undefined","toString","Function","prototype","call","this","shallowCopy","to","from","p","shallowCopyFromList","list","i","length","cache","_data","set","key","val","get","remove","reset","hyphenToCamel","str","match","toUpperCase","Pinyin","options","setOptions","initialize","Object","assign","checkPolyphone","charCase","char_dict","full_dict","polyphone","Error","chars","Array","len","ch","charAt","push","_getChar","result","_getResult","toLowerCase","RegExp","substr","unicode","charCodeAt","name","_getFullChar","indexOf","_capitalize","first","spare","join","strlen","j","k","swap1","slice","swap2","concat","module","pinyin","_typeof","Symbol","iterator","obj","constructor","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","target","props","descriptor","enumerable","configurable","writable","defineProperty","protoProps","staticProps","isPrimitive","value","assignSymbols","receiver","objects","getOwnPropertySymbols","isEnumerable","propertyIsEnumerable","arguments","provider","names","kindOf","type","Boolean","Number","isArray","Date","isBuffer","isObject$1","extend","hasOwn","hasOwnProperty","assignDeep","inBrowser","window","hasIntersectionObserver","checkIntersectionObserver","IntersectionObserverEntry","intersectionRatio","modeType","event","observer","CustomEvent","Event","params","bubbles","cancelable","detail","evt","document","createEvent","initCustomEvent","arr","item","index","splice","some","fn","has","getBestSelectionFromSrcset","el","scale","tagName","getAttribute","container","parentNode","containerWidth","offsetWidth","spaceIndex","tmpSrc","tmpWidth","trim","split","map","lastIndexOf","parseInt","sort","a","b","bestSelectedSrc","tmpOption","next","find","getDPR","devicePixelRatio","supportWebp","support","d","createElement","style","visibility","innerHTML","body","appendChild","removeChild","err","throttle","action","delay","timeout","lastRun","elapsed","now","context","args","runCallback","apply","setTimeout","testSupportsPassive","opts","addEventListener","e","supportsPassive","_","on","func","capture","passive","off","removeEventListener","loadImageAsync","resolve","reject","image","Image","src","onload","naturalHeight","naturalWidth","onerror","prop","getComputedStyle","getPropertyValue","overflow","scrollParent","HTMLElement","parent","documentElement","test","isObject","ObjectKeys","keys","ArrayFrom","arrLike","noop","ImageCache","_ref","max","_caches","free","shift","ReactiveListener","error","loading","bindType","$parent","elRenderer","imageCache","attempt","rect","_imageCache","performanceData","init","loadStart","loadEnd","filter","initState","render","dataset","setAttribute","state","loaded","rendered","_ref2","oldSrc","getBoundingClientRect","getRect","top","innerHeight","preLoad","bottom","preLoadTop","left","innerWidth","right","_this","cb","_this2","data","silent","console","warn","_this3","onFinish","log","renderLoading","adapter","record","add","time","DEFAULT_URL","DEFAULT_EVENTS","DEFAULT_OBSERVER_OPTIONS","rootMargin","threshold","Lazy","Vue","throttleWait","dispatchEvent","_ref$silent","listenEvents","hasbind","observerOptions","version","mode","ListenerQueue","TargetIndex","TargetQueue","ListenEvents","_initEvent","lazyLoadHandler","_lazyLoadHandler","bind","setMode","performance","vm","_addListenerTarget","_observer","observe","$el","binding","vnode","update","nextTick","_valueFormatter2","_valueFormatter","modifiers","$refs","getElementById","newListener","arg","_elRenderer","_valueFormatter3","exist","unobserve","existItem","_removeListenerTarget","$destroy","forEach","listener","_initListen","_initIntersectionObserver","childrenCount","id","listened","_this4","start","_this5","_this6","listeners","$on","$once","$off","$emit","inCache","_this7","freeList","catIn","checkInView","load","_this8","IntersectionObserver","_observerHandler","entries","_this9","entry","isIntersecting","LazyComponent","lazy","tag","default","h","show","$slots","mounted","addLazyBox","beforeDestroy","removeComponent","methods","destroy","LazyContainerMananger","lazyContainerMananger","_queue","LazyContainer$1","clear","defaultOptions","selector","LazyContainer","_ref3","imgs","getImgs","querySelectorAll","LazyImage","lazyManager","attrs","renderSrc","watch","created","_lazyManager$_valueFo","install","LazyClass","lazyContainer","isVue2","$Lazyload","lazyComponent","component","lazyImage","directive","componentUpdated","unbind","newValue","oldValue","$els","fs","path","utils","scopeOptionWarned","_VERSION_STRING","_DEFAULT_OPEN_DELIMITER","_DEFAULT_CLOSE_DELIMITER","_DEFAULT_DELIMITER","_DEFAULT_LOCALS_NAME","_NAME","_REGEX_STRING","_OPTS_PASSABLE_WITH_DATA","_OPTS_PASSABLE_WITH_DATA_EXPRESS","_BOM","resolvePaths","paths","filePath","v","resolveInclude","existsSync","getIncludePath","includePath","views","exec","root","filename","includer","escapeFunction","handleCache","template","hasTemplate","fileLoader","compile","tryHandleCache","promiseImpl","includeFile","includerResult","rethrow","flnm","lineno","esc","lines","Math","end","min","line","curr","message","stripSemi","Template","text","templateText","truncate","currentLine","source","client","escape","compileDebug","debug","openDelimiter","closeDelimiter","delimiter","strict","rmWhitespace","outputFunctionName","localsName","async","destructuredLocals","legacyInclude","_with","regex","createRegex","readFileSync","Promise","isDir","dirname","extname","ext","templ","scope","o","renderFile","viewOpts","pop","settings","clearCache","modes","EVAL","ESCAPED","RAW","COMMENT","LITERAL","delim","open","close","ctor","prepended","appended","escapeFn","sanitizedFilename","JSON","stringify","generateSource","destructuring","SyntaxError","returnedFn","include","includeData","basename","self","matches","parseTemplateText","closing","scanLine","firstPos","pat","substring","_addOutput","newLineCount","__express","VERSION","ejs"],"mappings":"iHA0BA,IAAIA,EAAc,sBAYlBC,EAAQC,kBAAoB,SAAUC,GAEpC,OAAKA,EAGEC,OAAOD,GAAQE,QAAQL,EAAa,QAFlC,IAKX,IAAIM,EAAqB,CACvB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,SAEHC,EAAc,WAElB,SAASC,EAAYC,GACnB,OAAOH,EAAmBG,IAAMA,EAYlC,IAAIC,EACF,gPAwBFT,EAAQU,UAAY,SAAUC,GAC5B,YAAiBC,GAAVD,EACH,GACAR,OAAOQ,GACNP,QAAQE,EAAaC,IAE5BP,EAAQU,UAAUG,SAAW,WAC3B,OAAOC,SAASC,UAAUF,SAASG,KAAKC,MAAQ,MAAQR,GAc1DT,EAAQkB,YAAc,SAAUC,EAAIC,GAElC,IAAK,IAAIC,KADTD,EAAOA,GAAQ,GACDA,EACZD,EAAGE,GAAKD,EAAKC,GAEf,OAAOF,GAeTnB,EAAQsB,oBAAsB,SAAUH,EAAIC,EAAMG,GAChD,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAKE,OAAQD,IAAK,CACpC,IAAIH,EAAIE,EAAKC,GACS,oBAAXJ,EAAKC,KACdF,EAAGE,GAAKD,EAAKC,IAGjB,OAAOF,GAWTnB,EAAQ0B,MAAQ,CACdC,MAAO,GACPC,IAAK,SAAUC,EAAKC,GAClBb,KAAKU,MAAME,GAAOC,GAEpBC,IAAK,SAAUF,GACb,OAAOZ,KAAKU,MAAME,IAEpBG,OAAQ,SAAUH,UACTZ,KAAKU,MAAME,IAEpBI,MAAO,WACLhB,KAAKU,MAAQ,KAYjB3B,EAAQkC,cAAgB,SAAUC,GAChC,OAAOA,EAAI/B,QAAQ,WAAW,SAAUgC,GAAS,OAAOA,EAAM,GAAGC,mB,oCCnKnE,MAAMC,EAKF,YAAYC,GACRtB,KAAKuB,WAAWD,GAChBtB,KAAKwB,aAOT,WAAWF,GACPA,EAAUA,GAAW,GACrBtB,KAAKsB,QAAUG,OAAOC,OAAO,CAACC,gBAAgB,EAAOC,SAAU,GAAIN,GAMvE,aACItB,KAAK6B,UAAY,y6oBACjB7B,KAAK8B,UAAY,CACb,EAAK,MACL,GAAM,0BACN,GAAM,sBACN,IAAO,MACP,GAAM,0BACN,GAAM,gCACN,IAAO,cACP,IAAO,yBACP,KAAQ,iBACR,IAAO,2BACP,GAAM,mCACN,IAAO,8BACP,IAAO,UACP,KAAQ,YACR,GAAM,yDACN,KAAQ,6BACR,KAAQ,kBACR,IAAO,SACP,IAAO,kBACP,KAAQ,mBACR,GAAM,qBACN,GAAM,MACN,IAAO,cACP,IAAO,cACP,KAAQ,SACR,IAAO,aACP,GAAM,WACN,KAAQ,MACR,IAAO,0BACP,KAAQ,WACR,KAAQ,gCACR,MAAS,6BACT,KAAQ,gBACR,IAAO,YACP,KAAQ,wBACR,MAAS,+BACT,IAAO,+CACP,MAAS,aACT,KAAQ,uBACR,IAAO,8BACP,MAAS,oBACT,OAAU,UACV,KAAQ,WACR,KAAQ,iBACR,KAAQ,WACR,GAAM,sBACN,KAAQ,gBACR,GAAM,UACN,KAAQ,UACR,IAAO,gBACP,IAAO,SACP,IAAO,gBACP,GAAM,mBACN,IAAO,yBACP,IAAO,+BACP,KAAQ,eACR,IAAO,uBACP,GAAM,OACN,KAAQ,gBACR,GAAM,yCACN,KAAQ,6BACR,KAAQ,iBACR,IAAO,wBACP,KAAQ,uBACR,KAAQ,uBACR,IAAO,iBACP,GAAM,4BACN,KAAQ,aACR,IAAO,UACP,IAAO,kBACP,IAAO,sBACP,EAAK,oCACL,GAAM,QACN,GAAM,gBACN,GAAM,aACN,IAAO,4BACP,KAAQ,oBACR,IAAO,mCACP,IAAO,wBACP,KAAQ,uBACR,GAAM,iFACN,GAAM,YACN,IAAO,eACP,IAAO,2BACP,KAAQ,eACR,KAAQ,2BACR,IAAO,uBACP,GAAM,oCACN,IAAO,IACP,IAAO,SACP,KAAQ,aACR,IAAO,wBACP,GAAM,gDACN,IAAO,cACP,KAAQ,OACR,KAAQ,qBACR,MAAS,UACT,IAAO,+BACP,IAAO,WACP,IAAO,yBACP,GAAM,IACN,IAAO,cACP,IAAO,gCACP,IAAO,QACP,KAAQ,SACR,IAAO,qBACP,GAAM,+BACN,IAAO,KACP,KAAQ,UACR,KAAQ,kBACR,IAAO,kBACP,GAAM,4CACN,IAAO,kBACP,KAAQ,UACR,KAAQ,8BACR,MAAS,4BACT,IAAO,wCACP,IAAO,cACP,IAAO,qBACP,GAAM,2GACN,IAAO,qCACP,KAAQ,0EACR,MAAS,yBACT,KAAQ,8CACR,IAAO,mDACP,IAAO,sCACP,KAAQ,2CACR,MAAS,QACT,IAAO,4BACP,GAAM,qDACN,KAAQ,kBACR,IAAO,6BACP,IAAO,mBACP,GAAM,SACN,GAAM,iCACN,IAAO,eACP,IAAO,gBACP,KAAQ,cACR,IAAO,WACP,IAAO,UACP,KAAQ,MACR,KAAQ,UACR,IAAO,YACP,GAAM,eACN,IAAO,SACP,KAAQ,YACR,KAAQ,MACR,MAAS,mBACT,IAAO,gCACP,IAAO,cACP,IAAO,QACP,GAAM,gBACN,IAAO,eACP,IAAO,2BACP,KAAQ,iBACR,IAAO,mBACP,GAAM,WACN,IAAO,uBACP,KAAQ,kCACR,KAAQ,KACR,GAAM,iFACN,KAAQ,gCACR,MAAS,mBACT,KAAQ,yBACR,IAAO,cACP,IAAO,wBACP,IAAO,4BACP,KAAQ,qBACR,IAAO,gBACP,GAAM,4CACN,GAAM,uBACN,KAAQ,WACR,IAAO,MACP,IAAO,UACP,IAAO,yBACP,GAAM,iBACN,IAAO,aACP,IAAO,qBACP,KAAQ,aACR,KAAQ,uBACR,KAAQ,qBACR,IAAO,8BACP,GAAM,IACN,IAAO,8BACP,IAAO,WACP,GAAM,gCACN,KAAQ,gBACR,IAAO,QACP,IAAO,cACP,KAAQ,eACR,IAAO,IACP,GAAM,gCACN,IAAO,WACP,GAAM,wBACN,GAAM,gBACN,IAAO,YACP,IAAO,aACP,IAAO,cACP,GAAM,MACN,IAAO,IACP,IAAO,OACP,GAAM,0BACN,KAAQ,eACR,MAAS,KACT,KAAQ,SACR,IAAO,kBACP,IAAO,KACP,KAAQ,aACR,IAAO,WACP,KAAQ,OACR,GAAM,YACN,GAAM,OACN,KAAQ,IACR,OAAU,IACV,IAAO,KACP,IAAO,WACP,GAAM,cACN,GAAM,WACN,IAAO,WACP,IAAO,iBACP,KAAQ,UACR,IAAO,eACP,IAAO,oBACP,IAAO,MACP,KAAQ,sBACR,GAAM,wCACN,KAAQ,cACR,KAAQ,cACR,IAAO,QACP,IAAO,cACP,KAAQ,gBACR,GAAM,mBACN,IAAO,MACP,GAAM,0BACN,GAAM,qEACN,IAAO,OACP,KAAQ,4CACR,MAAS,uBACT,KAAQ,8BACR,IAAO,eACP,IAAO,yBACP,KAAQ,2BACR,MAAS,UACT,IAAO,6BACP,GAAM,kCACN,KAAQ,yBACR,IAAO,aACP,IAAO,MACP,IAAO,SACP,KAAQ,UACR,IAAO,SACP,IAAO,MACP,GAAM,KACN,IAAO,oBACP,KAAQ,KACR,GAAM,IACN,KAAQ,kBACR,IAAO,SACP,GAAM,sBACN,KAAQ,MACR,IAAO,UACP,IAAO,KACP,GAAM,UACN,IAAO,QACP,IAAO,aACP,KAAQ,SACR,IAAO,WACP,GAAM,UACN,IAAO,IACP,KAAQ,IACR,IAAO,kBACP,KAAQ,MACR,KAAQ,kCACR,MAAS,gBACT,KAAQ,qBACR,IAAO,oBACP,KAAQ,2BACR,MAAS,mBACT,IAAO,sEACP,KAAQ,iBACR,IAAO,mDACP,KAAQ,OACR,MAAS,QACT,MAAS,MACT,OAAU,OACV,KAAQ,OACR,KAAQ,QACR,KAAQ,cACR,GAAM,qCACN,KAAQ,mBACR,IAAO,gBACP,GAAM,uBACN,KAAQ,MACR,IAAO,sBACP,IAAO,YACP,IAAO,gBACP,GAAM,iBACN,IAAO,mBACP,IAAO,2BACP,KAAQ,sBACR,MAAS,MACT,MAAS,KACT,IAAO,mBACP,GAAM,IACN,KAAQ,QACR,GAAM,0BACN,KAAQ,kBACR,KAAQ,aACR,IAAO,QACP,KAAQ,mBACR,KAAQ,wBACR,IAAO,QACP,GAAM,mBACN,KAAQ,MACR,IAAO,WACP,IAAO,UACP,IAAO,yBACP,GAAM,aACN,IAAO,KACP,IAAO,+BACP,KAAQ,kBACR,IAAO,+DACP,IAAO,qBACP,KAAQ,QACR,GAAM,kBACN,GAAM,qDACN,GAAM,yEACN,IAAO,0BACP,KAAQ,2CACR,MAAS,gCACT,KAAQ,iCACR,IAAO,uCACP,IAAO,mBACP,KAAQ,wBACR,MAAS,WACT,IAAO,mBACP,GAAM,qCACN,KAAQ,+BACR,IAAO,YACP,IAAO,4BACP,GAAM,+BACN,IAAO,oEACP,KAAQ,4BACR,IAAO,iCACP,GAAM,yBACN,GAAM,uGACN,IAAO,gCACP,KAAQ,uCACR,GAAM,KACN,KAAQ,2BACR,IAAO,uCACP,GAAM,uFACN,KAAQ,iCACR,IAAO,iBACP,IAAO,uBACP,GAAM,QACN,IAAO,aACP,IAAO,YACP,KAAQ,SACR,IAAO,mBACP,GAAM,eACN,IAAO,IACP,IAAO,KACP,KAAQ,WACR,IAAO,0BACP,KAAQ,UACR,KAAQ,uBACR,MAAS,0BACT,KAAQ,kBACR,IAAO,sBACP,KAAQ,6BACR,MAAS,uBACT,IAAO,gFACP,MAAS,oBACT,KAAQ,8BACR,IAAO,mDACP,KAAQ,IACR,MAAS,IACT,MAAS,YACT,OAAU,WACV,KAAQ,YACR,KAAQ,KACR,KAAQ,wBACR,GAAM,qCACN,KAAQ,YACR,IAAO,SACP,GAAM,iBACN,KAAQ,OACR,IAAO,OACP,IAAO,QACP,IAAO,gBACP,IAAO,OACP,KAAQ,QACR,EAAK,IACL,IAAO,IACP,MAAS,MACT,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KAEX9B,KAAK+B,UAAY,CACb,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,MACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,MACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,IACT,MAAS,KACT,MAAS,KACT,MAAS,IACT,MAAS,KACT,MAAS,MACT,MAAS,KACT,MAAS,KACT,MAAS,MACT,MAAS,KACT,MAAS,IACT,MAAS,KACT,MAAS,MACT,MAAS,IACT,MAAS,KACT,MAAS,KACT,MAAS,IACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,IACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,IACT,MAAS,IACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,IACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,IACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,MACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,MACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,MACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,MACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,KACT,MAAS,K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","file":"js/chunk-vendors.f03ee7af.js","sourcesContent":["/*\n * EJS Embedded JavaScript templates\n * Copyright 2112 Matthew Eernisse (mde@fleegix.org)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n*/\n\n/**\n * Private utility functions\n * @module utils\n * @private\n */\n\n'use strict';\n\nvar regExpChars = /[|\\\\{}()[\\]^$+*?.]/g;\n\n/**\n * Escape characters reserved in regular expressions.\n *\n * If `string` is `undefined` or `null`, the empty string is returned.\n *\n * @param {String} string Input string\n * @return {String} Escaped string\n * @static\n * @private\n */\nexports.escapeRegExpChars = function (string) {\n // istanbul ignore if\n if (!string) {\n return '';\n }\n return String(string).replace(regExpChars, '\\\\$&');\n};\n\nvar _ENCODE_HTML_RULES = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nvar _MATCH_HTML = /[&<>'\"]/g;\n\nfunction encode_char(c) {\n return _ENCODE_HTML_RULES[c] || c;\n}\n\n/**\n * Stringified version of constants used by {@link module:utils.escapeXML}.\n *\n * It is used in the process of generating {@link ClientFunction}s.\n *\n * @readonly\n * @type {String}\n */\n\nvar escapeFuncStr =\n 'var _ENCODE_HTML_RULES = {\\n'\n+ ' \"&\": \"&\"\\n'\n+ ' , \"<\": \"<\"\\n'\n+ ' , \">\": \">\"\\n'\n+ ' , \\'\"\\': \""\"\\n'\n+ ' , \"\\'\": \"'\"\\n'\n+ ' }\\n'\n+ ' , _MATCH_HTML = /[&<>\\'\"]/g;\\n'\n+ 'function encode_char(c) {\\n'\n+ ' return _ENCODE_HTML_RULES[c] || c;\\n'\n+ '};\\n';\n\n/**\n * Escape characters reserved in XML.\n *\n * If `markup` is `undefined` or `null`, the empty string is returned.\n *\n * @implements {EscapeCallback}\n * @param {String} markup Input string\n * @return {String} Escaped string\n * @static\n * @private\n */\n\nexports.escapeXML = function (markup) {\n return markup == undefined\n ? ''\n : String(markup)\n .replace(_MATCH_HTML, encode_char);\n};\nexports.escapeXML.toString = function () {\n return Function.prototype.toString.call(this) + ';\\n' + escapeFuncStr;\n};\n\n/**\n * Naive copy of properties from one object to another.\n * Does not recurse into non-scalar properties\n * Does not check to see if the property has a value before copying\n *\n * @param {Object} to Destination object\n * @param {Object} from Source object\n * @return {Object} Destination object\n * @static\n * @private\n */\nexports.shallowCopy = function (to, from) {\n from = from || {};\n for (var p in from) {\n to[p] = from[p];\n }\n return to;\n};\n\n/**\n * Naive copy of a list of key names, from one object to another.\n * Only copies property if it is actually defined\n * Does not recurse into non-scalar properties\n *\n * @param {Object} to Destination object\n * @param {Object} from Source object\n * @param {Array} list List of properties to copy\n * @return {Object} Destination object\n * @static\n * @private\n */\nexports.shallowCopyFromList = function (to, from, list) {\n for (var i = 0; i < list.length; i++) {\n var p = list[i];\n if (typeof from[p] != 'undefined') {\n to[p] = from[p];\n }\n }\n return to;\n};\n\n/**\n * Simple in-process cache implementation. Does not implement limits of any\n * sort.\n *\n * @implements {Cache}\n * @static\n * @private\n */\nexports.cache = {\n _data: {},\n set: function (key, val) {\n this._data[key] = val;\n },\n get: function (key) {\n return this._data[key];\n },\n remove: function (key) {\n delete this._data[key];\n },\n reset: function () {\n this._data = {};\n }\n};\n\n/**\n * Transforms hyphen case variable into camel case.\n *\n * @param {String} string Hyphen case string\n * @return {String} Camel case string\n * @static\n * @private\n */\nexports.hyphenToCamel = function (str) {\n return str.replace(/-[a-z]/g, function (match) { return match[1].toUpperCase(); });\n};\n","/**\r\n * @fileOverview 汉字拼音转换主题功能\r\n * @author waterchestnut 2017/3/13\r\n * @module\r\n */\r\n'use strict';\r\n\r\n/**\r\n * @typedef Option\r\n * @type Object\r\n * @property {Boolean} [checkPolyphone=false] 是否检查多音字\r\n * @property {Number} [charCase=0] 输出拼音的大小写模式,0-首字母大写;1-全小写;2-全大写\r\n */\r\n\r\nclass Pinyin {\r\n /**\r\n * 构造函数,设置参数并初始化数据\r\n * @param {Option} [options] 参数对象\r\n */\r\n constructor(options) {\r\n this.setOptions(options);\r\n this.initialize();\r\n }\r\n\r\n /**\r\n * 设置参数\r\n * @param {Option} [options] 参数对象\r\n */\r\n setOptions(options) {\r\n options = options || {};\r\n this.options = Object.assign({checkPolyphone: false, charCase: 0}, options);\r\n }\r\n\r\n /**\r\n * 初始化数据\r\n */\r\n initialize() {\r\n this.char_dict = \"YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXXGJHHSDSJNKKTMOMLCRXYPSNQSECCQZGGLLYJLMYZZSECYKYYHQWJSSGGYXYZYJWWKDJHYCHMYXJTLXJYQBYXZLDWRDJRWYSRLDZJPCBZJJBRCFTLECZSTZFXXZHTRQHYBDLYCZSSYMMRFMYQZPWWJJYFCRWFDFZQPYDDWYXKYJAWJFFXYPSFTZYHHYZYSWCJYXSCLCXXWZZXNBGNNXBXLZSZSBSGPYSYZDHMDZBQBZCWDZZYYTZHBTSYYBZGNTNXQYWQSKBPHHLXGYBFMJEBJHHGQTJCYSXSTKZHLYCKGLYSMZXYALMELDCCXGZYRJXSDLTYZCQKCNNJWHJTZZCQLJSTSTBNXBTYXCEQXGKWJYFLZQLYHYXSPSFXLMPBYSXXXYDJCZYLLLSJXFHJXPJBTFFYABYXBHZZBJYZLWLCZGGBTSSMDTJZXPTHYQTGLJSCQFZKJZJQNLZWLSLHDZBWJNCJZYZSQQYCQYRZCJJWYBRTWPYFTWEXCSKDZCTBZHYZZYYJXZCFFZZMJYXXSDZZOTTBZLQWFCKSZSXFYRLNYJMBDTHJXSQQCCSBXYYTSYFBXDZTGBCNSLCYZZPSAZYZZSCJCSHZQYDXLBPJLLMQXTYDZXSQJTZPXLCGLQTZWJBHCTSYJSFXYEJJTLBGXSXJMYJQQPFZASYJNTYDJXKJCDJSZCBARTDCLYJQMWNQNCLLLKBYBZZSYHQQLTWLCCXTXLLZNTYLNEWYZYXCZXXGRKRMTCNDNJTSYYSSDQDGHSDBJGHRWRQLYBGLXHLGTGXBQJDZPYJSJYJCTMRNYMGRZJCZGJMZMGXMPRYXKJNYMSGMZJYMKMFXMLDTGFBHCJHKYLPFMDXLQJJSMTQGZSJLQDLDGJYCALCMZCSDJLLNXDJFFFFJCZFMZFFPFKHKGDPSXKTACJDHHZDDCRRCFQYJKQCCWJDXHWJLYLLZGCFCQDSMLZPBJJPLSBCJGGDCKKDEZSQCCKJGCGKDJTJDLZYCXKLQSCGJCLTFPCQCZGWPJDQYZJJBYJHSJDZWGFSJGZKQCCZLLPSPKJGQJHZZLJPLGJGJJTHJJYJZCZMLZLYQBGJWMLJKXZDZNJQSYZMLJLLJKYWXMKJLHSKJGBMCLYYMKXJQLBMLLKMDXXKWYXYSLMLPSJQQJQXYXFJTJDXMXXLLCXQBSYJBGWYMBGGBCYXPJYGPEPFGDJGBHBNSQJYZJKJKHXQFGQZKFHYGKHDKLLSDJQXPQYKYBNQSXQNSZSWHBSXWHXWBZZXDMNSJBSBKBBZKLYLXGWXDRWYQZMYWSJQLCJXXJXKJEQXSCYETLZHLYYYSDZPAQYZCMTLSHTZCFYZYXYLJSDCJQAGYSLCQLYYYSHMRQQKLDXZSCSSSYDYCJYSFSJBFRSSZQSBXXPXJYSDRCKGJLGDKZJZBDKTCSYQPYHSTCLDJDHMXMCGXYZHJDDTMHLTXZXYLYMOHYJCLTYFBQQXPFBDFHHTKSQHZYYWCNXXCRWHOWGYJLEGWDQCWGFJYCSNTMYTOLBYGWQWESJPWNMLRYDZSZTXYQPZGCWXHNGPYXSHMYQJXZTDPPBFYHZHTJYFDZWKGKZBLDNTSXHQEEGZZYLZMMZYJZGXZXKHKSTXNXXWYLYAPSTHXDWHZYMPXAGKYDXBHNHXKDPJNMYHYLPMGOCSLNZHKXXLPZZLBMLSFBHHGYGYYGGBHSCYAQTYWLXTZQCEZYDQDQMMHTKLLSZHLSJZWFYHQSWSCWLQAZYNYTLSXTHAZNKZZSZZLAXXZWWCTGQQTDDYZTCCHYQZFLXPSLZYGPZSZNGLNDQTBDLXGTCTAJDKYWNSYZLJHHZZCWNYYZYWMHYCHHYXHJKZWSXHZYXLYSKQYSPSLYZWMYPPKBYGLKZHTYXAXQSYSHXASMCHKDSCRSWJPWXSGZJLWWSCHSJHSQNHCSEGNDAQTBAALZZMSSTDQJCJKTSCJAXPLGGXHHGXXZCXPDMMHLDGTYBYSJMXHMRCPXXJZCKZXSHMLQXXTTHXWZFKHCCZDYTCJYXQHLXDHYPJQXYLSYYDZOZJNYXQEZYSQYAYXWYPDGXDDXSPPYZNDLTWRHXYDXZZJHTCXMCZLHPYYYYMHZLLHNXMYLLLMDCPPXHMXDKYCYRDLTXJCHHZZXZLCCLYLNZSHZJZZLNNRLWHYQSNJHXYNTTTKYJPYCHHYEGKCTTWLGQRLGGTGTYGYHPYHYLQYQGCWYQKPYYYTTTTLHYHLLTYTTSPLKYZXGZWGPYDSSZZDQXSKCQNMJJZZBXYQMJRTFFBTKHZKBXLJJKDXJTLBWFZPPTKQTZTGPDGNTPJYFALQMKGXBDCLZFHZCLLLLADPMXDJHLCCLGYHDZFGYDDGCYYFGYDXKSSEBDHYKDKDKHNAXXYBPBYYHXZQGAFFQYJXDMLJCSQZLLPCHBSXGJYNDYBYQSPZWJLZKSDDTACTBXZDYZYPJZQSJNKKTKNJDJGYYPGTLFYQKASDNTCYHBLWDZHBBYDWJRYGKZYHEYYFJMSDTYFZJJHGCXPLXHLDWXXJKYTCYKSSSMTWCTTQZLPBSZDZWZXGZAGYKTYWXLHLSPBCLLOQMMZSSLCMBJCSZZKYDCZJGQQDSMCYTZQQLWZQZXSSFPTTFQMDDZDSHDTDWFHTDYZJYQJQKYPBDJYYXTLJHDRQXXXHAYDHRJLKLYTWHLLRLLRCXYLBWSRSZZSYMKZZHHKYHXKSMDSYDYCJPBZBSQLFCXXXNXKXWYWSDZYQOGGQMMYHCDZTTFJYYBGSTTTYBYKJDHKYXBELHTYPJQNFXFDYKZHQKZBYJTZBXHFDXKDASWTAWAJLDYJSFHBLDNNTNQJTJNCHXFJSRFWHZFMDRYJYJWZPDJKZYJYMPCYZNYNXFBYTFYFWYGDBNZZZDNYTXZEMMQBSQEHXFZMBMFLZZSRXYMJGSXWZJSPRYDJSJGXHJJGLJJYNZZJXHGXKYMLPYYYCXYTWQZSWHWLYRJLPXSLSXMFSWWKLCTNXNYNPSJSZHDZEPTXMYYWXYYSYWLXJQZQXZDCLEEELMCPJPCLWBXSQHFWWTFFJTNQJHJQDXHWLBYZNFJLALKYYJLDXHHYCSTYYWNRJYXYWTRMDRQHWQCMFJDYZMHMYYXJWMYZQZXTLMRSPWWCHAQBXYGZYPXYYRRCLMPYMGKSJSZYSRMYJSNXTPLNBAPPYPYLXYYZKYNLDZYJZCZNNLMZHHARQMPGWQTZMXXMLLHGDZXYHXKYXYCJMFFYYHJFSBSSQLXXNDYCANNMTCJCYPRRNYTYQNYYMBMSXNDLYLYSLJRLXYSXQMLLYZLZJJJKYZZCSFBZXXMSTBJGNXYZHLXNMCWSCYZYFZLXBRNNNYLBNRTGZQYSATSWRYHYJZMZDHZGZDWYBSSCSKXSYHYTXXGCQGXZZSHYXJSCRHMKKBXCZJYJYMKQHZJFNBHMQHYSNJNZYBKNQMCLGQHWLZNZSWXKHLJHYYBQLBFCDSXDLDSPFZPSKJYZWZXZDDXJSMMEGJSCSSMGCLXXKYYYLNYPWWWGYDKZJGGGZGGSYCKNJWNJPCXBJJTQTJWDSSPJXZXNZXUMELPXFSXTLLXCLJXJJLJZXCTPSWXLYDHLYQRWHSYCSQYYBYAYWJJJQFWQCQQCJQGXALDBZZYJGKGXPLTZYFXJLTPADKYQHPMATLCPDCKBMTXYBHKLENXDLEEGQDYMSAWHZMLJTWYGXLYQZLJEEYYBQQFFNLYXRDSCTGJGXYYNKLLYQKCCTLHJLQMKKZGCYYGLLLJDZGYDHZWXPYSJBZKDZGYZZHYWYFQYTYZSZYEZZLYMHJJHTSMQWYZLKYYWZCSRKQYTLTDXWCTYJKLWSQZWBDCQYNCJSRSZJLKCDCDTLZZZACQQZZDDXYPLXZBQJYLZLLLQDDZQJYJYJZYXNYYYNYJXKXDAZWYRDLJYYYRJLXLLDYXJCYWYWNQCCLDDNYYYNYCKCZHXXCCLGZQJGKWPPCQQJYSBZZXYJSQPXJPZBSBDSFNSFPZXHDWZTDWPPTFLZZBZDMYYPQJRSDZSQZSQXBDGCPZSWDWCSQZGMDHZXMWWFYBPDGPHTMJTHZSMMBGZMBZJCFZWFZBBZMQCFMBDMCJXLGPNJBBXGYHYYJGPTZGZMQBQTCGYXJXLWZKYDPDYMGCFTPFXYZTZXDZXTGKMTYBBCLBJASKYTSSQYYMSZXFJEWLXLLSZBQJJJAKLYLXLYCCTSXMCWFKKKBSXLLLLJYXTYLTJYYTDPJHNHNNKBYQNFQYYZBYYESSESSGDYHFHWTCJBSDZZTFDMXHCNJZYMQWSRYJDZJQPDQBBSTJGGFBKJBXTGQHNGWJXJGDLLTHZHHYYYYYYSXWTYYYCCBDBPYPZYCCZYJPZYWCBDLFWZCWJDXXHYHLHWZZXJTCZLCDPXUJCZZZLYXJJTXPHFXWPYWXZPTDZZBDZCYHJHMLXBQXSBYLRDTGJRRCTTTHYTCZWMXFYTWWZCWJWXJYWCSKYBZSCCTZQNHXNWXXKHKFHTSWOCCJYBCMPZZYKBNNZPBZHHZDLSYDDYTYFJPXYNGFXBYQXCBHXCPSXTYZDMKYSNXSXLHKMZXLYHDHKWHXXSSKQYHHCJYXGLHZXCSNHEKDTGZXQYPKDHEXTYKCNYMYYYPKQYYYKXZLTHJQTBYQHXBMYHSQCKWWYLLHCYYLNNEQXQWMCFBDCCMLJGGXDQKTLXKGNQCDGZJWYJJLYHHQTTTNWCHMXCXWHWSZJYDJCCDBQCDGDNYXZTHCQRXCBHZTQCBXWGQWYYBXHMBYMYQTYEXMQKYAQYRGYZSLFYKKQHYSSQYSHJGJCNXKZYCXSBXYXHYYLSTYCXQTHYSMGSCPMMGCCCCCMTZTASMGQZJHKLOSQYLSWTMXSYQKDZLJQQYPLSYCZTCQQPBBQJZCLPKHQZYYXXDTDDTSJCXFFLLCHQXMJLWCJCXTSPYCXNDTJSHJWXDQQJSKXYAMYLSJHMLALYKXCYYDMNMDQMXMCZNNCYBZKKYFLMCHCMLHXRCJJHSYLNMTJZGZGYWJXSRXCWJGJQHQZDQJDCJJZKJKGDZQGJJYJYLXZXXCDQHHHEYTMHLFSBDJSYYSHFYSTCZQLPBDRFRZTZYKYWHSZYQKWDQZRKMSYNBCRXQBJYFAZPZZEDZCJYWBCJWHYJBQSZYWRYSZPTDKZPFPBNZTKLQYHBBZPNPPTYZZYBQNYDCPJMMCYCQMCYFZZDCMNLFPBPLNGQJTBTTNJZPZBBZNJKLJQYLNBZQHKSJZNGGQSZZKYXSHPZSNBCGZKDDZQANZHJKDRTLZLSWJLJZLYWTJNDJZJHXYAYNCBGTZCSSQMNJPJYTYSWXZFKWJQTKHTZPLBHSNJZSYZBWZZZZLSYLSBJHDWWQPSLMMFBJDWAQYZTCJTBNNWZXQXCDSLQGDSDPDZHJTQQPSWLYYJZLGYXYZLCTCBJTKTYCZJTQKBSJLGMGZDMCSGPYNJZYQYYKNXRPWSZXMTNCSZZYXYBYHYZAXYWQCJTLLCKJJTJHGDXDXYQYZZBYWDLWQCGLZGJGQRQZCZSSBCRPCSKYDZNXJSQGXSSJMYDNSTZTPBDLTKZWXQWQTZEXNQCZGWEZKSSBYBRTSSSLCCGBPSZQSZLCCGLLLZXHZQTHCZMQGYZQZNMCOCSZJMMZSQPJYGQLJYJPPLDXRGZYXCCSXHSHGTZNLZWZKJCXTCFCJXLBMQBCZZWPQDNHXLJCTHYZLGYLNLSZZPCXDSCQQHJQKSXZPBAJYEMSMJTZDXLCJYRYYNWJBNGZZTMJXLTBSLYRZPYLSSCNXPHLLHYLLQQZQLXYMRSYCXZLMMCZLTZSDWTJJLLNZGGQXPFSKYGYGHBFZPDKMWGHCXMSGDXJMCJZDYCABXJDLNBCDQYGSKYDQTXDJJYXMSZQAZDZFSLQXYJSJZYLBTXXWXQQZBJZUFBBLYLWDSLJHXJYZJWTDJCZFQZQZZDZSXZZQLZCDZFJHYSPYMPQZMLPPLFFXJJNZZYLSJEYQZFPFZKSYWJJJHRDJZZXTXXGLGHYDXCSKYSWMMZCWYBAZBJKSHFHJCXMHFQHYXXYZFTSJYZFXYXPZLCHMZMBXHZZSXYFYMNCWDABAZLXKTCSHHXKXJJZJSTHYGXSXYYHHHJWXKZXSSBZZWHHHCWTZZZPJXSNXQQJGZYZYWLLCWXZFXXYXYHXMKYYSWSQMNLNAYCYSPMJKHWCQHYLAJJMZXHMMCNZHBHXCLXTJPLTXYJHDYYLTTXFSZHYXXSJBJYAYRSMXYPLCKDUYHLXRLNLLSTYZYYQYGYHHSCCSMZCTZQXKYQFPYYRPFFLKQUNTSZLLZMWWTCQQYZWTLLMLMPWMBZSSTZRBPDDTLQJJBXZCSRZQQYGWCSXFWZLXCCRSZDZMCYGGDZQSGTJSWLJMYMMZYHFBJDGYXCCPSHXNZCSBSJYJGJMPPWAFFYFNXHYZXZYLREMZGZCYZSSZDLLJCSQFNXZKPTXZGXJJGFMYYYSNBTYLBNLHPFZDCYFBMGQRRSSSZXYSGTZRNYDZZCDGPJAFJFZKNZBLCZSZPSGCYCJSZLMLRSZBZZLDLSLLYSXSQZQLYXZLSKKBRXBRBZCYCXZZZEEYFGKLZLYYHGZSGZLFJHGTGWKRAAJYZKZQTSSHJJXDCYZUYJLZYRZDQQHGJZXSSZBYKJPBFRTJXLLFQWJHYLQTYMBLPZDXTZYGBDHZZRBGXHWNJTJXLKSCFSMWLSDQYSJTXKZSCFWJLBXFTZLLJZLLQBLSQMQQCGCZFPBPHZCZJLPYYGGDTGWDCFCZQYYYQYSSCLXZSKLZZZGFFCQNWGLHQYZJJCZLQZZYJPJZZBPDCCMHJGXDQDGDLZQMFGPSYTSDYFWWDJZJYSXYYCZCYHZWPBYKXRYLYBHKJKSFXTZJMMCKHLLTNYYMSYXYZPYJQYCSYCWMTJJKQYRHLLQXPSGTLYYCLJSCPXJYZFNMLRGJJTYZBXYZMSJYJHHFZQMSYXRSZCWTLRTQZSSTKXGQKGSPTGCZNJSJCQCXHMXGGZTQYDJKZDLBZSXJLHYQGGGTHQSZPYHJHHGYYGKGGCWJZZYLCZLXQSFTGZSLLLMLJSKCTBLLZZSZMMNYTPZSXQHJCJYQXYZXZQZCPSHKZZYSXCDFGMWQRLLQXRFZTLYSTCTMJCXJJXHJNXTNRZTZFQYHQGLLGCXSZSJDJLJCYDSJTLNYXHSZXCGJZYQPYLFHDJSBPCCZHJJJQZJQDYBSSLLCMYTTMQTBHJQNNYGKYRQYQMZGCJKPDCGMYZHQLLSLLCLMHOLZGDYYFZSLJCQZLYLZQJESHNYLLJXGJXLYSYYYXNBZLJSSZCQQCJYLLZLTJYLLZLLBNYLGQCHXYYXOXCXQKYJXXXYKLXSXXYQXCYKQXQCSGYXXYQXYGYTQOHXHXPYXXXULCYEYCHZZCBWQBBWJQZSCSZSSLZYLKDESJZWMYMCYTSDSXXSCJPQQSQYLYYZYCMDJDZYWCBTJSYDJKCYDDJLBDJJSODZYSYXQQYXDHHGQQYQHDYXWGMMMAJDYBBBPPBCMUUPLJZSMTXERXJMHQNUTPJDCBSSMSSSTKJTSSMMTRCPLZSZMLQDSDMJMQPNQDXCFYNBFSDQXYXHYAYKQYDDLQYYYSSZBYDSLNTFQTZQPZMCHDHCZCWFDXTMYQSPHQYYXSRGJCWTJTZZQMGWJJTJHTQJBBHWZPXXHYQFXXQYWYYHYSCDYDHHQMNMTMWCPBSZPPZZGLMZFOLLCFWHMMSJZTTDHZZYFFYTZZGZYSKYJXQYJZQBHMBZZLYGHGFMSHPZFZSNCLPBQSNJXZSLXXFPMTYJYGBXLLDLXPZJYZJYHHZCYWHJYLSJEXFSZZYWXKZJLUYDTMLYMQJPWXYHXSKTQJEZRPXXZHHMHWQPWQLYJJQJJZSZCPHJLCHHNXJLQWZJHBMZYXBDHHYPZLHLHLGFWLCHYYTLHJXCJMSCPXSTKPNHQXSRTYXXTESYJCTLSSLSTDLLLWWYHDHRJZSFGXTSYCZYNYHTDHWJSLHTZDQDJZXXQHGYLTZPHCSQFCLNJTCLZPFSTPDYNYLGMJLLYCQHYSSHCHYLHQYQTMZYPBYWRFQYKQSYSLZDQJMPXYYSSRHZJNYWTQDFZBWWTWWRXCWHGYHXMKMYYYQMSMZHNGCEPMLQQMTCWCTMMPXJPJJHFXYYZSXZHTYBMSTSYJTTQQQYYLHYNPYQZLCYZHZWSMYLKFJXLWGXYPJYTYSYXYMZCKTTWLKSMZSYLMPWLZWXWQZSSAQSYXYRHSSNTSRAPXCPWCMGDXHXZDZYFJHGZTTSBJHGYZSZYSMYCLLLXBTYXHBBZJKSSDMALXHYCFYGMQYPJYCQXJLLLJGSLZGQLYCJCCZOTYXMTMTTLLWTGPXYMZMKLPSZZZXHKQYSXCTYJZYHXSHYXZKXLZWPSQPYHJWPJPWXQQYLXSDHMRSLZZYZWTTCYXYSZZSHBSCCSTPLWSSCJCHNLCGCHSSPHYLHFHHXJSXYLLNYLSZDHZXYLSXLWZYKCLDYAXZCMDDYSPJTQJZLNWQPSSSWCTSTSZLBLNXSMNYYMJQBQHRZWTYYDCHQLXKPZWBGQYBKFCMZWPZLLYYLSZYDWHXPSBCMLJBSCGBHXLQHYRLJXYSWXWXZSLDFHLSLYNJLZYFLYJYCDRJLFSYZFSLLCQYQFGJYHYXZLYLMSTDJCYHBZLLNWLXXYGYYHSMGDHXXHHLZZJZXCZZZCYQZFNGWPYLCPKPYYPMCLQKDGXZGGWQBDXZZKZFBXXLZXJTPJPTTBYTSZZDWSLCHZHSLTYXHQLHYXXXYYZYSWTXZKHLXZXZPYHGCHKCFSYHUTJRLXFJXPTZTWHPLYXFCRHXSHXKYXXYHZQDXQWULHYHMJTBFLKHTXCWHJFWJCFPQRYQXCYYYQYGRPYWSGSUNGWCHKZDXYFLXXHJJBYZWTSXXNCYJJYMSWZJQRMHXZWFQSYLZJZGBHYNSLBGTTCSYBYXXWXYHXYYXNSQYXMQYWRGYQLXBBZLJSYLPSYTJZYHYZAWLRORJMKSCZJXXXYXCHDYXRYXXJDTSQFXLYLTSFFYXLMTYJMJUYYYXLTZCSXQZQHZXLYYXZHDNBRXXXJCTYHLBRLMBRLLAXKYLLLJLYXXLYCRYLCJTGJCMTLZLLCYZZPZPCYAWHJJFYBDYYZSMPCKZDQYQPBPCJPDCYZMDPBCYYDYCNNPLMTMLRMFMMGWYZBSJGYGSMZQQQZTXMKQWGXLLPJGZBQCDJJJFPKJKCXBLJMSWMDTQJXLDLPPBXCWRCQFBFQJCZAHZGMYKPHYYHZYKNDKZMBPJYXPXYHLFPNYYGXJDBKXNXHJMZJXSTRSTLDXSKZYSYBZXJLXYSLBZYSLHXJPFXPQNBYLLJQKYGZMCYZZYMCCSLCLHZFWFWYXZMWSXTYNXJHPYYMCYSPMHYSMYDYSHQYZCHMJJMZCAAGCFJBBHPLYZYLXXSDJGXDHKXXTXXNBHRMLYJSLTXMRHNLXQJXYZLLYSWQGDLBJHDCGJYQYCMHWFMJYBMBYJYJWYMDPWHXQLDYGPDFXXBCGJSPCKRSSYZJMSLBZZJFLJJJLGXZGYXYXLSZQYXBEXYXHGCXBPLDYHWETTWWCJMBTXCHXYQXLLXFLYXLLJLSSFWDPZSMYJCLMWYTCZPCHQEKCQBWLCQYDPLQPPQZQFJQDJHYMMCXTXDRMJWRHXCJZYLQXDYYNHYYHRSLSRSYWWZJYMTLTLLGTQCJZYABTCKZCJYCCQLJZQXALMZYHYWLWDXZXQDLLQSHGPJFJLJHJABCQZDJGTKHSSTCYJLPSWZLXZXRWGLDLZRLZXTGSLLLLZLYXXWGDZYGBDPHZPBRLWSXQBPFDWOFMWHLYPCBJCCLDMBZPBZZLCYQXLDOMZBLZWPDWYYGDSTTHCSQSCCRSSSYSLFYBFNTYJSZDFNDPDHDZZMBBLSLCMYFFGTJJQWFTMTPJWFNLBZCMMJTGBDZLQLPYFHYYMJYLSDCHDZJWJCCTLJCLDTLJJCPDDSQDSSZYBNDBJLGGJZXSXNLYCYBJXQYCBYLZCFZPPGKCXZDZFZTJJFJSJXZBNZYJQTTYJYHTYCZHYMDJXTTMPXSPLZCDWSLSHXYPZGTFMLCJTYCBPMGDKWYCYZCDSZZYHFLYCTYGWHKJYYLSJCXGYWJCBLLCSNDDBTZBSCLYZCZZSSQDLLMQYYHFSLQLLXFTYHABXGWNYWYYPLLSDLDLLBJCYXJZMLHLJDXYYQYTDLLLBUGBFDFBBQJZZMDPJHGCLGMJJPGAEHHBWCQXAXHHHZCHXYPHJAXHLPHJPGPZJQCQZGJJZZUZDMQYYBZZPHYHYBWHAZYJHYKFGDPFQSDLZMLJXKXGALXZDAGLMDGXMWZQYXXDXXPFDMMSSYMPFMDMMKXKSYZYSHDZKXSYSMMZZZMSYDNZZCZXFPLSTMZDNMXCKJMZTYYMZMZZMSXHHDCZJEMXXKLJSTLWLSQLYJZLLZJSSDPPMHNLZJCZYHMXXHGZCJMDHXTKGRMXFWMCGMWKDTKSXQMMMFZZYDKMSCLCMPCGMHSPXQPZDSSLCXKYXTWLWJYAHZJGZQMCSNXYYMMPMLKJXMHLMLQMXCTKZMJQYSZJSYSZHSYJZJCDAJZYBSDQJZGWZQQXFKDMSDJLFWEHKZQKJPEYPZYSZCDWYJFFMZZYLTTDZZEFMZLBNPPLPLPEPSZALLTYLKCKQZKGENQLWAGYXYDPXLHSXQQWQCQXQCLHYXXMLYCCWLYMQYSKGCHLCJNSZKPYZKCQZQLJPDMDZHLASXLBYDWQLWDNBQCRYDDZTJYBKBWSZDXDTNPJDTCTQDFXQQMGNXECLTTBKPWSLCTYQLPWYZZKLPYGZCQQPLLKCCYLPQMZCZQCLJSLQZDJXLDDHPZQDLJJXZQDXYZQKZLJCYQDYJPPYPQYKJYRMPCBYMCXKLLZLLFQPYLLLMBSGLCYSSLRSYSQTMXYXZQZFDZUYSYZTFFMZZSMZQHZSSCCMLYXWTPZGXZJGZGSJSGKDDHTQGGZLLBJDZLCBCHYXYZHZFYWXYZYMSDBZZYJGTSMTFXQYXQSTDGSLNXDLRYZZLRYYLXQHTXSRTZNGZXBNQQZFMYKMZJBZYMKBPNLYZPBLMCNQYZZZSJZHJCTZKHYZZJRDYZHNPXGLFZTLKGJTCTSSYLLGZRZBBQZZKLPKLCZYSSUYXBJFPNJZZXCDWXZYJXZZDJJKGGRSRJKMSMZJLSJYWQSKYHQJSXPJZZZLSNSHRNYPZTWCHKLPSRZLZXYJQXQKYSJYCZTLQZYBBYBWZPQDWWYZCYTJCJXCKCWDKKZXSGKDZXWWYYJQYYTCYTDLLXWKCZKKLCCLZCQQDZLQLCSFQCHQHSFSMQZZLNBJJZBSJHTSZDYSJQJPDLZCDCWJKJZZLPYCGMZWDJJBSJQZSYZYHHXJPBJYDSSXDZNCGLQMBTSFSBPDZDLZNFGFJGFSMPXJQLMBLGQCYYXBQKDJJQYRFKZTJDHCZKLBSDZCFJTPLLJGXHYXZCSSZZXSTJYGKGCKGYOQXJPLZPBPGTGYJZGHZQZZLBJLSQFZGKQQJZGYCZBZQTLDXRJXBSXXPZXHYZYCLWDXJJHXMFDZPFZHQHQMQGKSLYHTYCGFRZGNQXCLPDLBZCSCZQLLJBLHBZCYPZZPPDYMZZSGYHCKCPZJGSLJLNSCDSLDLXBMSTLDDFJMKDJDHZLZXLSZQPQPGJLLYBDSZGQLBZLSLKYYHZTTNTJYQTZZPSZQZTLLJTYYLLQLLQYZQLBDZLSLYYZYMDFSZSNHLXZNCZQZPBWSKRFBSYZMTHBLGJPMCZZLSTLXSHTCSYZLZBLFEQHLXFLCJLYLJQCBZLZJHHSSTBRMHXZHJZCLXFNBGXGTQJCZTMSFZKJMSSNXLJKBHSJXNTNLZDNTLMSJXGZJYJCZXYJYJWRWWQNZTNFJSZPZSHZJFYRDJSFSZJZBJFZQZZHZLXFYSBZQLZSGYFTZDCSZXZJBQMSZKJRHYJZCKMJKHCHGTXKXQGLXPXFXTRTYLXJXHDTSJXHJZJXZWZLCQSBTXWXGXTXXHXFTSDKFJHZYJFJXRZSDLLLTQSQQZQWZXSYQTWGWBZCGZLLYZBCLMQQTZHZXZXLJFRMYZFLXYSQXXJKXRMQDZDMMYYBSQBHGZMWFWXGMXLZPYYTGZYCCDXYZXYWGSYJYZNBHPZJSQSYXSXRTFYZGRHZTXSZZTHCBFCLSYXZLZQMZLMPLMXZJXSFLBYZMYQHXJSXRXSQZZZSSLYFRCZJRCRXHHZXQYDYHXSJJHZCXZBTYNSYSXJBQLPXZQPYMLXZKYXLXCJLCYSXXZZLXDLLLJJYHZXGYJWKJRWYHCPSGNRZLFZWFZZNSXGXFLZSXZZZBFCSYJDBRJKRDHHGXJLJJTGXJXXSTJTJXLYXQFCSGSWMSBCTLQZZWLZZKXJMLTMJYHSDDBXGZHDLBMYJFRZFSGCLYJBPMLYSMSXLSZJQQHJZFXGFQFQBPXZGYYQXGZTCQWYLTLGWSGWHRLFSFGZJMGMGBGTJFSYZZGZYZAFLSSPMLPFLCWBJZCLJJMZLPJJLYMQDMYYYFBGYGYZMLYZDXQYXRQQQHSYYYQXYLJTYXFSFSLLGNQCYHYCWFHCCCFXPYLYPLLZYXXXXXKQHHXSHJZCFZSCZJXCPZWHHHHHAPYLQALPQAFYHXDYLUKMZQGGGDDESRNNZLTZGCHYPPYSQJJHCLLJTOLNJPZLJLHYMHEYDYDSQYCDDHGZUNDZCLZYZLLZNTNYZGSLHSLPJJBDGWXPCDUTJCKLKCLWKLLCASSTKZZDNQNTTLYYZSSYSSZZRYLJQKCQDHHCRXRZYDGRGCWCGZQFFFPPJFZYNAKRGYWYQPQXXFKJTSZZXSWZDDFBBXTBGTZKZNPZZPZXZPJSZBMQHKCYXYLDKLJNYPKYGHGDZJXXEAHPNZKZTZCMXCXMMJXNKSZQNMNLWBWWXJKYHCPSTMCSQTZJYXTPCTPDTNNPGLLLZSJLSPBLPLQHDTNJNLYYRSZFFJFQWDPHZDWMRZCCLODAXNSSNYZRESTYJWJYJDBCFXNMWTTBYLWSTSZGYBLJPXGLBOCLHPCBJLTMXZLJYLZXCLTPNCLCKXTPZJSWCYXSFYSZDKNTLBYJCYJLLSTGQCBXRYZXBXKLYLHZLQZLNZCXWJZLJZJNCJHXMNZZGJZZXTZJXYCYYCXXJYYXJJXSSSJSTSSTTPPGQTCSXWZDCSYFPTFBFHFBBLZJCLZZDBXGCXLQPXKFZFLSYLTUWBMQJHSZBMDDBCYSCCLDXYCDDQLYJJWMQLLCSGLJJSYFPYYCCYLTJANTJJPWYCMMGQYYSXDXQMZHSZXPFTWWZQSWQRFKJLZJQQYFBRXJHHFWJJZYQAZMYFRHCYYBYQWLPEXCCZSTYRLTTDMQLYKMBBGMYYJPRKZNPBSXYXBHYZDJDNGHPMFSGMWFZMFQMMBCMZZCJJLCNUXYQLMLRYGQZCYXZLWJGCJCGGMCJNFYZZJHYCPRRCMTZQZXHFQGTJXCCJEAQCRJYHPLQLSZDJRBCQHQDYRHYLYXJSYMHZYDWLDFRYHBPYDTSSCNWBXGLPZMLZZTQSSCPJMXXYCSJYTYCGHYCJWYRXXLFEMWJNMKLLSWTXHYYYNCMMCWJDQDJZGLLJWJRKHPZGGFLCCSCZMCBLTBHBQJXQDSPDJZZGKGLFQYWBZYZJLTSTDHQHCTCBCHFLQMPWDSHYYTQWCNZZJTLBYMBPDYYYXSQKXWYYFLXXNCWCXYPMAELYKKJMZZZBRXYYQJFLJPFHHHYTZZXSGQQMHSPGDZQWBWPJHZJDYSCQWZKTXXSQLZYYMYSDZGRXCKKUJLWPYSYSCSYZLRMLQSYLJXBCXTLWDQZPCYCYKPPPNSXFYZJJRCEMHSZMSXLXGLRWGCSTLRSXBZGBZGZTCPLUJLSLYLYMTXMTZPALZXPXJTJWTCYYZLBLXBZLQMYLXPGHDSLSSDMXMBDZZSXWHAMLCZCPJMCNHJYSNSYGCHSKQMZZQDLLKABLWJXSFMOCDXJRRLYQZKJMYBYQLYHETFJZFRFKSRYXFJTWDSXXSYSQJYSLYXWJHSNLXYYXHBHAWHHJZXWMYLJCSSLKYDZTXBZSYFDXGXZJKHSXXYBSSXDPYNZWRPTQZCZENYGCXQFJYKJBZMLJCMQQXUOXSLYXXLYLLJDZBTYMHPFSTTQQWLHOKYBLZZALZXQLHZWRRQHLSTMYPYXJJXMQSJFNBXYXYJXXYQYLTHYLQYFMLKLJTMLLHSZWKZHLJMLHLJKLJSTLQXYLMBHHLNLZXQJHXCFXXLHYHJJGBYZZKBXSCQDJQDSUJZYYHZHHMGSXCSYMXFEBCQWWRBPYYJQTYZCYQYQQZYHMWFFHGZFRJFCDPXNTQYZPDYKHJLFRZXPPXZDBBGZQSTLGDGYLCQMLCHHMFYWLZYXKJLYPQHSYWMQQGQZMLZJNSQXJQSYJYCBEHSXFSZPXZWFLLBCYYJDYTDTHWZSFJMQQYJLMQXXLLDTTKHHYBFPWTYYSQQWNQWLGWDEBZWCMYGCULKJXTMXMYJSXHYBRWFYMWFRXYQMXYSZTZZTFYKMLDHQDXWYYNLCRYJBLPSXCXYWLSPRRJWXHQYPHTYDNXHHMMYWYTZCSQMTSSCCDALWZTCPQPYJLLQZYJSWXMZZMMYLMXCLMXCZMXMZSQTZPPQQBLPGXQZHFLJJHYTJSRXWZXSCCDLXTYJDCQJXSLQYCLZXLZZXMXQRJMHRHZJBHMFLJLMLCLQNLDXZLLLPYPSYJYSXCQQDCMQJZZXHNPNXZMEKMXHYKYQLXSXTXJYYHWDCWDZHQYYBGYBCYSCFGPSJNZDYZZJZXRZRQJJYMCANYRJTLDPPYZBSTJKXXZYPFDWFGZZRPYMTNGXZQBYXNBUFNQKRJQZMJEGRZGYCLKXZDSKKNSXKCLJSPJYYZLQQJYBZSSQLLLKJXTBKTYLCCDDBLSPPFYLGYDTZJYQGGKQTTFZXBDKTYYHYBBFYTYYBCLPDYTGDHRYRNJSPTCSNYJQHKLLLZSLYDXXWBCJQSPXBPJZJCJDZFFXXBRMLAZHCSNDLBJDSZBLPRZTSWSBXBCLLXXLZDJZSJPYLYXXYFTFFFBHJJXGBYXJPMMMPSSJZJMTLYZJXSWXTYLEDQPJMYGQZJGDJLQJWJQLLSJGJGYGMSCLJJXDTYGJQJQJCJZCJGDZZSXQGSJGGCXHQXSNQLZZBXHSGZXCXYLJXYXYYDFQQJHJFXDHCTXJYRXYSQTJXYEFYYSSYYJXNCYZXFXMSYSZXYYSCHSHXZZZGZZZGFJDLTYLNPZGYJYZYYQZPBXQBDZTZCZYXXYHHSQXSHDHGQHJHGYWSZTMZMLHYXGEBTYLZKQWYTJZRCLEKYSTDBCYKQQSAYXCJXWWGSBHJYZYDHCSJKQCXSWXFLTYNYZPZCCZJQTZWJQDZZZQZLJJXLSBHPYXXPSXSHHEZTXFPTLQYZZXHYTXNCFZYYHXGNXMYWXTZSJPTHHGYMXMXQZXTSBCZYJYXXTYYZYPCQLMMSZMJZZLLZXGXZAAJZYXJMZXWDXZSXZDZXLEYJJZQBHZWZZZQTZPSXZTDSXJJJZNYAZPHXYYSRNQDTHZHYYKYJHDZXZLSWCLYBZYECWCYCRYLCXNHZYDZYDYJDFRJJHTRSQTXYXJRJHOJYNXELXSFSFJZGHPZSXZSZDZCQZBYYKLSGSJHCZSHDGQGXYZGXCHXZJWYQWGYHKSSEQZZNDZFKWYSSTCLZSTSYMCDHJXXYWEYXCZAYDMPXMDSXYBSQMJMZJMTZQLPJYQZCGQHXJHHLXXHLHDLDJQCLDWBSXFZZYYSCHTYTYYBHECXHYKGJPXHHYZJFXHWHBDZFYZBCAPNPGNYDMSXHMMMMAMYNBYJTMPXYYMCTHJBZYFCGTYHWPHFTWZZEZSBZEGPFMTSKFTYCMHFLLHGPZJXZJGZJYXZSBBQSCZZLZCCSTPGXMJSFTCCZJZDJXCYBZLFCJSYZFGSZLYBCWZZBYZDZYPSWYJZXZBDSYUXLZZBZFYGCZXBZHZFTPBGZGEJBSTGKDMFHYZZJHZLLZZGJQZLSFDJSSCBZGPDLFZFZSZYZYZSYGCXSNXXCHCZXTZZLJFZGQSQYXZJQDCCZTQCDXZJYQJQCHXZTDLGSCXZSYQJQTZWLQDQZTQCHQQJZYEZZZPBWKDJFCJPZTYPQYQTTYNLMBDKTJZPQZQZZFPZSBNJLGYJDXJDZZKZGQKXDLPZJTCJDQBXDJQJSTCKNXBXZMSLYJCQMTJQWWCJQNJNLLLHJCWQTBZQYDZCZPZZDZYDDCYZZZCCJTTJFZDPRRTZTJDCQTQZDTJNPLZBCLLCTZSXKJZQZPZLBZRBTJDCXFCZDBCCJJLTQQPLDCGZDBBZJCQDCJWYNLLZYZCCDWLLXWZLXRXNTQQCZXKQLSGDFQTDDGLRLAJJTKUYMKQLLTZYTDYYCZGJWYXDXFRSKSTQTENQMRKQZHHQKDLDAZFKYPBGGPZREBZZYKZZSPEGJXGYKQZZZSLYSYYYZWFQZYLZZLZHWCHKYPQGNPGBLPLRRJYXCCSYYHSFZFYBZYYTGZXYLXCZWXXZJZBLFFLGSKHYJZEYJHLPLLLLCZGXDRZELRHGKLZZYHZLYQSZZJZQLJZFLNBHGWLCZCFJYSPYXZLZLXGCCPZBLLCYBBBBUBBCBPCRNNZCZYRBFSRLDCGQYYQXYGMQZWTZYTYJXYFWTEHZZJYWLCCNTZYJJZDEDPZDZTSYQJHDYMBJNYJZLXTSSTPHNDJXXBYXQTZQDDTJTDYYTGWSCSZQFLSHLGLBCZPHDLYZJYCKWTYTYLBNYTSDSYCCTYSZYYEBHEXHQDTWNYGYCLXTSZYSTQMYGZAZCCSZZDSLZCLZRQXYYELJSBYMXSXZTEMBBLLYYLLYTDQYSHYMRQWKFKBFXNXSBYCHXBWJYHTQBPBSBWDZYLKGZSKYHXQZJXHXJXGNLJKZLYYCDXLFYFGHLJGJYBXQLYBXQPQGZTZPLNCYPXDJYQYDYMRBESJYYHKXXSTMXRCZZYWXYQYBMCLLYZHQYZWQXDBXBZWZMSLPDMYSKFMZKLZCYQYCZLQXFZZYDQZPZYGYJYZMZXDZFYFYTTQTZHGSPCZMLCCYTZXJCYTJMKSLPZHYSNZLLYTPZCTZZCKTXDHXXTQCYFKSMQCCYYAZHTJPCYLZLYJBJXTPNYLJYYNRXSYLMMNXJSMYBCSYSYLZYLXJJQYLDZLPQBFZZBLFNDXQKCZFYWHGQMRDSXYCYTXNQQJZYYPFZXDYZFPRXEJDGYQBXRCNFYYQPGHYJDYZXGRHTKYLNWDZNTSMPKLBTHBPYSZBZTJZSZZJTYYXZPHSSZZBZCZPTQFZMYFLYPYBBJQXZMXXDJMTSYSKKBJZXHJCKLPSMKYJZCXTMLJYXRZZQSLXXQPYZXMKYXXXJCLJPRMYYGADYSKQLSNDHYZKQXZYZTCGHZTLMLWZYBWSYCTBHJHJFCWZTXWYTKZLXQSHLYJZJXTMPLPYCGLTBZZTLZJCYJGDTCLKLPLLQPJMZPAPXYZLKKTKDZCZZBNZDYDYQZJYJGMCTXLTGXSZLMLHBGLKFWNWZHDXUHLFMKYSLGXDTWWFRJEJZTZHYDXYKSHWFZCQSHKTMQQHTZHYMJDJSKHXZJZBZZXYMPAGQMSTPXLSKLZYNWRTSQLSZBPSPSGZWYHTLKSSSWHZZLYYTNXJGMJSZSUFWNLSOZTXGXLSAMMLBWLDSZYLAKQCQCTMYCFJBSLXCLZZCLXXKSBZQCLHJPSQPLSXXCKSLNHPSFQQYTXYJZLQLDXZQJZDYYDJNZPTUZDSKJFSLJHYLZSQZLBTXYDGTQFDBYAZXDZHZJNHHQBYKNXJJQCZMLLJZKSPLDYCLBBLXKLELXJLBQYCXJXGCNLCQPLZLZYJTZLJGYZDZPLTQCSXFDMNYCXGBTJDCZNBGBQYQJWGKFHTNPYQZQGBKPBBYZMTJDYTBLSQMPSXTBNPDXKLEMYYCJYNZCTLDYKZZXDDXHQSHDGMZSJYCCTAYRZLPYLTLKXSLZCGGEXCLFXLKJRTLQJAQZNCMBYDKKCXGLCZJZXJHPTDJJMZQYKQSECQZDSHHADMLZFMMZBGNTJNNLGBYJBRBTMLBYJDZXLCJLPLDLPCQDHLXZLYCBLCXZZJADJLNZMMSSSMYBHBSQKBHRSXXJMXSDZNZPXLGBRHWGGFCXGMSKLLTSJYYCQLTSKYWYYHYWXBXQYWPYWYKQLSQPTNTKHQCWDQKTWPXXHCPTHTWUMSSYHBWCRWXHJMKMZNGWTMLKFGHKJYLSYYCXWHYECLQHKQHTTQKHFZLDXQWYZYYDESBPKYRZPJFYYZJCEQDZZDLATZBBFJLLCXDLMJSSXEGYGSJQXCWBXSSZPDYZCXDNYXPPZYDLYJCZPLTXLSXYZYRXCYYYDYLWWNZSAHJSYQYHGYWWAXTJZDAXYSRLTDPSSYYFNEJDXYZHLXLLLZQZSJNYQYQQXYJGHZGZCYJCHZLYCDSHWSHJZYJXCLLNXZJJYYXNFXMWFPYLCYLLABWDDHWDXJMCXZTZPMLQZHSFHZYNZTLLDYWLSLXHYMMYLMBWWKYXYADTXYLLDJPYBPWUXJMWMLLSAFDLLYFLBHHHBQQLTZJCQJLDJTFFKMMMBYTHYGDCQRDDWRQJXNBYSNWZDBYYTBJHPYBYTTJXAAHGQDQTMYSTQXKBTZPKJLZRBEQQSSMJJBDJOTGTBXPGBKTLHQXJJJCTHXQDWJLWRFWQGWSHCKRYSWGFTGYGBXSDWDWRFHWYTJJXXXJYZYSLPYYYPAYXHYDQKXSHXYXGSKQHYWFDDDPPLCJLQQEEWXKSYYKDYPLTJTHKJLTCYYHHJTTPLTZZCDLTHQKZXQYSTEEYWYYZYXXYYSTTJKLLPZMCYHQGXYHSRMBXPLLNQYDQHXSXXWGDQBSHYLLPJJJTHYJKYPPTHYYKTYEZYENMDSHLCRPQFDGFXZPSFTLJXXJBSWYYSKSFLXLPPLBBBLBSFXFYZBSJSSYLPBBFFFFSSCJDSTZSXZRYYSYFFSYZYZBJTBCTSBSDHRTJJBYTCXYJEYLXCBNEBJDSYXYKGSJZBXBYTFZWGENYHHTHZHHXFWGCSTBGXKLSXYWMTMBYXJSTZSCDYQRCYTWXZFHMYMCXLZNSDJTTTXRYCFYJSBSDYERXJLJXBBDEYNJGHXGCKGSCYMBLXJMSZNSKGXFBNBPTHFJAAFXYXFPXMYPQDTZCXZZPXRSYWZDLYBBKTYQPQJPZYPZJZNJPZJLZZFYSBTTSLMPTZRTDXQSJEHBZYLZDHLJSQMLHTXTJECXSLZZSPKTLZKQQYFSYGYWPCPQFHQHYTQXZKRSGTTSQCZLPTXCDYYZXSQZSLXLZMYCPCQBZYXHBSXLZDLTCDXTYLZJYYZPZYZLTXJSJXHLPMYTXCQRBLZSSFJZZTNJYTXMYJHLHPPLCYXQJQQKZZSCPZKSWALQSBLCCZJSXGWWWYGYKTJBBZTDKHXHKGTGPBKQYSLPXPJCKBMLLXDZSTBKLGGQKQLSBKKTFXRMDKBFTPZFRTBBRFERQGXYJPZSSTLBZTPSZQZSJDHLJQLZBPMSMMSXLQQNHKNBLRDDNXXDHDDJCYYGYLXGZLXSYGMQQGKHBPMXYXLYTQWLWGCPBMQXCYZYDRJBHTDJYHQSHTMJSBYPLWHLZFFNYPMHXXHPLTBQPFBJWQDBYGPNZTPFZJGSDDTQSHZEAWZZYLLTYYBWJKXXGHLFKXDJTMSZSQYNZGGSWQSPHTLSSKMCLZXYSZQZXNCJDQGZDLFNYKLJCJLLZLMZZNHYDSSHTHZZLZZBBHQZWWYCRZHLYQQJBEYFXXXWHSRXWQHWPSLMSSKZTTYGYQQWRSLALHMJTQJSMXQBJJZJXZYZKXBYQXBJXSHZTSFJLXMXZXFGHKZSZGGYLCLSARJYHSLLLMZXELGLXYDJYTLFBHBPNLYZFBBHPTGJKWETZHKJJXZXXGLLJLSTGSHJJYQLQZFKCGNNDJSSZFDBCTWWSEQFHQJBSAQTGYPQLBXBMMYWXGSLZHGLZGQYFLZBYFZJFRYSFMBYZHQGFWZSYFYJJPHZBYYZFFWODGRLMFTWLBZGYCQXCDJYGZYYYYTYTYDWEGAZYHXJLZYYHLRMGRXXZCLHNELJJTJTPWJYBJJBXJJTJTEEKHWSLJPLPSFYZPQQBDLQJJTYYQLYZKDKSQJYYQZLDQTGJQYZJSUCMRYQTHTEJMFCTYHYPKMHYZWJDQFHYYXWSHCTXRLJHQXHCCYYYJLTKTTYTMXGTCJTZAYYOCZLYLBSZYWJYTSJYHBYSHFJLYGJXXTMZYYLTXXYPZLXYJZYZYYPNHMYMDYYLBLHLSYYQQLLNJJYMSOYQBZGDLYXYLCQYXTSZEGXHZGLHWBLJHEYXTWQMAKBPQCGYSHHEGQCMWYYWLJYJHYYZLLJJYLHZYHMGSLJLJXCJJYCLYCJPCPZJZJMMYLCQLNQLJQJSXYJMLSZLJQLYCMMHCFMMFPQQMFYLQMCFFQMMMMHMZNFHHJGTTHHKHSLNCHHYQDXTMMQDCYZYXYQMYQYLTDCYYYZAZZCYMZYDLZFFFMMYCQZWZZMABTBYZTDMNZZGGDFTYPCGQYTTSSFFWFDTZQSSYSTWXJHXYTSXXYLBYQHWWKXHZXWZNNZZJZJJQJCCCHYYXBZXZCYZTLLCQXYNJYCYYCYNZZQYYYEWYCZDCJYCCHYJLBTZYYCQWMPWPYMLGKDLDLGKQQBGYCHJXY\"\r\n this.full_dict = {\r\n \"a\": \"\\u554a\\u963f\\u9515\",\r\n \"ai\": \"\\u57c3\\u6328\\u54ce\\u5509\\u54c0\\u7691\\u764c\\u853c\\u77ee\\u827e\\u788d\\u7231\\u9698\\u8bf6\\u6371\\u55f3\\u55cc\\u5ad2\\u7477\\u66a7\\u7839\\u953f\\u972d\",\r\n \"an\": \"\\u978d\\u6c28\\u5b89\\u4ffa\\u6309\\u6697\\u5cb8\\u80fa\\u6848\\u8c19\\u57ef\\u63de\\u72b4\\u5eb5\\u6849\\u94f5\\u9e4c\\u9878\\u9eef\",\r\n \"ang\": \"\\u80ae\\u6602\\u76ce\",\r\n \"ao\": \"\\u51f9\\u6556\\u71ac\\u7ff1\\u8884\\u50b2\\u5965\\u61ca\\u6fb3\\u5773\\u62d7\\u55f7\\u5662\\u5c99\\u5ed2\\u9068\\u5aaa\\u9a9c\\u8071\\u87af\\u93ca\\u9ccc\\u93d6\",\r\n \"ba\": \"\\u82ad\\u634c\\u6252\\u53ed\\u5427\\u7b06\\u516b\\u75a4\\u5df4\\u62d4\\u8dcb\\u9776\\u628a\\u8019\\u575d\\u9738\\u7f62\\u7238\\u8307\\u83dd\\u8406\\u636d\\u5c9c\\u705e\\u6777\\u94af\\u7c91\\u9c85\\u9b43\",\r\n \"bai\": \"\\u767d\\u67cf\\u767e\\u6446\\u4f70\\u8d25\\u62dc\\u7a17\\u859c\\u63b0\\u97b4\",\r\n \"ban\": \"\\u6591\\u73ed\\u642c\\u6273\\u822c\\u9881\\u677f\\u7248\\u626e\\u62cc\\u4f34\\u74e3\\u534a\\u529e\\u7eca\\u962a\\u5742\\u8c73\\u94a3\\u7622\\u764d\\u8228\",\r\n \"bang\": \"\\u90a6\\u5e2e\\u6886\\u699c\\u8180\\u7ed1\\u68d2\\u78c5\\u868c\\u9551\\u508d\\u8c24\\u84a1\\u8783\",\r\n \"bao\": \"\\u82de\\u80de\\u5305\\u8912\\u96f9\\u4fdd\\u5821\\u9971\\u5b9d\\u62b1\\u62a5\\u66b4\\u8c79\\u9c8d\\u7206\\u52f9\\u8446\\u5b80\\u5b62\\u7172\\u9e28\\u8913\\u8db5\\u9f85\",\r\n \"bo\": \"\\u5265\\u8584\\u73bb\\u83e0\\u64ad\\u62e8\\u94b5\\u6ce2\\u535a\\u52c3\\u640f\\u94c2\\u7b94\\u4f2f\\u5e1b\\u8236\\u8116\\u818a\\u6e24\\u6cca\\u9a73\\u4eb3\\u8543\\u5575\\u997d\\u6a97\\u64d8\\u7934\\u94b9\\u9e41\\u7c38\\u8ddb\",\r\n \"bei\": \"\\u676f\\u7891\\u60b2\\u5351\\u5317\\u8f88\\u80cc\\u8d1d\\u94a1\\u500d\\u72c8\\u5907\\u60eb\\u7119\\u88ab\\u5b5b\\u9642\\u90b6\\u57e4\\u84d3\\u5457\\u602b\\u6096\\u789a\\u9e4e\\u8919\\u943e\",\r\n \"ben\": \"\\u5954\\u82ef\\u672c\\u7b28\\u755a\\u574c\\u951b\",\r\n \"beng\": \"\\u5d29\\u7ef7\\u752d\\u6cf5\\u8e66\\u8ff8\\u552a\\u5623\\u750f\",\r\n \"bi\": \"\\u903c\\u9f3b\\u6bd4\\u9119\\u7b14\\u5f7c\\u78a7\\u84d6\\u853d\\u6bd5\\u6bd9\\u6bd6\\u5e01\\u5e87\\u75f9\\u95ed\\u655d\\u5f0a\\u5fc5\\u8f9f\\u58c1\\u81c2\\u907f\\u965b\\u5315\\u4ef3\\u4ffe\\u8298\\u835c\\u8378\\u5421\\u54d4\\u72f4\\u5eb3\\u610e\\u6ed7\\u6fde\\u5f3c\\u59a3\\u5a62\\u5b16\\u74a7\\u8d32\\u7540\\u94cb\\u79d5\\u88e8\\u7b5a\\u7b85\\u7be6\\u822d\\u895e\\u8df8\\u9ac0\",\r\n \"bian\": \"\\u97ad\\u8fb9\\u7f16\\u8d2c\\u6241\\u4fbf\\u53d8\\u535e\\u8fa8\\u8fa9\\u8fab\\u904d\\u533e\\u5f01\\u82c4\\u5fed\\u6c74\\u7f0f\\u7178\\u782d\\u78a5\\u7a39\\u7a86\\u8759\\u7b3e\\u9cca\",\r\n \"biao\": \"\\u6807\\u5f6a\\u8198\\u8868\\u5a4a\\u9aa0\\u98d1\\u98d9\\u98da\\u706c\\u9556\\u9573\\u762d\\u88f1\\u9cd4\",\r\n \"bie\": \"\\u9cd6\\u618b\\u522b\\u762a\\u8e69\\u9cd8\",\r\n \"bin\": \"\\u5f6c\\u658c\\u6fd2\\u6ee8\\u5bbe\\u6448\\u50a7\\u6d5c\\u7f24\\u73a2\\u6ba1\\u8191\\u9554\\u9acc\\u9b13\",\r\n \"bing\": \"\\u5175\\u51b0\\u67c4\\u4e19\\u79c9\\u997c\\u70b3\\u75c5\\u5e76\\u7980\\u90b4\\u6452\\u7ee0\\u678b\\u69df\\u71f9\",\r\n \"bu\": \"\\u6355\\u535c\\u54fa\\u8865\\u57e0\\u4e0d\\u5e03\\u6b65\\u7c3f\\u90e8\\u6016\\u62ca\\u535f\\u900b\\u74ff\\u6661\\u949a\\u91ad\",\r\n \"ca\": \"\\u64e6\\u5693\\u7924\",\r\n \"cai\": \"\\u731c\\u88c1\\u6750\\u624d\\u8d22\\u776c\\u8e29\\u91c7\\u5f69\\u83dc\\u8521\",\r\n \"can\": \"\\u9910\\u53c2\\u8695\\u6b8b\\u60ed\\u60e8\\u707f\\u9a96\\u74a8\\u7cb2\\u9eea\",\r\n \"cang\": \"\\u82cd\\u8231\\u4ed3\\u6ca7\\u85cf\\u4f27\",\r\n \"cao\": \"\\u64cd\\u7cd9\\u69fd\\u66f9\\u8349\\u8279\\u5608\\u6f15\\u87ac\\u825a\",\r\n \"ce\": \"\\u5395\\u7b56\\u4fa7\\u518c\\u6d4b\\u5202\\u5e3b\\u607b\",\r\n \"ceng\": \"\\u5c42\\u8e6d\\u564c\",\r\n \"cha\": \"\\u63d2\\u53c9\\u832c\\u8336\\u67e5\\u78b4\\u643d\\u5bdf\\u5c94\\u5dee\\u8be7\\u7339\\u9987\\u6c4a\\u59f9\\u6748\\u6942\\u69ce\\u6aab\\u9497\\u9538\\u9572\\u8869\",\r\n \"chai\": \"\\u62c6\\u67f4\\u8c7a\\u4faa\\u8308\\u7625\\u867f\\u9f87\",\r\n \"chan\": \"\\u6400\\u63ba\\u8749\\u998b\\u8c17\\u7f20\\u94f2\\u4ea7\\u9610\\u98a4\\u5181\\u8c04\\u8c36\\u8487\\u5edb\\u5fcf\\u6f7a\\u6fb6\\u5b71\\u7fbc\\u5a75\\u5b17\\u9aa3\\u89c7\\u7985\\u9561\\u88e3\\u87fe\\u8e94\",\r\n \"chang\": \"\\u660c\\u7316\\u573a\\u5c1d\\u5e38\\u957f\\u507f\\u80a0\\u5382\\u655e\\u7545\\u5531\\u5021\\u4f25\\u9b2f\\u82cc\\u83d6\\u5f9c\\u6005\\u60dd\\u960a\\u5a3c\\u5ae6\\u6636\\u6c05\\u9cb3\",\r\n \"chao\": \"\\u8d85\\u6284\\u949e\\u671d\\u5632\\u6f6e\\u5de2\\u5435\\u7092\\u600a\\u7ec9\\u6641\\u8016\",\r\n \"che\": \"\\u8f66\\u626f\\u64a4\\u63a3\\u5f7b\\u6f88\\u577c\\u5c6e\\u7817\",\r\n \"chen\": \"\\u90f4\\u81e3\\u8fb0\\u5c18\\u6668\\u5ff1\\u6c89\\u9648\\u8d81\\u886c\\u79f0\\u8c0c\\u62bb\\u55d4\\u5bb8\\u741b\\u6987\\u809c\\u80c2\\u789c\\u9f80\",\r\n \"cheng\": \"\\u6491\\u57ce\\u6a59\\u6210\\u5448\\u4e58\\u7a0b\\u60e9\\u6f84\\u8bda\\u627f\\u901e\\u9a8b\\u79e4\\u57d5\\u5d4a\\u5fb5\\u6d48\\u67a8\\u67fd\\u6a18\\u665f\\u584d\\u77a0\\u94d6\\u88ce\\u86cf\\u9172\",\r\n \"chi\": \"\\u5403\\u75f4\\u6301\\u5319\\u6c60\\u8fdf\\u5f1b\\u9a70\\u803b\\u9f7f\\u4f88\\u5c3a\\u8d64\\u7fc5\\u65a5\\u70bd\\u50ba\\u5880\\u82aa\\u830c\\u640b\\u53f1\\u54e7\\u557b\\u55e4\\u5f73\\u996c\\u6cb2\\u5ab8\\u6555\\u80dd\\u7719\\u7735\\u9e31\\u761b\\u892b\\u86a9\\u87ad\\u7b1e\\u7bea\\u8c49\\u8e05\\u8e1f\\u9b51\",\r\n \"chong\": \"\\u5145\\u51b2\\u866b\\u5d07\\u5ba0\\u833a\\u5fe1\\u61a7\\u94f3\\u825f\",\r\n \"chou\": \"\\u62bd\\u916c\\u7574\\u8e0c\\u7a20\\u6101\\u7b79\\u4ec7\\u7ef8\\u7785\\u4e11\\u4fe6\\u5733\\u5e31\\u60c6\\u6eb4\\u59af\\u7633\\u96e0\\u9c8b\",\r\n \"chu\": \"\\u81ed\\u521d\\u51fa\\u6a71\\u53a8\\u8e87\\u9504\\u96cf\\u6ec1\\u9664\\u695a\\u7840\\u50a8\\u77d7\\u6410\\u89e6\\u5904\\u4e8d\\u520d\\u61b7\\u7ecc\\u6775\\u696e\\u6a17\\u870d\\u8e70\\u9edc\",\r\n \"chuan\": \"\\u63e3\\u5ddd\\u7a7f\\u693d\\u4f20\\u8239\\u5598\\u4e32\\u63be\\u821b\\u60f4\\u9044\\u5ddb\\u6c1a\\u948f\\u9569\\u8221\",\r\n \"chuang\": \"\\u75ae\\u7a97\\u5e62\\u5e8a\\u95ef\\u521b\\u6006\",\r\n \"chui\": \"\\u5439\\u708a\\u6376\\u9524\\u5782\\u9672\\u68f0\\u69cc\",\r\n \"chun\": \"\\u6625\\u693f\\u9187\\u5507\\u6df3\\u7eaf\\u8822\\u4fc3\\u83bc\\u6c8c\\u80ab\\u6710\\u9e51\\u877d\",\r\n \"chuo\": \"\\u6233\\u7ef0\\u851f\\u8fb6\\u8f8d\\u955e\\u8e14\\u9f8a\",\r\n \"ci\": \"\\u75b5\\u8328\\u78c1\\u96cc\\u8f9e\\u6148\\u74f7\\u8bcd\\u6b64\\u523a\\u8d50\\u6b21\\u8360\\u5472\\u5d6f\\u9e5a\\u8785\\u7ccd\\u8d91\",\r\n \"cong\": \"\\u806a\\u8471\\u56f1\\u5306\\u4ece\\u4e1b\\u506c\\u82c1\\u6dd9\\u9aa2\\u742e\\u7481\\u679e\",\r\n \"cu\": \"\\u51d1\\u7c97\\u918b\\u7c07\\u731d\\u6b82\\u8e59\",\r\n \"cuan\": \"\\u8e7f\\u7be1\\u7a9c\\u6c46\\u64ba\\u6615\\u7228\",\r\n \"cui\": \"\\u6467\\u5d14\\u50ac\\u8106\\u7601\\u7cb9\\u6dec\\u7fe0\\u8403\\u60b4\\u7480\\u69b1\\u96b9\",\r\n \"cun\": \"\\u6751\\u5b58\\u5bf8\\u78cb\\u5fd6\\u76b4\",\r\n \"cuo\": \"\\u64ae\\u6413\\u63aa\\u632b\\u9519\\u539d\\u811e\\u9509\\u77ec\\u75e4\\u9e7e\\u8e49\\u8e9c\",\r\n \"da\": \"\\u642d\\u8fbe\\u7b54\\u7629\\u6253\\u5927\\u8037\\u54d2\\u55d2\\u601b\\u59b2\\u75b8\\u8921\\u7b2a\\u977c\\u9791\",\r\n \"dai\": \"\\u5446\\u6b79\\u50a3\\u6234\\u5e26\\u6b86\\u4ee3\\u8d37\\u888b\\u5f85\\u902e\\u6020\\u57ed\\u7519\\u5454\\u5cb1\\u8fe8\\u902f\\u9a80\\u7ed0\\u73b3\\u9edb\",\r\n \"dan\": \"\\u803d\\u62c5\\u4e39\\u5355\\u90f8\\u63b8\\u80c6\\u65e6\\u6c2e\\u4f46\\u60ee\\u6de1\\u8bde\\u5f39\\u86cb\\u4ebb\\u510b\\u5369\\u840f\\u5556\\u6fb9\\u6a90\\u6b9a\\u8d55\\u7708\\u7605\\u8043\\u7baa\",\r\n \"dang\": \"\\u5f53\\u6321\\u515a\\u8361\\u6863\\u8c20\\u51fc\\u83ea\\u5b95\\u7800\\u94db\\u88c6\",\r\n \"dao\": \"\\u5200\\u6363\\u8e48\\u5012\\u5c9b\\u7977\\u5bfc\\u5230\\u7a3b\\u60bc\\u9053\\u76d7\\u53e8\\u5541\\u5fc9\\u6d2e\\u6c18\\u7118\\u5fd1\\u7e9b\",\r\n \"de\": \"\\u5fb7\\u5f97\\u7684\\u951d\",\r\n \"deng\": \"\\u8e6c\\u706f\\u767b\\u7b49\\u77aa\\u51f3\\u9093\\u5654\\u5d9d\\u6225\\u78f4\\u956b\\u7c26\",\r\n \"di\": \"\\u5824\\u4f4e\\u6ef4\\u8fea\\u654c\\u7b1b\\u72c4\\u6da4\\u7fdf\\u5ae1\\u62b5\\u5e95\\u5730\\u8482\\u7b2c\\u5e1d\\u5f1f\\u9012\\u7f14\\u6c10\\u7c74\\u8bcb\\u8c1b\\u90b8\\u577b\\u839c\\u837b\\u5600\\u5a23\\u67e2\\u68e3\\u89cc\\u7825\\u78b2\\u7747\\u955d\\u7f9d\\u9ab6\",\r\n \"dian\": \"\\u98a0\\u6382\\u6ec7\\u7898\\u70b9\\u5178\\u975b\\u57ab\\u7535\\u4f43\\u7538\\u5e97\\u60e6\\u5960\\u6dc0\\u6bbf\\u4e36\\u963d\\u576b\\u57dd\\u5dc5\\u73b7\\u765c\\u766b\\u7c1f\\u8e2e\",\r\n \"diao\": \"\\u7889\\u53fc\\u96d5\\u51cb\\u5201\\u6389\\u540a\\u9493\\u8c03\\u8f7a\\u94de\\u8729\\u7c9c\\u8c82\",\r\n \"die\": \"\\u8dcc\\u7239\\u789f\\u8776\\u8fed\\u8c0d\\u53e0\\u4f5a\\u57a4\\u581e\\u63f2\\u558b\\u6e2b\\u8f76\\u7252\\u74de\\u8936\\u800b\\u8e40\\u9cbd\\u9cce\",\r\n \"ding\": \"\\u4e01\\u76ef\\u53ee\\u9489\\u9876\\u9f0e\\u952d\\u5b9a\\u8ba2\\u4e22\\u4ec3\\u5576\\u738e\\u815a\\u7887\\u753a\\u94e4\\u7594\\u8035\\u914a\",\r\n \"dong\": \"\\u4e1c\\u51ac\\u8463\\u61c2\\u52a8\\u680b\\u4f97\\u606b\\u51bb\\u6d1e\\u578c\\u549a\\u5cbd\\u5cd2\\u5902\\u6c21\\u80e8\\u80f4\\u7850\\u9e2b\",\r\n \"dou\": \"\\u515c\\u6296\\u6597\\u9661\\u8c46\\u9017\\u75d8\\u8538\\u94ad\\u7aa6\\u7aac\\u86aa\\u7bfc\\u9161\",\r\n \"du\": \"\\u90fd\\u7763\\u6bd2\\u728a\\u72ec\\u8bfb\\u5835\\u7779\\u8d4c\\u675c\\u9540\\u809a\\u5ea6\\u6e21\\u5992\\u828f\\u561f\\u6e0e\\u691f\\u6a50\\u724d\\u8839\\u7b03\\u9ad1\\u9ee9\",\r\n \"duan\": \"\\u7aef\\u77ed\\u953b\\u6bb5\\u65ad\\u7f0e\\u5f56\\u6934\\u7145\\u7c16\",\r\n \"dui\": \"\\u5806\\u5151\\u961f\\u5bf9\\u603c\\u619d\\u7893\",\r\n \"dun\": \"\\u58a9\\u5428\\u8e72\\u6566\\u987f\\u56e4\\u949d\\u76fe\\u9041\\u7096\\u7818\\u7905\\u76f9\\u9566\\u8db8\",\r\n \"duo\": \"\\u6387\\u54c6\\u591a\\u593a\\u579b\\u8eb2\\u6735\\u8dfa\\u8235\\u5241\\u60f0\\u5815\\u5484\\u54da\\u7f0d\\u67c1\\u94ce\\u88f0\\u8e31\",\r\n \"e\": \"\\u86fe\\u5ce8\\u9e45\\u4fc4\\u989d\\u8bb9\\u5a25\\u6076\\u5384\\u627c\\u904f\\u9102\\u997f\\u5669\\u8c14\\u57a9\\u57ad\\u82ca\\u83aa\\u843c\\u5443\\u6115\\u5c59\\u5a40\\u8f6d\\u66f7\\u816d\\u786a\\u9507\\u9537\\u9e57\\u989a\\u9cc4\",\r\n \"en\": \"\\u6069\\u84bd\\u6441\\u5514\\u55ef\",\r\n \"er\": \"\\u800c\\u513f\\u8033\\u5c14\\u9975\\u6d31\\u4e8c\\u8d30\\u8fe9\\u73e5\\u94d2\\u9e38\\u9c95\",\r\n \"fa\": \"\\u53d1\\u7f5a\\u7b4f\\u4f10\\u4e4f\\u9600\\u6cd5\\u73d0\\u57a1\\u781d\",\r\n \"fan\": \"\\u85e9\\u5e06\\u756a\\u7ffb\\u6a0a\\u77fe\\u9492\\u7e41\\u51e1\\u70e6\\u53cd\\u8fd4\\u8303\\u8d29\\u72af\\u996d\\u6cdb\\u8629\\u5e61\\u72ad\\u68b5\\u6535\\u71d4\\u7548\\u8e6f\",\r\n \"fang\": \"\\u574a\\u82b3\\u65b9\\u80aa\\u623f\\u9632\\u59a8\\u4eff\\u8bbf\\u7eba\\u653e\\u531a\\u90a1\\u5f77\\u94ab\\u822b\\u9c82\",\r\n \"fei\": \"\\u83f2\\u975e\\u5561\\u98de\\u80a5\\u532a\\u8bfd\\u5420\\u80ba\\u5e9f\\u6cb8\\u8d39\\u82be\\u72d2\\u60b1\\u6ddd\\u5983\\u7ecb\\u7eef\\u69a7\\u8153\\u6590\\u6249\\u7953\\u7829\\u9544\\u75f1\\u871a\\u7bda\\u7fe1\\u970f\\u9cb1\",\r\n \"fen\": \"\\u82ac\\u915a\\u5429\\u6c1b\\u5206\\u7eb7\\u575f\\u711a\\u6c7e\\u7c89\\u594b\\u4efd\\u5fff\\u6124\\u7caa\\u507e\\u7035\\u68fc\\u610d\\u9cbc\\u9f22\",\r\n \"feng\": \"\\u4e30\\u5c01\\u67ab\\u8702\\u5cf0\\u950b\\u98ce\\u75af\\u70fd\\u9022\\u51af\\u7f1d\\u8bbd\\u5949\\u51e4\\u4ff8\\u9146\\u8451\\u6ca3\\u781c\",\r\n \"fu\": \"\\u4f5b\\u5426\\u592b\\u6577\\u80a4\\u5b75\\u6276\\u62c2\\u8f90\\u5e45\\u6c1f\\u7b26\\u4f0f\\u4fd8\\u670d\\u6d6e\\u6daa\\u798f\\u88b1\\u5f17\\u752b\\u629a\\u8f85\\u4fef\\u91dc\\u65a7\\u812f\\u8151\\u5e9c\\u8150\\u8d74\\u526f\\u8986\\u8d4b\\u590d\\u5085\\u4ed8\\u961c\\u7236\\u8179\\u8d1f\\u5bcc\\u8ba3\\u9644\\u5987\\u7f1a\\u5490\\u5310\\u51eb\\u90db\\u8299\\u82fb\\u832f\\u83a9\\u83d4\\u544b\\u5e5e\\u6ecf\\u8274\\u5b5a\\u9a78\\u7ec2\\u6874\\u8d59\\u9efb\\u9efc\\u7f58\\u7a03\\u99a5\\u864d\\u86a8\\u8709\\u8760\\u876e\\u9eb8\\u8dba\\u8dd7\\u9cc6\",\r\n \"ga\": \"\\u5676\\u560e\\u86e4\\u5c2c\\u5477\\u5c15\\u5c1c\\u65ee\\u9486\",\r\n \"gai\": \"\\u8be5\\u6539\\u6982\\u9499\\u76d6\\u6e89\\u4e10\\u9654\\u5793\\u6224\\u8d45\\u80f2\",\r\n \"gan\": \"\\u5e72\\u7518\\u6746\\u67d1\\u7aff\\u809d\\u8d76\\u611f\\u79c6\\u6562\\u8d63\\u5769\\u82f7\\u5c34\\u64c0\\u6cd4\\u6de6\\u6f89\\u7ec0\\u6a44\\u65f0\\u77f8\\u75b3\\u9150\",\r\n \"gang\": \"\\u5188\\u521a\\u94a2\\u7f38\\u809b\\u7eb2\\u5c97\\u6e2f\\u6206\\u7f61\\u9883\\u7b7b\",\r\n \"gong\": \"\\u6760\\u5de5\\u653b\\u529f\\u606d\\u9f9a\\u4f9b\\u8eac\\u516c\\u5bab\\u5f13\\u5de9\\u6c5e\\u62f1\\u8d21\\u5171\\u857b\\u5efe\\u54a3\\u73d9\\u80b1\\u86a3\\u86e9\\u89e5\",\r\n \"gao\": \"\\u7bd9\\u768b\\u9ad8\\u818f\\u7f94\\u7cd5\\u641e\\u9550\\u7a3f\\u544a\\u777e\\u8bf0\\u90dc\\u84bf\\u85c1\\u7f1f\\u69d4\\u69c1\\u6772\\u9506\",\r\n \"ge\": \"\\u54e5\\u6b4c\\u6401\\u6208\\u9e3d\\u80f3\\u7599\\u5272\\u9769\\u845b\\u683c\\u9601\\u9694\\u94ec\\u4e2a\\u5404\\u9b32\\u4ee1\\u54ff\\u5865\\u55dd\\u7ea5\\u643f\\u8188\\u784c\\u94ea\\u9549\\u88bc\\u988c\\u867c\\u8238\\u9abc\\u9ac2\",\r\n \"gei\": \"\\u7ed9\",\r\n \"gen\": \"\\u6839\\u8ddf\\u4e98\\u831b\\u54cf\\u826e\",\r\n \"geng\": \"\\u8015\\u66f4\\u5e9a\\u7fb9\\u57c2\\u803f\\u6897\\u54fd\\u8d53\\u9ca0\",\r\n \"gou\": \"\\u94a9\\u52fe\\u6c9f\\u82df\\u72d7\\u57a2\\u6784\\u8d2d\\u591f\\u4f5d\\u8bdf\\u5ca3\\u9058\\u5abe\\u7f11\\u89cf\\u5f40\\u9e32\\u7b31\\u7bdd\\u97b2\",\r\n \"gu\": \"\\u8f9c\\u83c7\\u5495\\u7b8d\\u4f30\\u6cbd\\u5b64\\u59d1\\u9f13\\u53e4\\u86ca\\u9aa8\\u8c37\\u80a1\\u6545\\u987e\\u56fa\\u96c7\\u560f\\u8bc2\\u83f0\\u54cc\\u5d2e\\u6c69\\u688f\\u8f71\\u726f\\u727f\\u80cd\\u81cc\\u6bc2\\u77bd\\u7f5f\\u94b4\\u9522\\u74e0\\u9e2a\\u9e44\\u75fc\\u86c4\\u9164\\u89da\\u9cb4\\u9ab0\\u9e58\",\r\n \"gua\": \"\\u522e\\u74dc\\u5250\\u5be1\\u6302\\u8902\\u5366\\u8bd6\\u5471\\u681d\\u9e39\",\r\n \"guai\": \"\\u4e56\\u62d0\\u602a\\u54d9\",\r\n \"guan\": \"\\u68fa\\u5173\\u5b98\\u51a0\\u89c2\\u7ba1\\u9986\\u7f50\\u60ef\\u704c\\u8d2f\\u500c\\u839e\\u63bc\\u6dab\\u76e5\\u9e73\\u9ccf\",\r\n \"guang\": \"\\u5149\\u5e7f\\u901b\\u72b7\\u6844\\u80f1\\u7592\",\r\n \"gui\": \"\\u7470\\u89c4\\u572d\\u7845\\u5f52\\u9f9f\\u95fa\\u8f68\\u9b3c\\u8be1\\u7678\\u6842\\u67dc\\u8dea\\u8d35\\u523d\\u5326\\u523f\\u5e8b\\u5b84\\u59ab\\u6867\\u7085\\u6677\\u7688\\u7c0b\\u9c91\\u9cdc\",\r\n \"gun\": \"\\u8f8a\\u6eda\\u68cd\\u4e28\\u886e\\u7ef2\\u78d9\\u9ca7\",\r\n \"guo\": \"\\u9505\\u90ed\\u56fd\\u679c\\u88f9\\u8fc7\\u9998\\u8803\\u57da\\u63b4\\u5459\\u56d7\\u5e3c\\u5d1e\\u7313\\u6901\\u8662\\u951e\\u8052\\u872e\\u873e\\u8748\",\r\n \"ha\": \"\\u54c8\",\r\n \"hai\": \"\\u9ab8\\u5b69\\u6d77\\u6c26\\u4ea5\\u5bb3\\u9a87\\u54b4\\u55e8\\u988f\\u91a2\",\r\n \"han\": \"\\u9163\\u61a8\\u90af\\u97e9\\u542b\\u6db5\\u5bd2\\u51fd\\u558a\\u7f55\\u7ff0\\u64bc\\u634d\\u65f1\\u61be\\u608d\\u710a\\u6c57\\u6c49\\u9097\\u83e1\\u6496\\u961a\\u701a\\u6657\\u7113\\u9894\\u86b6\\u9f3e\",\r\n \"hen\": \"\\u592f\\u75d5\\u5f88\\u72e0\\u6068\",\r\n \"hang\": \"\\u676d\\u822a\\u6c86\\u7ed7\\u73e9\\u6841\",\r\n \"hao\": \"\\u58d5\\u568e\\u8c6a\\u6beb\\u90dd\\u597d\\u8017\\u53f7\\u6d69\\u8585\\u55e5\\u5686\\u6fe0\\u704f\\u660a\\u7693\\u98a2\\u869d\",\r\n \"he\": \"\\u5475\\u559d\\u8377\\u83cf\\u6838\\u79be\\u548c\\u4f55\\u5408\\u76d2\\u8c89\\u9602\\u6cb3\\u6db8\\u8d6b\\u8910\\u9e64\\u8d3a\\u8bc3\\u52be\\u58d1\\u85ff\\u55d1\\u55ec\\u9616\\u76cd\\u86b5\\u7fee\",\r\n \"hei\": \"\\u563f\\u9ed1\",\r\n \"heng\": \"\\u54fc\\u4ea8\\u6a2a\\u8861\\u6052\\u8a07\\u8605\",\r\n \"hong\": \"\\u8f70\\u54c4\\u70d8\\u8679\\u9e3f\\u6d2a\\u5b8f\\u5f18\\u7ea2\\u9ec9\\u8ba7\\u836d\\u85a8\\u95f3\\u6cd3\",\r\n \"hou\": \"\\u5589\\u4faf\\u7334\\u543c\\u539a\\u5019\\u540e\\u5820\\u5f8c\\u9005\\u760a\\u7bcc\\u7cc7\\u9c8e\\u9aba\",\r\n \"hu\": \"\\u547c\\u4e4e\\u5ffd\\u745a\\u58f6\\u846b\\u80e1\\u8774\\u72d0\\u7cca\\u6e56\\u5f27\\u864e\\u552c\\u62a4\\u4e92\\u6caa\\u6237\\u51b1\\u553f\\u56eb\\u5cb5\\u7322\\u6019\\u60da\\u6d52\\u6ef9\\u7425\\u69f2\\u8f77\\u89f3\\u70c0\\u7173\\u623d\\u6248\\u795c\\u9e55\\u9e71\\u7b0f\\u9190\\u659b\",\r\n \"hua\": \"\\u82b1\\u54d7\\u534e\\u733e\\u6ed1\\u753b\\u5212\\u5316\\u8bdd\\u5290\\u6d4d\\u9a85\\u6866\\u94e7\\u7a1e\",\r\n \"huai\": \"\\u69d0\\u5f8a\\u6000\\u6dee\\u574f\\u8fd8\\u8e1d\",\r\n \"huan\": \"\\u6b22\\u73af\\u6853\\u7f13\\u6362\\u60a3\\u5524\\u75ea\\u8c62\\u7115\\u6da3\\u5ba6\\u5e7b\\u90c7\\u5942\\u57b8\\u64d0\\u571c\\u6d39\\u6d63\\u6f36\\u5bf0\\u902d\\u7f33\\u953e\\u9ca9\\u9b1f\",\r\n \"huang\": \"\\u8352\\u614c\\u9ec4\\u78fa\\u8757\\u7c27\\u7687\\u51f0\\u60f6\\u714c\\u6643\\u5e4c\\u604d\\u8c0e\\u968d\\u5fa8\\u6e5f\\u6f62\\u9051\\u749c\\u8093\\u7640\\u87e5\\u7bc1\\u9cc7\",\r\n \"hui\": \"\\u7070\\u6325\\u8f89\\u5fbd\\u6062\\u86d4\\u56de\\u6bc1\\u6094\\u6167\\u5349\\u60e0\\u6666\\u8d3f\\u79fd\\u4f1a\\u70e9\\u6c47\\u8bb3\\u8bf2\\u7ed8\\u8bd9\\u8334\\u835f\\u8559\\u54d5\\u5599\\u96b3\\u6d04\\u5f57\\u7f0b\\u73f2\\u6656\\u605a\\u867a\\u87ea\\u9ebe\",\r\n \"hun\": \"\\u8364\\u660f\\u5a5a\\u9b42\\u6d51\\u6df7\\u8be8\\u9984\\u960d\\u6eb7\\u7f17\",\r\n \"huo\": \"\\u8c41\\u6d3b\\u4f19\\u706b\\u83b7\\u6216\\u60d1\\u970d\\u8d27\\u7978\\u6509\\u56af\\u5925\\u94ac\\u952a\\u956c\\u8020\\u8816\",\r\n \"ji\": \"\\u51fb\\u573e\\u57fa\\u673a\\u7578\\u7a3d\\u79ef\\u7b95\\u808c\\u9965\\u8ff9\\u6fc0\\u8ba5\\u9e21\\u59ec\\u7ee9\\u7f09\\u5409\\u6781\\u68d8\\u8f91\\u7c4d\\u96c6\\u53ca\\u6025\\u75be\\u6c72\\u5373\\u5ac9\\u7ea7\\u6324\\u51e0\\u810a\\u5df1\\u84df\\u6280\\u5180\\u5b63\\u4f0e\\u796d\\u5242\\u60b8\\u6d4e\\u5bc4\\u5bc2\\u8ba1\\u8bb0\\u65e2\\u5fcc\\u9645\\u5993\\u7ee7\\u7eaa\\u5c45\\u4e0c\\u4e69\\u525e\\u4f76\\u4f74\\u8114\\u58bc\\u82a8\\u82b0\\u8401\\u84ba\\u857a\\u638e\\u53fd\\u54ad\\u54dc\\u5527\\u5c8c\\u5d74\\u6d0e\\u5f50\\u5c50\\u9aa5\\u757f\\u7391\\u696b\\u6b9b\\u621f\\u6222\\u8d4d\\u89ca\\u7284\\u9f51\\u77f6\\u7f81\\u5d47\\u7a37\\u7620\\u7635\\u866e\\u7b08\\u7b04\\u66a8\\u8dfb\\u8dfd\\u9701\\u9c9a\\u9cab\\u9afb\\u9e82\",\r\n \"jia\": \"\\u5609\\u67b7\\u5939\\u4f73\\u5bb6\\u52a0\\u835a\\u988a\\u8d3e\\u7532\\u94be\\u5047\\u7a3c\\u4ef7\\u67b6\\u9a7e\\u5ac1\\u4f3d\\u90cf\\u62ee\\u5cac\\u6d43\\u8fe6\\u73c8\\u621b\\u80db\\u605d\\u94d7\\u9553\\u75c2\\u86f1\\u7b33\\u8888\\u8dcf\",\r\n \"jian\": \"\\u6b7c\\u76d1\\u575a\\u5c16\\u7b3a\\u95f4\\u714e\\u517c\\u80a9\\u8270\\u5978\\u7f04\\u8327\\u68c0\\u67ec\\u78b1\\u7877\\u62e3\\u6361\\u7b80\\u4fed\\u526a\\u51cf\\u8350\\u69db\\u9274\\u8df5\\u8d31\\u89c1\\u952e\\u7bad\\u4ef6\\u5065\\u8230\\u5251\\u996f\\u6e10\\u6e85\\u6da7\\u5efa\\u50ed\\u8c0f\\u8c2b\\u83c5\\u84b9\\u641b\\u56dd\\u6e54\\u8e47\\u8b07\\u7f23\\u67a7\\u67d9\\u6957\\u620b\\u622c\\u726e\\u728d\\u6bfd\\u8171\\u7751\\u950f\\u9e63\\u88e5\\u7b15\\u7bb4\\u7fe6\\u8dbc\\u8e3a\\u9ca3\\u97af\",\r\n \"jiang\": \"\\u50f5\\u59dc\\u5c06\\u6d46\\u6c5f\\u7586\\u848b\\u6868\\u5956\\u8bb2\\u5320\\u9171\\u964d\\u8333\\u6d1a\\u7edb\\u7f30\\u729f\\u7913\\u8029\\u7ce8\\u8c47\",\r\n \"jiao\": \"\\u8549\\u6912\\u7901\\u7126\\u80f6\\u4ea4\\u90ca\\u6d47\\u9a84\\u5a07\\u56bc\\u6405\\u94f0\\u77eb\\u4fa5\\u811a\\u72e1\\u89d2\\u997a\\u7f34\\u7ede\\u527f\\u6559\\u9175\\u8f7f\\u8f83\\u53eb\\u4f7c\\u50ec\\u832d\\u6322\\u564d\\u5ce4\\u5fbc\\u59e3\\u7e9f\\u656b\\u768e\\u9e6a\\u86df\\u91ae\\u8de4\\u9c9b\",\r\n \"jie\": \"\\u7a96\\u63ed\\u63a5\\u7686\\u79f8\\u8857\\u9636\\u622a\\u52ab\\u8282\\u6854\\u6770\\u6377\\u776b\\u7aed\\u6d01\\u7ed3\\u89e3\\u59d0\\u6212\\u85c9\\u82a5\\u754c\\u501f\\u4ecb\\u75a5\\u8beb\\u5c4a\\u5048\\u8ba6\\u8bd8\\u5588\\u55df\\u736c\\u5a55\\u5b51\\u6840\\u7352\\u78a3\\u9534\\u7596\\u88b7\\u9889\\u86a7\\u7faf\\u9c92\\u9ab1\\u9aeb\",\r\n \"jin\": \"\\u5dfe\\u7b4b\\u65a4\\u91d1\\u4eca\\u6d25\\u895f\\u7d27\\u9526\\u4ec5\\u8c28\\u8fdb\\u9773\\u664b\\u7981\\u8fd1\\u70ec\\u6d78\\u5c3d\\u537a\\u8369\\u5807\\u5664\\u9991\\u5ed1\\u5997\\u7f19\\u747e\\u69ff\\u8d46\\u89d0\\u9485\\u9513\\u887f\\u77dc\",\r\n \"jing\": \"\\u52b2\\u8346\\u5162\\u830e\\u775b\\u6676\\u9cb8\\u4eac\\u60ca\\u7cbe\\u7cb3\\u7ecf\\u4e95\\u8b66\\u666f\\u9888\\u9759\\u5883\\u656c\\u955c\\u5f84\\u75c9\\u9756\\u7adf\\u7ade\\u51c0\\u522d\\u5106\\u9631\\u83c1\\u734d\\u61ac\\u6cfe\\u8ff3\\u5f2a\\u5a67\\u80bc\\u80eb\\u8148\\u65cc\",\r\n \"jiong\": \"\\u70af\\u7a98\\u5182\\u8fe5\\u6243\",\r\n \"jiu\": \"\\u63ea\\u7a76\\u7ea0\\u7396\\u97ed\\u4e45\\u7078\\u4e5d\\u9152\\u53a9\\u6551\\u65e7\\u81fc\\u8205\\u548e\\u5c31\\u759a\\u50e6\\u557e\\u9604\\u67e9\\u6855\\u9e6b\\u8d73\\u9b0f\",\r\n \"ju\": \"\\u97a0\\u62d8\\u72d9\\u75bd\\u9a79\\u83ca\\u5c40\\u5480\\u77e9\\u4e3e\\u6cae\\u805a\\u62d2\\u636e\\u5de8\\u5177\\u8ddd\\u8e1e\\u952f\\u4ff1\\u53e5\\u60e7\\u70ac\\u5267\\u5028\\u8bb5\\u82e3\\u82f4\\u8392\\u63ac\\u907d\\u5c66\\u741a\\u67b8\\u6910\\u6998\\u6989\\u6a58\\u728b\\u98d3\\u949c\\u9514\\u7aad\\u88fe\\u8d84\\u91b5\\u8e3d\\u9f83\\u96ce\\u97ab\",\r\n \"juan\": \"\\u6350\\u9e43\\u5a1f\\u5026\\u7737\\u5377\\u7ee2\\u9104\\u72f7\\u6d93\\u684a\\u8832\\u9529\\u954c\\u96bd\",\r\n \"jue\": \"\\u6485\\u652b\\u6289\\u6398\\u5014\\u7235\\u89c9\\u51b3\\u8bc0\\u7edd\\u53a5\\u5282\\u8c32\\u77cd\\u8568\\u5658\\u5d1b\\u7357\\u5b53\\u73cf\\u6877\\u6a5b\\u721d\\u9562\\u8e76\\u89d6\",\r\n \"jun\": \"\\u5747\\u83cc\\u94a7\\u519b\\u541b\\u5cfb\\u4fca\\u7ae3\\u6d5a\\u90e1\\u9a8f\\u6343\\u72fb\\u76b2\\u7b60\\u9e87\",\r\n \"ka\": \"\\u5580\\u5496\\u5361\\u4f67\\u5494\\u80e9\",\r\n \"ke\": \"\\u54af\\u5777\\u82db\\u67ef\\u68f5\\u78d5\\u9897\\u79d1\\u58f3\\u54b3\\u53ef\\u6e34\\u514b\\u523b\\u5ba2\\u8bfe\\u5ca2\\u606a\\u6e98\\u9a92\\u7f02\\u73c2\\u8f72\\u6c2a\\u778c\\u94b6\\u75b4\\u7aa0\\u874c\\u9ac1\",\r\n \"kai\": \"\\u5f00\\u63e9\\u6977\\u51ef\\u6168\\u5240\\u57b2\\u8488\\u5ffe\\u607a\\u94e0\\u950e\",\r\n \"kan\": \"\\u520a\\u582a\\u52d8\\u574e\\u780d\\u770b\\u4f83\\u51f5\\u83b0\\u83b6\\u6221\\u9f9b\\u77b0\",\r\n \"kang\": \"\\u5eb7\\u6177\\u7ce0\\u625b\\u6297\\u4ea2\\u7095\\u5751\\u4f09\\u95f6\\u94aa\",\r\n \"kao\": \"\\u8003\\u62f7\\u70e4\\u9760\\u5c3b\\u6832\\u7292\\u94d0\",\r\n \"ken\": \"\\u80af\\u5543\\u57a6\\u6073\\u57a0\\u88c9\\u9880\",\r\n \"keng\": \"\\u542d\\u5fd0\\u94ff\",\r\n \"kong\": \"\\u7a7a\\u6050\\u5b54\\u63a7\\u5025\\u5d06\\u7b9c\",\r\n \"kou\": \"\\u62a0\\u53e3\\u6263\\u5bc7\\u82a4\\u853b\\u53e9\\u770d\\u7b58\",\r\n \"ku\": \"\\u67af\\u54ed\\u7a9f\\u82e6\\u9177\\u5e93\\u88e4\\u5233\\u5800\\u55be\\u7ed4\\u9ab7\",\r\n \"kua\": \"\\u5938\\u57ae\\u630e\\u8de8\\u80ef\\u4f89\",\r\n \"kuai\": \"\\u5757\\u7b77\\u4fa9\\u5feb\\u84af\\u90d0\\u8489\\u72ef\\u810d\",\r\n \"kuan\": \"\\u5bbd\\u6b3e\\u9acb\",\r\n \"kuang\": \"\\u5321\\u7b50\\u72c2\\u6846\\u77ff\\u7736\\u65f7\\u51b5\\u8bd3\\u8bf3\\u909d\\u5739\\u593c\\u54d0\\u7ea9\\u8d36\",\r\n \"kui\": \"\\u4e8f\\u76d4\\u5cbf\\u7aa5\\u8475\\u594e\\u9b41\\u5080\\u9988\\u6127\\u6e83\\u9997\\u532e\\u5914\\u9697\\u63c6\\u55b9\\u559f\\u609d\\u6126\\u9615\\u9035\\u668c\\u777d\\u8069\\u8770\\u7bd1\\u81fe\\u8dec\",\r\n \"kun\": \"\\u5764\\u6606\\u6346\\u56f0\\u6083\\u9603\\u7428\\u951f\\u918c\\u9cb2\\u9ae1\",\r\n \"kuo\": \"\\u62ec\\u6269\\u5ed3\\u9614\\u86de\",\r\n \"la\": \"\\u5783\\u62c9\\u5587\\u8721\\u814a\\u8fa3\\u5566\\u524c\\u647a\\u908b\\u65ef\\u782c\\u760c\",\r\n \"lai\": \"\\u83b1\\u6765\\u8d56\\u5d03\\u5f95\\u6d9e\\u6fd1\\u8d49\\u7750\\u94fc\\u765e\\u7c41\",\r\n \"lan\": \"\\u84dd\\u5a6a\\u680f\\u62e6\\u7bee\\u9611\\u5170\\u6f9c\\u8c30\\u63fd\\u89c8\\u61d2\\u7f06\\u70c2\\u6ee5\\u5549\\u5c9a\\u61d4\\u6f24\\u6984\\u6593\\u7f71\\u9567\\u8934\",\r\n \"lang\": \"\\u7405\\u6994\\u72fc\\u5eca\\u90ce\\u6717\\u6d6a\\u83a8\\u8497\\u5577\\u9606\\u9512\\u7a02\\u8782\",\r\n \"lao\": \"\\u635e\\u52b3\\u7262\\u8001\\u4f6c\\u59e5\\u916a\\u70d9\\u6d9d\\u5520\\u5d02\\u6833\\u94d1\\u94f9\\u75e8\\u91aa\",\r\n \"le\": \"\\u52d2\\u4e50\\u808b\\u4ec2\\u53fb\\u561e\\u6cd0\\u9cd3\",\r\n \"lei\": \"\\u96f7\\u956d\\u857e\\u78ca\\u7d2f\\u5121\\u5792\\u64c2\\u7c7b\\u6cea\\u7fb8\\u8bd4\\u837d\\u54a7\\u6f2f\\u5ad8\\u7f27\\u6a91\\u8012\\u9179\",\r\n \"ling\": \"\\u68f1\\u51b7\\u62ce\\u73b2\\u83f1\\u96f6\\u9f84\\u94c3\\u4f36\\u7f9a\\u51cc\\u7075\\u9675\\u5cad\\u9886\\u53e6\\u4ee4\\u9143\\u5844\\u82d3\\u5464\\u56f9\\u6ce0\\u7eeb\\u67c3\\u68c2\\u74f4\\u8046\\u86c9\\u7fce\\u9cae\",\r\n \"leng\": \"\\u695e\\u6123\",\r\n \"li\": \"\\u5398\\u68a8\\u7281\\u9ece\\u7bf1\\u72f8\\u79bb\\u6f13\\u7406\\u674e\\u91cc\\u9ca4\\u793c\\u8389\\u8354\\u540f\\u6817\\u4e3d\\u5389\\u52b1\\u783e\\u5386\\u5229\\u5088\\u4f8b\\u4fd0\\u75e2\\u7acb\\u7c92\\u6ca5\\u96b6\\u529b\\u7483\\u54e9\\u4fea\\u4fda\\u90e6\\u575c\\u82c8\\u8385\\u84e0\\u85dc\\u6369\\u5456\\u5533\\u55b1\\u7301\\u6ea7\\u6fa7\\u9026\\u5a0c\\u5ae0\\u9a8a\\u7f21\\u73de\\u67a5\\u680e\\u8f79\\u623e\\u783a\\u8a48\\u7f79\\u9502\\u9e42\\u75a0\\u75ac\\u86ce\\u870a\\u8821\\u7b20\\u7be5\\u7c9d\\u91b4\\u8dde\\u96f3\\u9ca1\\u9ce2\\u9ee7\",\r\n \"lian\": \"\\u4fe9\\u8054\\u83b2\\u8fde\\u9570\\u5ec9\\u601c\\u6d9f\\u5e18\\u655b\\u8138\\u94fe\\u604b\\u70bc\\u7ec3\\u631b\\u8539\\u5941\\u6f4b\\u6fc2\\u5a08\\u740f\\u695d\\u6b93\\u81c1\\u81a6\\u88e2\\u880a\\u9ca2\",\r\n \"liang\": \"\\u7cae\\u51c9\\u6881\\u7cb1\\u826f\\u4e24\\u8f86\\u91cf\\u667e\\u4eae\\u8c05\\u589a\\u690b\\u8e09\\u9753\\u9b49\",\r\n \"liao\": \"\\u64a9\\u804a\\u50da\\u7597\\u71ce\\u5be5\\u8fbd\\u6f66\\u4e86\\u6482\\u9563\\u5ed6\\u6599\\u84fc\\u5c25\\u5639\\u7360\\u5bee\\u7f2d\\u948c\\u9e69\\u8022\",\r\n \"lie\": \"\\u5217\\u88c2\\u70c8\\u52a3\\u730e\\u51bd\\u57d2\\u6d0c\\u8d94\\u8e90\\u9b23\",\r\n \"lin\": \"\\u7433\\u6797\\u78f7\\u9716\\u4e34\\u90bb\\u9cde\\u6dcb\\u51db\\u8d41\\u541d\\u853a\\u5d99\\u5eea\\u9074\\u6aa9\\u8f9a\\u77b5\\u7cbc\\u8e8f\\u9e9f\",\r\n \"liu\": \"\\u6e9c\\u7409\\u69b4\\u786b\\u998f\\u7559\\u5218\\u7624\\u6d41\\u67f3\\u516d\\u62a1\\u507b\\u848c\\u6cd6\\u6d4f\\u905b\\u9a9d\\u7efa\\u65d2\\u7198\\u950d\\u954f\\u9e68\\u938f\",\r\n \"long\": \"\\u9f99\\u804b\\u5499\\u7b3c\\u7abf\\u9686\\u5784\\u62e2\\u9647\\u5f04\\u5785\\u830f\\u6cf7\\u73d1\\u680a\\u80e7\\u783b\\u7643\",\r\n \"lou\": \"\\u697c\\u5a04\\u6402\\u7bd3\\u6f0f\\u964b\\u55bd\\u5d5d\\u9542\\u7618\\u8027\\u877c\\u9ac5\",\r\n \"lu\": \"\\u82a6\\u5362\\u9885\\u5e90\\u7089\\u63b3\\u5364\\u864f\\u9c81\\u9e93\\u788c\\u9732\\u8def\\u8d42\\u9e7f\\u6f5e\\u7984\\u5f55\\u9646\\u622e\\u5786\\u6445\\u64b8\\u565c\\u6cf8\\u6e0c\\u6f09\\u7490\\u680c\\u6a79\\u8f73\\u8f82\\u8f98\\u6c07\\u80ea\\u9565\\u9e2c\\u9e6d\\u7c0f\\u823b\\u9c88\",\r\n \"lv\": \"\\u9a74\\u5415\\u94dd\\u4fa3\\u65c5\\u5c65\\u5c61\\u7f15\\u8651\\u6c2f\\u5f8b\\u7387\\u6ee4\\u7eff\\u634b\\u95fe\\u6988\\u8182\\u7a06\\u891b\",\r\n \"luan\": \"\\u5ce6\\u5b6a\\u6ee6\\u5375\\u4e71\\u683e\\u9e3e\\u92ae\",\r\n \"lue\": \"\\u63a0\\u7565\\u950a\",\r\n \"lun\": \"\\u8f6e\\u4f26\\u4ed1\\u6ca6\\u7eb6\\u8bba\\u56f5\",\r\n \"luo\": \"\\u841d\\u87ba\\u7f57\\u903b\\u9523\\u7ba9\\u9aa1\\u88f8\\u843d\\u6d1b\\u9a86\\u7edc\\u502e\\u8366\\u645e\\u7321\\u6cfa\\u6924\\u8136\\u9559\\u7630\\u96d2\",\r\n \"ma\": \"\\u5988\\u9ebb\\u739b\\u7801\\u8682\\u9a6c\\u9a82\\u561b\\u5417\\u551b\\u72b8\\u5b37\\u6769\\u9ebd\",\r\n \"mai\": \"\\u57cb\\u4e70\\u9ea6\\u5356\\u8fc8\\u8109\\u52a2\\u836c\\u54aa\\u973e\",\r\n \"man\": \"\\u7792\\u9992\\u86ee\\u6ee1\\u8513\\u66fc\\u6162\\u6f2b\\u8c29\\u5881\\u5e54\\u7f26\\u71b3\\u9558\\u989f\\u87a8\\u9cd7\\u9794\",\r\n \"mang\": \"\\u8292\\u832b\\u76f2\\u5fd9\\u83bd\\u9099\\u6f2d\\u6726\\u786d\\u87d2\",\r\n \"meng\": \"\\u6c13\\u840c\\u8499\\u6aac\\u76df\\u9530\\u731b\\u68a6\\u5b5f\\u52d0\\u750d\\u77a2\\u61f5\\u791e\\u867b\\u8722\\u8813\\u824b\\u8268\\u9efe\",\r\n \"miao\": \"\\u732b\\u82d7\\u63cf\\u7784\\u85d0\\u79d2\\u6e3a\\u5e99\\u5999\\u55b5\\u9088\\u7f08\\u7f2a\\u676a\\u6dfc\\u7707\\u9e4b\\u8731\",\r\n \"mao\": \"\\u8305\\u951a\\u6bdb\\u77db\\u94c6\\u536f\\u8302\\u5192\\u5e3d\\u8c8c\\u8d38\\u4f94\\u88a4\\u52d6\\u8306\\u5cc1\\u7441\\u6634\\u7266\\u8004\\u65c4\\u61cb\\u7780\\u86d1\\u8765\\u87ca\\u9ae6\",\r\n \"me\": \"\\u4e48\",\r\n \"mei\": \"\\u73ab\\u679a\\u6885\\u9176\\u9709\\u7164\\u6ca1\\u7709\\u5a92\\u9541\\u6bcf\\u7f8e\\u6627\\u5bd0\\u59b9\\u5a9a\\u5776\\u8393\\u5d4b\\u7338\\u6d7c\\u6e44\\u6963\\u9545\\u9e5b\\u8882\\u9b45\",\r\n \"men\": \"\\u95e8\\u95f7\\u4eec\\u626a\\u739f\\u7116\\u61d1\\u9494\",\r\n \"mi\": \"\\u772f\\u919a\\u9761\\u7cdc\\u8ff7\\u8c1c\\u5f25\\u7c73\\u79d8\\u89c5\\u6ccc\\u871c\\u5bc6\\u5e42\\u8288\\u5196\\u8c27\\u863c\\u5627\\u7315\\u736f\\u6c68\\u5b93\\u5f2d\\u8112\\u6549\\u7cf8\\u7e3b\\u9e8b\",\r\n \"mian\": \"\\u68c9\\u7720\\u7ef5\\u5195\\u514d\\u52c9\\u5a29\\u7f05\\u9762\\u6c94\\u6e4e\\u817c\\u7704\",\r\n \"mie\": \"\\u8511\\u706d\\u54a9\\u881b\\u7bfe\",\r\n \"min\": \"\\u6c11\\u62bf\\u76bf\\u654f\\u60af\\u95fd\\u82e0\\u5cb7\\u95f5\\u6cef\\u73c9\",\r\n \"ming\": \"\\u660e\\u879f\\u9e23\\u94ed\\u540d\\u547d\\u51a5\\u8317\\u6e9f\\u669d\\u7791\\u9169\",\r\n \"miu\": \"\\u8c2c\",\r\n \"mo\": \"\\u6478\\u6479\\u8611\\u6a21\\u819c\\u78e8\\u6469\\u9b54\\u62b9\\u672b\\u83ab\\u58a8\\u9ed8\\u6cab\\u6f20\\u5bde\\u964c\\u8c1f\\u8309\\u84e6\\u998d\\u5aeb\\u9546\\u79e3\\u763c\\u8031\\u87c6\\u8c8a\\u8c98\",\r\n \"mou\": \"\\u8c0b\\u725f\\u67d0\\u53b6\\u54de\\u5a7a\\u7738\\u936a\",\r\n \"mu\": \"\\u62c7\\u7261\\u4ea9\\u59c6\\u6bcd\\u5893\\u66ae\\u5e55\\u52df\\u6155\\u6728\\u76ee\\u7766\\u7267\\u7a46\\u4eeb\\u82dc\\u5452\\u6c90\\u6bea\\u94bc\",\r\n \"na\": \"\\u62ff\\u54ea\\u5450\\u94a0\\u90a3\\u5a1c\\u7eb3\\u5185\\u637a\\u80ad\\u954e\\u8872\\u7bac\",\r\n \"nai\": \"\\u6c16\\u4e43\\u5976\\u8010\\u5948\\u9f10\\u827f\\u8418\\u67f0\",\r\n \"nan\": \"\\u5357\\u7537\\u96be\\u56ca\\u5583\\u56e1\\u6960\\u8169\\u877b\\u8d67\",\r\n \"nao\": \"\\u6320\\u8111\\u607c\\u95f9\\u5b6c\\u57b4\\u7331\\u7459\\u7847\\u94d9\\u86f2\",\r\n \"ne\": \"\\u6dd6\\u5462\\u8bb7\",\r\n \"nei\": \"\\u9981\",\r\n \"nen\": \"\\u5ae9\\u80fd\\u6798\\u6041\",\r\n \"ni\": \"\\u59ae\\u9713\\u502a\\u6ce5\\u5c3c\\u62df\\u4f60\\u533f\\u817b\\u9006\\u6eba\\u4f32\\u576d\\u730a\\u6029\\u6ee0\\u6635\\u65ce\\u7962\\u615d\\u7768\\u94cc\\u9cb5\",\r\n \"nian\": \"\\u852b\\u62c8\\u5e74\\u78be\\u64b5\\u637b\\u5ff5\\u5eff\\u8f87\\u9ecf\\u9c87\\u9cb6\",\r\n \"niang\": \"\\u5a18\\u917f\",\r\n \"niao\": \"\\u9e1f\\u5c3f\\u8311\\u5b32\\u8132\\u8885\",\r\n \"nie\": \"\\u634f\\u8042\\u5b7d\\u556e\\u954a\\u954d\\u6d85\\u4e5c\\u9667\\u8616\\u55eb\\u8080\\u989e\\u81ec\\u8e51\",\r\n \"nin\": \"\\u60a8\\u67e0\",\r\n \"ning\": \"\\u72de\\u51dd\\u5b81\\u62e7\\u6cde\\u4f5e\\u84e5\\u549b\\u752f\\u804d\",\r\n \"niu\": \"\\u725b\\u626d\\u94ae\\u7ebd\\u72c3\\u5ff8\\u599e\\u86b4\",\r\n \"nong\": \"\\u8113\\u6d53\\u519c\\u4fac\",\r\n \"nu\": \"\\u5974\\u52aa\\u6012\\u5476\\u5e11\\u5f29\\u80ec\\u5b65\\u9a7d\",\r\n \"nv\": \"\\u5973\\u6067\\u9495\\u8844\",\r\n \"nuan\": \"\\u6696\",\r\n \"nuenue\": \"\\u8650\",\r\n \"nue\": \"\\u759f\\u8c11\",\r\n \"nuo\": \"\\u632a\\u61e6\\u7cef\\u8bfa\\u50a9\\u6426\\u558f\\u9518\",\r\n \"ou\": \"\\u54e6\\u6b27\\u9e25\\u6bb4\\u85d5\\u5455\\u5076\\u6ca4\\u6004\\u74ef\\u8026\",\r\n \"pa\": \"\\u556a\\u8db4\\u722c\\u5e15\\u6015\\u7436\\u8469\\u7b62\",\r\n \"pai\": \"\\u62cd\\u6392\\u724c\\u5f98\\u6e43\\u6d3e\\u4ff3\\u848e\",\r\n \"pan\": \"\\u6500\\u6f58\\u76d8\\u78d0\\u76fc\\u7554\\u5224\\u53db\\u723f\\u6cee\\u88a2\\u897b\\u87e0\\u8e52\",\r\n \"pang\": \"\\u4e53\\u5e9e\\u65c1\\u802a\\u80d6\\u6ec2\\u9004\",\r\n \"pao\": \"\\u629b\\u5486\\u5228\\u70ae\\u888d\\u8dd1\\u6ce1\\u530f\\u72cd\\u5e96\\u812c\\u75b1\",\r\n \"pei\": \"\\u5478\\u80da\\u57f9\\u88f4\\u8d54\\u966a\\u914d\\u4f69\\u6c9b\\u638a\\u8f94\\u5e14\\u6de0\\u65c6\\u952b\\u9185\\u9708\",\r\n \"pen\": \"\\u55b7\\u76c6\\u6e53\",\r\n \"peng\": \"\\u7830\\u62a8\\u70f9\\u6f8e\\u5f6d\\u84ec\\u68da\\u787c\\u7bf7\\u81a8\\u670b\\u9e4f\\u6367\\u78b0\\u576f\\u580b\\u562d\\u6026\\u87db\",\r\n \"pi\": \"\\u7812\\u9739\\u6279\\u62ab\\u5288\\u7435\\u6bd7\\u5564\\u813e\\u75b2\\u76ae\\u5339\\u75de\\u50fb\\u5c41\\u8b6c\\u4e15\\u9674\\u90b3\\u90eb\\u572e\\u9f19\\u64d7\\u567c\\u5e80\\u5ab2\\u7eb0\\u6787\\u7513\\u7765\\u7f74\\u94cd\\u75e6\\u7656\\u758b\\u868d\\u8c94\",\r\n \"pian\": \"\\u7bc7\\u504f\\u7247\\u9a97\\u8c1d\\u9a88\\u728f\\u80fc\\u890a\\u7fe9\\u8e41\",\r\n \"piao\": \"\\u98d8\\u6f02\\u74e2\\u7968\\u527d\\u560c\\u5ad6\\u7f25\\u6b8d\\u779f\\u87b5\",\r\n \"pie\": \"\\u6487\\u77a5\\u4e3f\\u82e4\\u6c15\",\r\n \"pin\": \"\\u62fc\\u9891\\u8d2b\\u54c1\\u8058\\u62da\\u59d8\\u5ad4\\u6980\\u725d\\u98a6\",\r\n \"ping\": \"\\u4e52\\u576a\\u82f9\\u840d\\u5e73\\u51ed\\u74f6\\u8bc4\\u5c4f\\u4fdc\\u5a09\\u67b0\\u9c86\",\r\n \"po\": \"\\u5761\\u6cfc\\u9887\\u5a46\\u7834\\u9b44\\u8feb\\u7c95\\u53f5\\u9131\\u6ea5\\u73c0\\u948b\\u94b7\\u76a4\\u7b38\",\r\n \"pou\": \"\\u5256\\u88d2\\u8e23\",\r\n \"pu\": \"\\u6251\\u94fa\\u4ec6\\u8386\\u8461\\u83e9\\u84b2\\u57d4\\u6734\\u5703\\u666e\\u6d66\\u8c31\\u66dd\\u7011\\u530d\\u5657\\u6fee\\u749e\\u6c06\\u9564\\u9568\\u8e7c\",\r\n \"qi\": \"\\u671f\\u6b3a\\u6816\\u621a\\u59bb\\u4e03\\u51c4\\u6f06\\u67d2\\u6c8f\\u5176\\u68cb\\u5947\\u6b67\\u7566\\u5d0e\\u8110\\u9f50\\u65d7\\u7948\\u7941\\u9a91\\u8d77\\u5c82\\u4e5e\\u4f01\\u542f\\u5951\\u780c\\u5668\\u6c14\\u8fc4\\u5f03\\u6c7d\\u6ce3\\u8bab\\u4e9f\\u4e93\\u573b\\u8291\\u840b\\u847a\\u5601\\u5c7a\\u5c90\\u6c54\\u6dc7\\u9a90\\u7eee\\u742a\\u7426\\u675e\\u6864\\u69ed\\u6b39\\u797a\\u61a9\\u789b\\u86f4\\u871e\\u7da6\\u7dae\\u8dbf\\u8e4a\\u9ccd\\u9e92\",\r\n \"qia\": \"\\u6390\\u6070\\u6d3d\\u845c\",\r\n \"qian\": \"\\u7275\\u6266\\u948e\\u94c5\\u5343\\u8fc1\\u7b7e\\u4edf\\u8c26\\u4e7e\\u9ed4\\u94b1\\u94b3\\u524d\\u6f5c\\u9063\\u6d45\\u8c34\\u5811\\u5d4c\\u6b20\\u6b49\\u4f65\\u9621\\u828a\\u82a1\\u8368\\u63ae\\u5c8d\\u60ad\\u614a\\u9a9e\\u6434\\u8930\\u7f31\\u6920\\u80b7\\u6106\\u94a4\\u8654\\u7b9d\",\r\n \"qiang\": \"\\u67aa\\u545b\\u8154\\u7f8c\\u5899\\u8537\\u5f3a\\u62a2\\u5af1\\u6a2f\\u6217\\u709d\\u9516\\u9535\\u956a\\u8941\\u8723\\u7f9f\\u8deb\\u8dc4\",\r\n \"qiao\": \"\\u6a47\\u9539\\u6572\\u6084\\u6865\\u77a7\\u4e54\\u4fa8\\u5de7\\u9798\\u64ac\\u7fd8\\u5ced\\u4fcf\\u7a8d\\u5281\\u8bee\\u8c2f\\u835e\\u6100\\u6194\\u7f32\\u6a35\\u6bf3\\u7857\\u8df7\\u9792\",\r\n \"qie\": \"\\u5207\\u8304\\u4e14\\u602f\\u7a83\\u90c4\\u553c\\u60ec\\u59be\\u6308\\u9532\\u7ba7\",\r\n \"qin\": \"\\u94a6\\u4fb5\\u4eb2\\u79e6\\u7434\\u52e4\\u82b9\\u64d2\\u79bd\\u5bdd\\u6c81\\u82a9\\u84c1\\u8572\\u63ff\\u5423\\u55ea\\u5659\\u6eb1\\u6a8e\\u8793\\u887e\",\r\n \"qing\": \"\\u9752\\u8f7b\\u6c22\\u503e\\u537f\\u6e05\\u64ce\\u6674\\u6c30\\u60c5\\u9877\\u8bf7\\u5e86\\u5029\\u82d8\\u570a\\u6aa0\\u78ec\\u873b\\u7f44\\u7b90\\u8b26\\u9cad\\u9ee5\",\r\n \"qiong\": \"\\u743c\\u7a77\\u909b\\u8315\\u7a79\\u7b47\\u928e\",\r\n \"qiu\": \"\\u79cb\\u4e18\\u90b1\\u7403\\u6c42\\u56da\\u914b\\u6cc5\\u4fc5\\u6c3d\\u5def\\u827d\\u72b0\\u6e6b\\u9011\\u9052\\u6978\\u8d47\\u9e20\\u866c\\u86af\\u8764\\u88d8\\u7cd7\\u9cc5\\u9f3d\",\r\n \"qu\": \"\\u8d8b\\u533a\\u86c6\\u66f2\\u8eaf\\u5c48\\u9a71\\u6e20\\u53d6\\u5a36\\u9f8b\\u8da3\\u53bb\\u8bce\\u52ac\\u8556\\u8627\\u5c96\\u8862\\u9612\\u74a9\\u89d1\\u6c0d\\u795b\\u78f2\\u766f\\u86d0\\u883c\\u9eb4\\u77bf\\u9ee2\",\r\n \"quan\": \"\\u5708\\u98a7\\u6743\\u919b\\u6cc9\\u5168\\u75ca\\u62f3\\u72ac\\u5238\\u529d\\u8be0\\u8343\\u737e\\u609b\\u7efb\\u8f81\\u754e\\u94e8\\u8737\\u7b4c\\u9b08\",\r\n \"que\": \"\\u7f3a\\u7094\\u7638\\u5374\\u9e4a\\u69b7\\u786e\\u96c0\\u9619\\u60ab\",\r\n \"qun\": \"\\u88d9\\u7fa4\\u9021\",\r\n \"ran\": \"\\u7136\\u71c3\\u5189\\u67d3\\u82d2\\u9aef\",\r\n \"rang\": \"\\u74e4\\u58e4\\u6518\\u56b7\\u8ba9\\u79b3\\u7a70\",\r\n \"rao\": \"\\u9976\\u6270\\u7ed5\\u835b\\u5a06\\u6861\",\r\n \"ruo\": \"\\u60f9\\u82e5\\u5f31\",\r\n \"re\": \"\\u70ed\\u504c\",\r\n \"ren\": \"\\u58ec\\u4ec1\\u4eba\\u5fcd\\u97e7\\u4efb\\u8ba4\\u5203\\u598a\\u7eab\\u4ede\\u834f\\u845a\\u996a\\u8f6b\\u7a14\\u887d\",\r\n \"reng\": \"\\u6254\\u4ecd\",\r\n \"ri\": \"\\u65e5\",\r\n \"rong\": \"\\u620e\\u8338\\u84c9\\u8363\\u878d\\u7194\\u6eb6\\u5bb9\\u7ed2\\u5197\\u5d58\\u72e8\\u7f1b\\u6995\\u877e\",\r\n \"rou\": \"\\u63c9\\u67d4\\u8089\\u7cc5\\u8e42\\u97a3\",\r\n \"ru\": \"\\u8339\\u8815\\u5112\\u5b7a\\u5982\\u8fb1\\u4e73\\u6c5d\\u5165\\u8925\\u84d0\\u85b7\\u5685\\u6d33\\u6ebd\\u6fe1\\u94f7\\u8966\\u98a5\",\r\n \"ruan\": \"\\u8f6f\\u962e\\u670a\",\r\n \"rui\": \"\\u854a\\u745e\\u9510\\u82ae\\u8564\\u777f\\u868b\",\r\n \"run\": \"\\u95f0\\u6da6\",\r\n \"sa\": \"\\u6492\\u6d12\\u8428\\u5345\\u4ee8\\u6332\\u98d2\",\r\n \"sai\": \"\\u816e\\u9cc3\\u585e\\u8d5b\\u567b\",\r\n \"san\": \"\\u4e09\\u53c1\\u4f1e\\u6563\\u5f61\\u9993\\u6c35\\u6bf5\\u7cc1\\u9730\",\r\n \"sang\": \"\\u6851\\u55d3\\u4e27\\u6421\\u78c9\\u98a1\",\r\n \"sao\": \"\\u6414\\u9a9a\\u626b\\u5ac2\\u57fd\\u81ca\\u7619\\u9ccb\",\r\n \"se\": \"\\u745f\\u8272\\u6da9\\u556c\\u94e9\\u94ef\\u7a51\",\r\n \"sen\": \"\\u68ee\",\r\n \"seng\": \"\\u50e7\",\r\n \"sha\": \"\\u838e\\u7802\\u6740\\u5239\\u6c99\\u7eb1\\u50bb\\u5565\\u715e\\u810e\\u6b43\\u75e7\\u88df\\u970e\\u9ca8\",\r\n \"shai\": \"\\u7b5b\\u6652\\u917e\",\r\n \"shan\": \"\\u73ca\\u82eb\\u6749\\u5c71\\u5220\\u717d\\u886b\\u95ea\\u9655\\u64c5\\u8d61\\u81b3\\u5584\\u6c55\\u6247\\u7f2e\\u5261\\u8baa\\u912f\\u57cf\\u829f\\u6f78\\u59d7\\u9a9f\\u81bb\\u9490\\u759d\\u87ee\\u8222\\u8dda\\u9cdd\",\r\n \"shang\": \"\\u5892\\u4f24\\u5546\\u8d4f\\u664c\\u4e0a\\u5c1a\\u88f3\\u57a7\\u7ef1\\u6b87\\u71b5\\u89de\",\r\n \"shao\": \"\\u68a2\\u634e\\u7a0d\\u70e7\\u828d\\u52fa\\u97f6\\u5c11\\u54e8\\u90b5\\u7ecd\\u52ad\\u82d5\\u6f72\\u86f8\\u7b24\\u7b72\\u8244\",\r\n \"she\": \"\\u5962\\u8d4a\\u86c7\\u820c\\u820d\\u8d66\\u6444\\u5c04\\u6151\\u6d89\\u793e\\u8bbe\\u538d\\u4f58\\u731e\\u7572\\u9e9d\",\r\n \"shen\": \"\\u7837\\u7533\\u547b\\u4f38\\u8eab\\u6df1\\u5a20\\u7ec5\\u795e\\u6c88\\u5ba1\\u5a76\\u751a\\u80be\\u614e\\u6e17\\u8bdc\\u8c02\\u5432\\u54c2\\u6e16\\u6939\\u77e7\\u8703\",\r\n \"sheng\": \"\\u58f0\\u751f\\u7525\\u7272\\u5347\\u7ef3\\u7701\\u76db\\u5269\\u80dc\\u5723\\u4e1e\\u6e11\\u5ab5\\u771a\\u7b19\",\r\n \"shi\": \"\\u5e08\\u5931\\u72ee\\u65bd\\u6e7f\\u8bd7\\u5c38\\u8671\\u5341\\u77f3\\u62fe\\u65f6\\u4ec0\\u98df\\u8680\\u5b9e\\u8bc6\\u53f2\\u77e2\\u4f7f\\u5c4e\\u9a76\\u59cb\\u5f0f\\u793a\\u58eb\\u4e16\\u67ff\\u4e8b\\u62ed\\u8a93\\u901d\\u52bf\\u662f\\u55dc\\u566c\\u9002\\u4ed5\\u4f8d\\u91ca\\u9970\\u6c0f\\u5e02\\u6043\\u5ba4\\u89c6\\u8bd5\\u8c25\\u57d8\\u83b3\\u84cd\\u5f11\\u5511\\u9963\\u8f7c\\u8006\\u8d33\\u70bb\\u793b\\u94c8\\u94ca\\u87ab\\u8210\\u7b6e\\u8c55\\u9ca5\\u9cba\",\r\n \"shou\": \"\\u6536\\u624b\\u9996\\u5b88\\u5bff\\u6388\\u552e\\u53d7\\u7626\\u517d\\u624c\\u72e9\\u7ef6\\u824f\",\r\n \"shu\": \"\\u852c\\u67a2\\u68b3\\u6b8a\\u6292\\u8f93\\u53d4\\u8212\\u6dd1\\u758f\\u4e66\\u8d4e\\u5b70\\u719f\\u85af\\u6691\\u66d9\\u7f72\\u8700\\u9ecd\\u9f20\\u5c5e\\u672f\\u8ff0\\u6811\\u675f\\u620d\\u7ad6\\u5885\\u5eb6\\u6570\\u6f31\\u6055\\u500f\\u587e\\u83fd\\u5fc4\\u6cad\\u6d91\\u6f8d\\u59dd\\u7ebe\\u6bf9\\u8167\\u6bb3\\u956f\\u79eb\\u9e6c\",\r\n \"shua\": \"\\u5237\\u800d\\u5530\\u6dae\",\r\n \"shuai\": \"\\u6454\\u8870\\u7529\\u5e05\\u87c0\",\r\n \"shuan\": \"\\u6813\\u62f4\\u95e9\",\r\n \"shuang\": \"\\u971c\\u53cc\\u723d\\u5b40\",\r\n \"shui\": \"\\u8c01\\u6c34\\u7761\\u7a0e\",\r\n \"shun\": \"\\u542e\\u77ac\\u987a\\u821c\\u6042\",\r\n \"shuo\": \"\\u8bf4\\u7855\\u6714\\u70c1\\u84b4\\u6420\\u55cd\\u6fef\\u5981\\u69ca\\u94c4\",\r\n \"si\": \"\\u65af\\u6495\\u5636\\u601d\\u79c1\\u53f8\\u4e1d\\u6b7b\\u8086\\u5bfa\\u55e3\\u56db\\u4f3a\\u4f3c\\u9972\\u5df3\\u53ae\\u4fdf\\u5155\\u83e5\\u549d\\u6c5c\\u6cd7\\u6f8c\\u59d2\\u9a77\\u7f0c\\u7940\\u7960\\u9536\\u9e36\\u801c\\u86f3\\u7b25\",\r\n \"song\": \"\\u677e\\u8038\\u6002\\u9882\\u9001\\u5b8b\\u8bbc\\u8bf5\\u51c7\\u83d8\\u5d27\\u5d69\\u5fea\\u609a\\u6dde\\u7ae6\",\r\n \"sou\": \"\\u641c\\u8258\\u64de\\u55fd\\u53df\\u55d6\\u55fe\\u998a\\u6eb2\\u98d5\\u778d\\u953c\\u878b\",\r\n \"su\": \"\\u82cf\\u9165\\u4fd7\\u7d20\\u901f\\u7c9f\\u50f3\\u5851\\u6eaf\\u5bbf\\u8bc9\\u8083\\u5919\\u8c21\\u850c\\u55c9\\u612b\\u7c0c\\u89eb\\u7a23\",\r\n \"suan\": \"\\u9178\\u849c\\u7b97\",\r\n \"sui\": \"\\u867d\\u968b\\u968f\\u7ee5\\u9ad3\\u788e\\u5c81\\u7a57\\u9042\\u96a7\\u795f\\u84d1\\u51ab\\u8c07\\u6fc9\\u9083\\u71e7\\u772d\\u7762\",\r\n \"sun\": \"\\u5b59\\u635f\\u7b0b\\u836a\\u72f2\\u98e7\\u69ab\\u8de3\\u96bc\",\r\n \"suo\": \"\\u68ad\\u5506\\u7f29\\u7410\\u7d22\\u9501\\u6240\\u5522\\u55e6\\u5a11\\u686b\\u7743\\u7fa7\",\r\n \"ta\": \"\\u584c\\u4ed6\\u5b83\\u5979\\u5854\\u736d\\u631e\\u8e4b\\u8e0f\\u95fc\\u6ebb\\u9062\\u69bb\\u6c93\",\r\n \"tai\": \"\\u80ce\\u82d4\\u62ac\\u53f0\\u6cf0\\u915e\\u592a\\u6001\\u6c70\\u90b0\\u85b9\\u80bd\\u70b1\\u949b\\u8dc6\\u9c90\",\r\n \"tan\": \"\\u574d\\u644a\\u8d2a\\u762b\\u6ee9\\u575b\\u6a80\\u75f0\\u6f6d\\u8c2d\\u8c08\\u5766\\u6bef\\u8892\\u78b3\\u63a2\\u53f9\\u70ad\\u90ef\\u8548\\u6619\\u94bd\\u952c\\u8983\",\r\n \"tang\": \"\\u6c64\\u5858\\u642a\\u5802\\u68e0\\u819b\\u5510\\u7cd6\\u50a5\\u9967\\u6e8f\\u746d\\u94f4\\u9557\\u8025\\u8797\\u87b3\\u7fb0\\u91a3\",\r\n \"thang\": \"\\u5018\\u8eba\\u6dcc\",\r\n \"theng\": \"\\u8d9f\\u70eb\",\r\n \"tao\": \"\\u638f\\u6d9b\\u6ed4\\u7ee6\\u8404\\u6843\\u9003\\u6dd8\\u9676\\u8ba8\\u5957\\u6311\\u9f17\\u5555\\u97ec\\u9955\",\r\n \"te\": \"\\u7279\",\r\n \"teng\": \"\\u85e4\\u817e\\u75bc\\u8a8a\\u6ed5\",\r\n \"ti\": \"\\u68af\\u5254\\u8e22\\u9511\\u63d0\\u9898\\u8e44\\u557c\\u4f53\\u66ff\\u568f\\u60d5\\u6d95\\u5243\\u5c49\\u8351\\u608c\\u9016\\u7ee8\\u7f07\\u9e48\\u88fc\\u918d\",\r\n \"tian\": \"\\u5929\\u6dfb\\u586b\\u7530\\u751c\\u606c\\u8214\\u8146\\u63ad\\u5fdd\\u9617\\u6b84\\u754b\\u94bf\\u86ba\",\r\n \"tiao\": \"\\u6761\\u8fe2\\u773a\\u8df3\\u4f7b\\u7967\\u94eb\\u7a95\\u9f86\\u9ca6\",\r\n \"tie\": \"\\u8d34\\u94c1\\u5e16\\u841c\\u992e\",\r\n \"ting\": \"\\u5385\\u542c\\u70c3\\u6c40\\u5ef7\\u505c\\u4ead\\u5ead\\u633a\\u8247\\u839b\\u8476\\u5a77\\u6883\\u8713\\u9706\",\r\n \"tong\": \"\\u901a\\u6850\\u916e\\u77b3\\u540c\\u94dc\\u5f64\\u7ae5\\u6876\\u6345\\u7b52\\u7edf\\u75db\\u4f5f\\u50ee\\u4edd\\u833c\\u55f5\\u6078\\u6f7c\\u783c\",\r\n \"tou\": \"\\u5077\\u6295\\u5934\\u900f\\u4ea0\",\r\n \"tu\": \"\\u51f8\\u79c3\\u7a81\\u56fe\\u5f92\\u9014\\u6d82\\u5c60\\u571f\\u5410\\u5154\\u580d\\u837c\\u83df\\u948d\\u9174\",\r\n \"tuan\": \"\\u6e4d\\u56e2\\u7583\",\r\n \"tui\": \"\\u63a8\\u9893\\u817f\\u8715\\u892a\\u9000\\u5fd2\\u717a\",\r\n \"tun\": \"\\u541e\\u5c6f\\u81c0\\u9968\\u66be\\u8c5a\\u7a80\",\r\n \"tuo\": \"\\u62d6\\u6258\\u8131\\u9e35\\u9640\\u9a6e\\u9a7c\\u692d\\u59a5\\u62d3\\u553e\\u4e47\\u4f57\\u5768\\u5eb9\\u6cb1\\u67dd\\u7823\\u7ba8\\u8204\\u8dce\\u9f0d\",\r\n \"wa\": \"\\u6316\\u54c7\\u86d9\\u6d3c\\u5a03\\u74e6\\u889c\\u4f64\\u5a32\\u817d\",\r\n \"wai\": \"\\u6b6a\\u5916\",\r\n \"wan\": \"\\u8c4c\\u5f2f\\u6e7e\\u73a9\\u987d\\u4e38\\u70f7\\u5b8c\\u7897\\u633d\\u665a\\u7696\\u60cb\\u5b9b\\u5a49\\u4e07\\u8155\\u525c\\u8284\\u82cb\\u83c0\\u7ea8\\u7efe\\u742c\\u8118\\u7579\\u873f\\u7ba2\",\r\n \"wang\": \"\\u6c6a\\u738b\\u4ea1\\u6789\\u7f51\\u5f80\\u65fa\\u671b\\u5fd8\\u5984\\u7f54\\u5c22\\u60d8\\u8f8b\\u9b4d\",\r\n \"wei\": \"\\u5a01\\u5dcd\\u5fae\\u5371\\u97e6\\u8fdd\\u6845\\u56f4\\u552f\\u60df\\u4e3a\\u6f4d\\u7ef4\\u82c7\\u840e\\u59d4\\u4f1f\\u4f2a\\u5c3e\\u7eac\\u672a\\u851a\\u5473\\u754f\\u80c3\\u5582\\u9b4f\\u4f4d\\u6e2d\\u8c13\\u5c09\\u6170\\u536b\\u502d\\u504e\\u8bff\\u9688\\u8473\\u8587\\u5e0f\\u5e37\\u5d34\\u5d6c\\u7325\\u732c\\u95f1\\u6ca9\\u6d27\\u6da0\\u9036\\u5a13\\u73ae\\u97ea\\u8ece\\u709c\\u7168\\u71a8\\u75ff\\u8249\\u9c94\",\r\n \"wen\": \"\\u761f\\u6e29\\u868a\\u6587\\u95fb\\u7eb9\\u543b\\u7a33\\u7d0a\\u95ee\\u520e\\u6120\\u960c\\u6c76\\u74ba\\u97eb\\u6b81\\u96ef\",\r\n \"weng\": \"\\u55e1\\u7fc1\\u74ee\\u84ca\\u8579\",\r\n \"wo\": \"\\u631d\\u8717\\u6da1\\u7a9d\\u6211\\u65a1\\u5367\\u63e1\\u6c83\\u83b4\\u5e44\\u6e25\\u674c\\u809f\\u9f8c\",\r\n \"wu\": \"\\u5deb\\u545c\\u94a8\\u4e4c\\u6c61\\u8bec\\u5c4b\\u65e0\\u829c\\u68a7\\u543e\\u5434\\u6bcb\\u6b66\\u4e94\\u6342\\u5348\\u821e\\u4f0d\\u4fae\\u575e\\u620a\\u96fe\\u6664\\u7269\\u52ff\\u52a1\\u609f\\u8bef\\u5140\\u4ef5\\u9622\\u90ac\\u572c\\u82b4\\u5e91\\u6003\\u5fe4\\u6d6f\\u5be4\\u8fd5\\u59a9\\u9a9b\\u727e\\u7110\\u9e49\\u9e5c\\u8708\\u92c8\\u9f2f\",\r\n \"xi\": \"\\u6614\\u7199\\u6790\\u897f\\u7852\\u77fd\\u6670\\u563b\\u5438\\u9521\\u727a\\u7a00\\u606f\\u5e0c\\u6089\\u819d\\u5915\\u60dc\\u7184\\u70ef\\u6eaa\\u6c50\\u7280\\u6a84\\u88ad\\u5e2d\\u4e60\\u5ab3\\u559c\\u94e3\\u6d17\\u7cfb\\u9699\\u620f\\u7ec6\\u50d6\\u516e\\u96b0\\u90d7\\u831c\\u8478\\u84f0\\u595a\\u550f\\u5f99\\u9969\\u960b\\u6d60\\u6dc5\\u5c63\\u5b09\\u73ba\\u6a28\\u66e6\\u89cb\\u6b37\\u71b9\\u798a\\u79a7\\u94b8\\u7699\\u7a78\\u8725\\u87cb\\u823e\\u7fb2\\u7c9e\\u7fd5\\u91af\\u9f37\",\r\n \"xia\": \"\\u778e\\u867e\\u5323\\u971e\\u8f96\\u6687\\u5ce1\\u4fa0\\u72ed\\u4e0b\\u53a6\\u590f\\u5413\\u6380\\u846d\\u55c4\\u72ce\\u9050\\u7455\\u7856\\u7615\\u7f45\\u9ee0\",\r\n \"xian\": \"\\u9528\\u5148\\u4ed9\\u9c9c\\u7ea4\\u54b8\\u8d24\\u8854\\u8237\\u95f2\\u6d8e\\u5f26\\u5acc\\u663e\\u9669\\u73b0\\u732e\\u53bf\\u817a\\u9985\\u7fa1\\u5baa\\u9677\\u9650\\u7ebf\\u51bc\\u85d3\\u5c98\\u7303\\u66b9\\u5a34\\u6c19\\u7946\\u9e47\\u75eb\\u86ac\\u7b45\\u7c7c\\u9170\\u8df9\",\r\n \"xiang\": \"\\u76f8\\u53a2\\u9576\\u9999\\u7bb1\\u8944\\u6e58\\u4e61\\u7fd4\\u7965\\u8be6\\u60f3\\u54cd\\u4eab\\u9879\\u5df7\\u6a61\\u50cf\\u5411\\u8c61\\u8297\\u8459\\u9977\\u5ea0\\u9aa7\\u7f03\\u87d3\\u9c9e\\u98e8\",\r\n \"xiao\": \"\\u8427\\u785d\\u9704\\u524a\\u54ee\\u56a3\\u9500\\u6d88\\u5bb5\\u6dc6\\u6653\\u5c0f\\u5b5d\\u6821\\u8096\\u5578\\u7b11\\u6548\\u54d3\\u54bb\\u5d24\\u6f47\\u900d\\u9a81\\u7ee1\\u67ad\\u67b5\\u7b71\\u7bab\\u9b48\",\r\n \"xie\": \"\\u6954\\u4e9b\\u6b47\\u874e\\u978b\\u534f\\u631f\\u643a\\u90aa\\u659c\\u80c1\\u8c10\\u5199\\u68b0\\u5378\\u87f9\\u61c8\\u6cc4\\u6cfb\\u8c22\\u5c51\\u5055\\u4eb5\\u52f0\\u71ee\\u85a4\\u64b7\\u5ee8\\u7023\\u9082\\u7ec1\\u7f2c\\u69ad\\u698d\\u6b59\\u8e9e\",\r\n \"xin\": \"\\u85aa\\u82af\\u950c\\u6b23\\u8f9b\\u65b0\\u5ffb\\u5fc3\\u4fe1\\u8845\\u56df\\u99a8\\u8398\\u6b46\\u94fd\\u946b\",\r\n \"xing\": \"\\u661f\\u8165\\u7329\\u60fa\\u5174\\u5211\\u578b\\u5f62\\u90a2\\u884c\\u9192\\u5e78\\u674f\\u6027\\u59d3\\u9649\\u8347\\u8365\\u64e4\\u60bb\\u784e\",\r\n \"xiong\": \"\\u5144\\u51f6\\u80f8\\u5308\\u6c79\\u96c4\\u718a\\u828e\",\r\n \"xiu\": \"\\u4f11\\u4fee\\u7f9e\\u673d\\u55c5\\u9508\\u79c0\\u8896\\u7ee3\\u83a0\\u5cab\\u9990\\u5ea5\\u9e3a\\u8c85\\u9af9\",\r\n \"xu\": \"\\u589f\\u620c\\u9700\\u865a\\u5618\\u987b\\u5f90\\u8bb8\\u84c4\\u9157\\u53d9\\u65ed\\u5e8f\\u755c\\u6064\\u7d6e\\u5a7f\\u7eea\\u7eed\\u8bb4\\u8be9\\u5729\\u84ff\\u6035\\u6d2b\\u6e86\\u987c\\u6829\\u7166\\u7809\\u76f1\\u80e5\\u7cc8\\u9191\",\r\n \"xuan\": \"\\u8f69\\u55a7\\u5ba3\\u60ac\\u65cb\\u7384\\u9009\\u7663\\u7729\\u7eda\\u5107\\u8c16\\u8431\\u63ce\\u9994\\u6ceb\\u6d35\\u6e32\\u6f29\\u7487\\u6966\\u6684\\u70ab\\u714a\\u78b9\\u94c9\\u955f\\u75c3\",\r\n \"xue\": \"\\u9774\\u859b\\u5b66\\u7a74\\u96ea\\u8840\\u5671\\u6cf6\\u9cd5\",\r\n \"xun\": \"\\u52cb\\u718f\\u5faa\\u65ec\\u8be2\\u5bfb\\u9a6f\\u5de1\\u6b89\\u6c5b\\u8bad\\u8baf\\u900a\\u8fc5\\u5dfd\\u57d9\\u8340\\u85b0\\u5ccb\\u5f87\\u6d54\\u66db\\u7aa8\\u91ba\\u9c9f\",\r\n \"ya\": \"\\u538b\\u62bc\\u9e26\\u9e2d\\u5440\\u4e2b\\u82bd\\u7259\\u869c\\u5d16\\u8859\\u6daf\\u96c5\\u54d1\\u4e9a\\u8bb6\\u4f22\\u63e0\\u5416\\u5c88\\u8fd3\\u5a05\\u740a\\u6860\\u6c29\\u7811\\u775a\\u75d6\",\r\n \"yan\": \"\\u7109\\u54bd\\u9609\\u70df\\u6df9\\u76d0\\u4e25\\u7814\\u8712\\u5ca9\\u5ef6\\u8a00\\u989c\\u960e\\u708e\\u6cbf\\u5944\\u63a9\\u773c\\u884d\\u6f14\\u8273\\u5830\\u71d5\\u538c\\u781a\\u96c1\\u5501\\u5f66\\u7130\\u5bb4\\u8c1a\\u9a8c\\u53a3\\u9765\\u8d5d\\u4fe8\\u5043\\u5156\\u8ba0\\u8c33\\u90fe\\u9122\\u82ab\\u83f8\\u5d26\\u6079\\u95eb\\u960f\\u6d07\\u6e6e\\u6edf\\u598d\\u5ae3\\u7430\\u664f\\u80ed\\u814c\\u7131\\u7f68\\u7b75\\u917d\\u9b47\\u990d\\u9f39\",\r\n \"yang\": \"\\u6b83\\u592e\\u9e2f\\u79e7\\u6768\\u626c\\u4f6f\\u75a1\\u7f8a\\u6d0b\\u9633\\u6c27\\u4ef0\\u75d2\\u517b\\u6837\\u6f3e\\u5f89\\u600f\\u6cf1\\u7080\\u70ca\\u6059\\u86d8\\u9785\",\r\n \"yao\": \"\\u9080\\u8170\\u5996\\u7476\\u6447\\u5c27\\u9065\\u7a91\\u8c23\\u59da\\u54ac\\u8200\\u836f\\u8981\\u8000\\u592d\\u723b\\u5406\\u5d3e\\u5fad\\u7039\\u5e7a\\u73e7\\u6773\\u66dc\\u80b4\\u9e5e\\u7a88\\u7e47\\u9cd0\",\r\n \"ye\": \"\\u6930\\u564e\\u8036\\u7237\\u91ce\\u51b6\\u4e5f\\u9875\\u6396\\u4e1a\\u53f6\\u66f3\\u814b\\u591c\\u6db2\\u8c12\\u90ba\\u63f6\\u9980\\u6654\\u70e8\\u94d8\",\r\n \"yi\": \"\\u4e00\\u58f9\\u533b\\u63d6\\u94f1\\u4f9d\\u4f0a\\u8863\\u9890\\u5937\\u9057\\u79fb\\u4eea\\u80f0\\u7591\\u6c82\\u5b9c\\u59e8\\u5f5d\\u6905\\u8681\\u501a\\u5df2\\u4e59\\u77e3\\u4ee5\\u827a\\u6291\\u6613\\u9091\\u5c79\\u4ebf\\u5f79\\u81c6\\u9038\\u8084\\u75ab\\u4ea6\\u88d4\\u610f\\u6bc5\\u5fc6\\u4e49\\u76ca\\u6ea2\\u8be3\\u8bae\\u8c0a\\u8bd1\\u5f02\\u7ffc\\u7fcc\\u7ece\\u5208\\u5293\\u4f7e\\u8bd2\\u572a\\u572f\\u57f8\\u61ff\\u82e1\\u858f\\u5f08\\u5955\\u6339\\u5f0b\\u5453\\u54a6\\u54bf\\u566b\\u5cc4\\u5db7\\u7317\\u9974\\u603f\\u6021\\u6092\\u6f2a\\u8fe4\\u9a7f\\u7f22\\u6baa\\u8d3b\\u65d6\\u71a0\\u9487\\u9552\\u9571\\u75cd\\u7617\\u7654\\u7fca\\u8864\\u8734\\u8223\\u7fbf\\u7ff3\\u914f\\u9edf\",\r\n \"yin\": \"\\u8335\\u836b\\u56e0\\u6bb7\\u97f3\\u9634\\u59fb\\u541f\\u94f6\\u6deb\\u5bc5\\u996e\\u5c39\\u5f15\\u9690\\u5370\\u80e4\\u911e\\u5819\\u831a\\u5591\\u72fa\\u5924\\u6c24\\u94df\\u763e\\u8693\\u972a\\u9f88\",\r\n \"ying\": \"\\u82f1\\u6a31\\u5a74\\u9e70\\u5e94\\u7f28\\u83b9\\u8424\\u8425\\u8367\\u8747\\u8fce\\u8d62\\u76c8\\u5f71\\u9896\\u786c\\u6620\\u5b34\\u90e2\\u8314\\u83ba\\u8426\\u6484\\u5624\\u81ba\\u6ee2\\u6f46\\u701b\\u745b\\u748e\\u6979\\u9e66\\u763f\\u988d\\u7f42\",\r\n \"yo\": \"\\u54df\\u5537\",\r\n \"yong\": \"\\u62e5\\u4f63\\u81c3\\u75c8\\u5eb8\\u96cd\\u8e0a\\u86f9\\u548f\\u6cf3\\u6d8c\\u6c38\\u607f\\u52c7\\u7528\\u4fd1\\u58c5\\u5889\\u6175\\u9095\\u955b\\u752c\\u9cd9\\u9954\",\r\n \"you\": \"\\u5e7d\\u4f18\\u60a0\\u5fe7\\u5c24\\u7531\\u90ae\\u94c0\\u72b9\\u6cb9\\u6e38\\u9149\\u6709\\u53cb\\u53f3\\u4f51\\u91c9\\u8bf1\\u53c8\\u5e7c\\u5363\\u6538\\u4f91\\u83b8\\u5466\\u56ff\\u5ba5\\u67da\\u7337\\u7256\\u94d5\\u75a3\\u8763\\u9c7f\\u9edd\\u9f2c\",\r\n \"yu\": \"\\u8fc2\\u6de4\\u4e8e\\u76c2\\u6986\\u865e\\u611a\\u8206\\u4f59\\u4fde\\u903e\\u9c7c\\u6109\\u6e1d\\u6e14\\u9685\\u4e88\\u5a31\\u96e8\\u4e0e\\u5c7f\\u79b9\\u5b87\\u8bed\\u7fbd\\u7389\\u57df\\u828b\\u90c1\\u5401\\u9047\\u55bb\\u5cea\\u5fa1\\u6108\\u6b32\\u72f1\\u80b2\\u8a89\\u6d74\\u5bd3\\u88d5\\u9884\\u8c6b\\u9a6d\\u79ba\\u6bd3\\u4f1b\\u4fe3\\u8c00\\u8c15\\u8438\\u84e3\\u63c4\\u5581\\u5704\\u5709\\u5d5b\\u72f3\\u996b\\u5ebe\\u9608\\u59aa\\u59a4\\u7ea1\\u745c\\u6631\\u89ce\\u8174\\u6b24\\u65bc\\u715c\\u71e0\\u807f\\u94b0\\u9e46\\u7610\\u7600\\u7ab3\\u8753\\u7afd\\u8201\\u96e9\\u9f89\",\r\n \"yuan\": \"\\u9e33\\u6e0a\\u51a4\\u5143\\u57a3\\u8881\\u539f\\u63f4\\u8f95\\u56ed\\u5458\\u5706\\u733f\\u6e90\\u7f18\\u8fdc\\u82d1\\u613f\\u6028\\u9662\\u586c\\u6c85\\u5a9b\\u7457\\u6a7c\\u7230\\u7722\\u9e22\\u8788\\u9f0b\",\r\n \"yue\": \"\\u66f0\\u7ea6\\u8d8a\\u8dc3\\u94a5\\u5cb3\\u7ca4\\u6708\\u60a6\\u9605\\u9fa0\\u6a3e\\u5216\\u94ba\",\r\n \"yun\": \"\\u8018\\u4e91\\u90e7\\u5300\\u9668\\u5141\\u8fd0\\u8574\\u915d\\u6655\\u97f5\\u5b55\\u90d3\\u82b8\\u72c1\\u607d\\u7ead\\u6b92\\u6600\\u6c32\",\r\n \"za\": \"\\u531d\\u7838\\u6742\\u62f6\\u5482\",\r\n \"zai\": \"\\u683d\\u54c9\\u707e\\u5bb0\\u8f7d\\u518d\\u5728\\u54b1\\u5d3d\\u753e\",\r\n \"zan\": \"\\u6512\\u6682\\u8d5e\\u74d2\\u661d\\u7c2a\\u7ccc\\u8db1\\u933e\",\r\n \"zang\": \"\\u8d43\\u810f\\u846c\\u5958\\u6215\\u81e7\",\r\n \"zao\": \"\\u906d\\u7cdf\\u51ff\\u85fb\\u67a3\\u65e9\\u6fa1\\u86a4\\u8e81\\u566a\\u9020\\u7682\\u7076\\u71e5\\u5523\\u7f2b\",\r\n \"ze\": \"\\u8d23\\u62e9\\u5219\\u6cfd\\u4ec4\\u8d5c\\u5567\\u8fee\\u6603\\u7b2e\\u7ba6\\u8234\",\r\n \"zei\": \"\\u8d3c\",\r\n \"zen\": \"\\u600e\\u8c2e\",\r\n \"zeng\": \"\\u589e\\u618e\\u66fe\\u8d60\\u7f2f\\u7511\\u7f7e\\u9503\",\r\n \"zha\": \"\\u624e\\u55b3\\u6e23\\u672d\\u8f67\\u94e1\\u95f8\\u7728\\u6805\\u69a8\\u548b\\u4e4d\\u70b8\\u8bc8\\u63f8\\u5412\\u54a4\\u54f3\\u600d\\u781f\\u75c4\\u86b1\\u9f44\",\r\n \"zhai\": \"\\u6458\\u658b\\u5b85\\u7a84\\u503a\\u5be8\\u7826\",\r\n \"zhan\": \"\\u77bb\\u6be1\\u8a79\\u7c98\\u6cbe\\u76cf\\u65a9\\u8f97\\u5d2d\\u5c55\\u8638\\u6808\\u5360\\u6218\\u7ad9\\u6e5b\\u7efd\\u8c35\\u640c\\u65c3\",\r\n \"zhang\": \"\\u6a1f\\u7ae0\\u5f70\\u6f33\\u5f20\\u638c\\u6da8\\u6756\\u4e08\\u5e10\\u8d26\\u4ed7\\u80c0\\u7634\\u969c\\u4ec9\\u9123\\u5e5b\\u5d82\\u7350\\u5adc\\u748b\\u87d1\",\r\n \"zhao\": \"\\u62db\\u662d\\u627e\\u6cbc\\u8d75\\u7167\\u7f69\\u5146\\u8087\\u53ec\\u722a\\u8bcf\\u68f9\\u948a\\u7b0a\",\r\n \"zhe\": \"\\u906e\\u6298\\u54f2\\u86f0\\u8f99\\u8005\\u9517\\u8517\\u8fd9\\u6d59\\u8c2a\\u966c\\u67d8\\u8f84\\u78d4\\u9e67\\u891a\\u8707\\u8d6d\",\r\n \"zhen\": \"\\u73cd\\u659f\\u771f\\u7504\\u7827\\u81fb\\u8d1e\\u9488\\u4fa6\\u6795\\u75b9\\u8bca\\u9707\\u632f\\u9547\\u9635\\u7f1c\\u6862\\u699b\\u8f78\\u8d48\\u80d7\\u6715\\u796f\\u755b\\u9e29\",\r\n \"zheng\": \"\\u84b8\\u6323\\u7741\\u5f81\\u72f0\\u4e89\\u6014\\u6574\\u62ef\\u6b63\\u653f\\u5e27\\u75c7\\u90d1\\u8bc1\\u8be4\\u5ce5\\u94b2\\u94ee\\u7b5d\",\r\n \"zhi\": \"\\u829d\\u679d\\u652f\\u5431\\u8718\\u77e5\\u80a2\\u8102\\u6c41\\u4e4b\\u7ec7\\u804c\\u76f4\\u690d\\u6b96\\u6267\\u503c\\u4f84\\u5740\\u6307\\u6b62\\u8dbe\\u53ea\\u65e8\\u7eb8\\u5fd7\\u631a\\u63b7\\u81f3\\u81f4\\u7f6e\\u5e1c\\u5cd9\\u5236\\u667a\\u79e9\\u7a1a\\u8d28\\u7099\\u75d4\\u6ede\\u6cbb\\u7a92\\u536e\\u965f\\u90c5\\u57f4\\u82b7\\u646d\\u5e19\\u5fee\\u5f58\\u54ab\\u9a98\\u6809\\u67b3\\u6800\\u684e\\u8f75\\u8f7e\\u6534\\u8d3d\\u81a3\\u7949\\u7957\\u9ef9\\u96c9\\u9e37\\u75e3\\u86ed\\u7d77\\u916f\\u8dd6\\u8e2c\\u8e2f\\u8c78\\u89ef\",\r\n \"zhong\": \"\\u4e2d\\u76c5\\u5fe0\\u949f\\u8877\\u7ec8\\u79cd\\u80bf\\u91cd\\u4ef2\\u4f17\\u51a2\\u953a\\u87bd\\u8202\\u822f\\u8e35\",\r\n \"zhou\": \"\\u821f\\u5468\\u5dde\\u6d32\\u8bcc\\u7ca5\\u8f74\\u8098\\u5e1a\\u5492\\u76b1\\u5b99\\u663c\\u9aa4\\u5544\\u7740\\u501c\\u8bf9\\u836e\\u9b3b\\u7ea3\\u80c4\\u78a1\\u7c40\\u8233\\u914e\\u9cb7\",\r\n \"zhu\": \"\\u73e0\\u682a\\u86db\\u6731\\u732a\\u8bf8\\u8bdb\\u9010\\u7af9\\u70db\\u716e\\u62c4\\u77a9\\u5631\\u4e3b\\u8457\\u67f1\\u52a9\\u86c0\\u8d2e\\u94f8\\u7b51\\u4f4f\\u6ce8\\u795d\\u9a7b\\u4f2b\\u4f8f\\u90be\\u82ce\\u8331\\u6d19\\u6e1a\\u6f74\\u9a7a\\u677c\\u69e0\\u6a65\\u70b7\\u94e2\\u75b0\\u7603\\u86b0\\u7afa\\u7bb8\\u7fe5\\u8e85\\u9e88\",\r\n \"zhua\": \"\\u6293\",\r\n \"zhuai\": \"\\u62fd\",\r\n \"zhuan\": \"\\u4e13\\u7816\\u8f6c\\u64b0\\u8d5a\\u7bc6\\u629f\\u556d\\u989b\",\r\n \"zhuang\": \"\\u6869\\u5e84\\u88c5\\u5986\\u649e\\u58ee\\u72b6\\u4e2c\",\r\n \"zhui\": \"\\u690e\\u9525\\u8ffd\\u8d58\\u5760\\u7f00\\u8411\\u9a93\\u7f12\",\r\n \"zhun\": \"\\u8c06\\u51c6\",\r\n \"zhuo\": \"\\u6349\\u62d9\\u5353\\u684c\\u7422\\u8301\\u914c\\u707c\\u6d4a\\u502c\\u8bfc\\u5ef4\\u855e\\u64e2\\u555c\\u6d5e\\u6dbf\\u6753\\u712f\\u799a\\u65ab\",\r\n \"zi\": \"\\u5179\\u54a8\\u8d44\\u59ff\\u6ecb\\u6dc4\\u5b5c\\u7d2b\\u4ed4\\u7c7d\\u6ed3\\u5b50\\u81ea\\u6e0d\\u5b57\\u8c18\\u5d6b\\u59ca\\u5b73\\u7f01\\u6893\\u8f8e\\u8d40\\u6063\\u7726\\u9531\\u79ed\\u8014\\u7b2b\\u7ca2\\u89dc\\u8a3e\\u9cbb\\u9aed\",\r\n \"zong\": \"\\u9b03\\u68d5\\u8e2a\\u5b97\\u7efc\\u603b\\u7eb5\\u8159\\u7cbd\",\r\n \"zou\": \"\\u90b9\\u8d70\\u594f\\u63cd\\u9139\\u9cb0\",\r\n \"zu\": \"\\u79df\\u8db3\\u5352\\u65cf\\u7956\\u8bc5\\u963b\\u7ec4\\u4fce\\u83f9\\u5550\\u5f82\\u9a75\\u8e74\",\r\n \"zuan\": \"\\u94bb\\u7e82\\u6525\\u7f35\",\r\n \"zui\": \"\\u5634\\u9189\\u6700\\u7f6a\",\r\n \"zun\": \"\\u5c0a\\u9075\\u6499\\u6a3d\\u9cdf\",\r\n \"zuo\": \"\\u6628\\u5de6\\u4f50\\u67de\\u505a\\u4f5c\\u5750\\u5ea7\\u961d\\u963c\\u80d9\\u795a\\u9162\",\r\n \"cou\": \"\\u85ae\\u6971\\u8f8f\\u8160\",\r\n \"nang\": \"\\u652e\\u54dd\\u56d4\\u9995\\u66e9\",\r\n \"o\": \"\\u5594\",\r\n \"dia\": \"\\u55f2\",\r\n \"chuai\": \"\\u562c\\u81aa\\u8e39\",\r\n \"cen\": \"\\u5c91\\u6d94\",\r\n \"diu\": \"\\u94e5\",\r\n \"nou\": \"\\u8028\",\r\n \"fou\": \"\\u7f36\",\r\n \"bia\": \"\\u9adf\"\r\n };\r\n this.polyphone = {\r\n \"19969\": \"DZ\",\r\n \"19975\": \"WM\",\r\n \"19988\": \"QJ\",\r\n \"20048\": \"YL\",\r\n \"20056\": \"SC\",\r\n \"20060\": \"NM\",\r\n \"20094\": \"QG\",\r\n \"20127\": \"QJ\",\r\n \"20167\": \"QC\",\r\n \"20193\": \"YG\",\r\n \"20250\": \"KH\",\r\n \"20256\": \"ZC\",\r\n \"20282\": \"SC\",\r\n \"20285\": \"QJG\",\r\n \"20291\": \"TD\",\r\n \"20314\": \"YD\",\r\n \"20340\": \"NE\",\r\n \"20375\": \"TD\",\r\n \"20389\": \"YJ\",\r\n \"20391\": \"CZ\",\r\n \"20415\": \"PB\",\r\n \"20446\": \"YS\",\r\n \"20447\": \"SQ\",\r\n \"20504\": \"TC\",\r\n \"20608\": \"KG\",\r\n \"20854\": \"QJ\",\r\n \"20857\": \"ZC\",\r\n \"20911\": \"PF\",\r\n \"20985\": \"AW\",\r\n \"21032\": \"PB\",\r\n \"21048\": \"XQ\",\r\n \"21049\": \"SC\",\r\n \"21089\": \"YS\",\r\n \"21119\": \"JC\",\r\n \"21242\": \"SB\",\r\n \"21273\": \"SC\",\r\n \"21305\": \"YP\",\r\n \"21306\": \"QO\",\r\n \"21330\": \"ZC\",\r\n \"21333\": \"SDC\",\r\n \"21345\": \"QK\",\r\n \"21378\": \"CA\",\r\n \"21397\": \"SC\",\r\n \"21414\": \"XS\",\r\n \"21442\": \"SC\",\r\n \"21477\": \"JG\",\r\n \"21480\": \"TD\",\r\n \"21484\": \"ZS\",\r\n \"21494\": \"YX\",\r\n \"21505\": \"YX\",\r\n \"21512\": \"HG\",\r\n \"21523\": \"XH\",\r\n \"21537\": \"PB\",\r\n \"21542\": \"PF\",\r\n \"21549\": \"KH\",\r\n \"21571\": \"E\",\r\n \"21574\": \"DA\",\r\n \"21588\": \"TD\",\r\n \"21589\": \"O\",\r\n \"21618\": \"ZC\",\r\n \"21621\": \"KHA\",\r\n \"21632\": \"ZJ\",\r\n \"21654\": \"KG\",\r\n \"21679\": \"LKG\",\r\n \"21683\": \"KH\",\r\n \"21710\": \"A\",\r\n \"21719\": \"YH\",\r\n \"21734\": \"WOE\",\r\n \"21769\": \"A\",\r\n \"21780\": \"WN\",\r\n \"21804\": \"XH\",\r\n \"21834\": \"A\",\r\n \"21899\": \"ZD\",\r\n \"21903\": \"RN\",\r\n \"21908\": \"WO\",\r\n \"21939\": \"ZC\",\r\n \"21956\": \"SA\",\r\n \"21964\": \"YA\",\r\n \"21970\": \"TD\",\r\n \"22003\": \"A\",\r\n \"22031\": \"JG\",\r\n \"22040\": \"XS\",\r\n \"22060\": \"ZC\",\r\n \"22066\": \"ZC\",\r\n \"22079\": \"MH\",\r\n \"22129\": \"XJ\",\r\n \"22179\": \"XA\",\r\n \"22237\": \"NJ\",\r\n \"22244\": \"TD\",\r\n \"22280\": \"JQ\",\r\n \"22300\": \"YH\",\r\n \"22313\": \"XW\",\r\n \"22331\": \"YQ\",\r\n \"22343\": \"YJ\",\r\n \"22351\": \"PH\",\r\n \"22395\": \"DC\",\r\n \"22412\": \"TD\",\r\n \"22484\": \"PB\",\r\n \"22500\": \"PB\",\r\n \"22534\": \"ZD\",\r\n \"22549\": \"DH\",\r\n \"22561\": \"PB\",\r\n \"22612\": \"TD\",\r\n \"22771\": \"KQ\",\r\n \"22831\": \"HB\",\r\n \"22841\": \"JG\",\r\n \"22855\": \"QJ\",\r\n \"22865\": \"XQ\",\r\n \"23013\": \"ML\",\r\n \"23081\": \"WM\",\r\n \"23487\": \"SX\",\r\n \"23558\": \"QJ\",\r\n \"23561\": \"YW\",\r\n \"23586\": \"YW\",\r\n \"23614\": \"YW\",\r\n \"23615\": \"SN\",\r\n \"23631\": \"PB\",\r\n \"23646\": \"ZS\",\r\n \"23663\": \"ZT\",\r\n \"23673\": \"YG\",\r\n \"23762\": \"TD\",\r\n \"23769\": \"ZS\",\r\n \"23780\": \"QJ\",\r\n \"23884\": \"QK\",\r\n \"24055\": \"XH\",\r\n \"24113\": \"DC\",\r\n \"24162\": \"ZC\",\r\n \"24191\": \"GA\",\r\n \"24273\": \"QJ\",\r\n \"24324\": \"NL\",\r\n \"24377\": \"TD\",\r\n \"24378\": \"QJ\",\r\n \"24439\": \"PF\",\r\n \"24554\": \"ZS\",\r\n \"24683\": \"TD\",\r\n \"24694\": \"WE\",\r\n \"24733\": \"LK\",\r\n \"24925\": \"TN\",\r\n \"25094\": \"ZG\",\r\n \"25100\": \"XQ\",\r\n \"25103\": \"XH\",\r\n \"25153\": \"PB\",\r\n \"25170\": \"PB\",\r\n \"25179\": \"KG\",\r\n \"25203\": \"PB\",\r\n \"25240\": \"ZS\",\r\n \"25282\": \"FB\",\r\n \"25303\": \"NA\",\r\n \"25324\": \"KG\",\r\n \"25341\": \"ZY\",\r\n \"25373\": \"WZ\",\r\n \"25375\": \"XJ\",\r\n \"25384\": \"A\",\r\n \"25457\": \"A\",\r\n \"25528\": \"SD\",\r\n \"25530\": \"SC\",\r\n \"25552\": \"TD\",\r\n \"25774\": \"ZC\",\r\n \"25874\": \"ZC\",\r\n \"26044\": \"YW\",\r\n \"26080\": \"WM\",\r\n \"26292\": \"PB\",\r\n \"26333\": \"PB\",\r\n \"26355\": \"ZY\",\r\n \"26366\": \"CZ\",\r\n \"26397\": \"ZC\",\r\n \"26399\": \"QJ\",\r\n \"26415\": \"ZS\",\r\n \"26451\": \"SB\",\r\n \"26526\": \"ZC\",\r\n \"26552\": \"JG\",\r\n \"26561\": \"TD\",\r\n \"26588\": \"JG\",\r\n \"26597\": \"CZ\",\r\n \"26629\": \"ZS\",\r\n \"26638\": \"YL\",\r\n \"26646\": \"XQ\",\r\n \"26653\": \"KG\",\r\n \"26657\": \"XJ\",\r\n \"26727\": \"HG\",\r\n \"26894\": \"ZC\",\r\n \"26937\": \"ZS\",\r\n \"26946\": \"ZC\",\r\n \"26999\": \"KJ\",\r\n \"27099\": \"KJ\",\r\n \"27449\": \"YQ\",\r\n \"27481\": \"XS\",\r\n \"27542\": \"ZS\",\r\n \"27663\": \"ZS\",\r\n \"27748\": \"TS\",\r\n \"27784\": \"SC\",\r\n \"27788\": \"ZD\",\r\n \"27795\": \"TD\",\r\n \"27812\": \"O\",\r\n \"27850\": \"PB\",\r\n \"27852\": \"MB\",\r\n \"27895\": \"SL\",\r\n \"27898\": \"PL\",\r\n \"27973\": \"QJ\",\r\n \"27981\": \"KH\",\r\n \"27986\": \"HX\",\r\n \"27994\": \"XJ\",\r\n \"28044\": \"YC\",\r\n \"28065\": \"WG\",\r\n \"28177\": \"SM\",\r\n \"28267\": \"QJ\",\r\n \"28291\": \"KH\",\r\n \"28337\": \"ZQ\",\r\n \"28463\": \"TL\",\r\n \"28548\": \"DC\",\r\n \"28601\": \"TD\",\r\n \"28689\": \"PB\",\r\n \"28805\": \"JG\",\r\n \"28820\": \"QG\",\r\n \"28846\": \"PB\",\r\n \"28952\": \"TD\",\r\n \"28975\": \"ZC\",\r\n \"29100\": \"A\",\r\n \"29325\": \"QJ\",\r\n \"29575\": \"SL\",\r\n \"29602\": \"FB\",\r\n \"30010\": \"TD\",\r\n \"30044\": \"CX\",\r\n \"30058\": \"PF\",\r\n \"30091\": \"YSP\",\r\n \"30111\": \"YN\",\r\n \"30229\": \"XJ\",\r\n \"30427\": \"SC\",\r\n \"30465\": \"SX\",\r\n \"30631\": \"YQ\",\r\n \"30655\": \"QJ\",\r\n \"30684\": \"QJG\",\r\n \"30707\": \"SD\",\r\n \"30729\": \"XH\",\r\n \"30796\": \"LG\",\r\n \"30917\": \"PB\",\r\n \"31074\": \"NM\",\r\n \"31085\": \"JZ\",\r\n \"31109\": \"SC\",\r\n \"31181\": \"ZC\",\r\n \"31192\": \"MLB\",\r\n \"31293\": \"JQ\",\r\n \"31400\": \"YX\",\r\n \"31584\": \"YJ\",\r\n \"31896\": \"ZN\",\r\n \"31909\": \"ZY\",\r\n \"31995\": \"XJ\",\r\n \"32321\": \"PF\",\r\n \"32327\": \"ZY\",\r\n \"32418\": \"HG\",\r\n \"32420\": \"XQ\",\r\n \"32421\": \"HG\",\r\n \"32438\": \"LG\",\r\n \"32473\": \"GJ\",\r\n \"32488\": \"TD\",\r\n \"32521\": \"QJ\",\r\n \"32527\": \"PB\",\r\n \"32562\": \"ZSQ\",\r\n \"32564\": \"JZ\",\r\n \"32735\": \"ZD\",\r\n \"32793\": \"PB\",\r\n \"33071\": \"PF\",\r\n \"33098\": \"XL\",\r\n \"33100\": \"YA\",\r\n \"33152\": \"PB\",\r\n \"33261\": \"CX\",\r\n \"33324\": \"BP\",\r\n \"33333\": \"TD\",\r\n \"33406\": \"YA\",\r\n \"33426\": \"WM\",\r\n \"33432\": \"PB\",\r\n \"33445\": \"JG\",\r\n \"33486\": \"ZN\",\r\n \"33493\": \"TS\",\r\n \"33507\": \"QJ\",\r\n \"33540\": \"QJ\",\r\n \"33544\": \"ZC\",\r\n \"33564\": \"XQ\",\r\n \"33617\": \"YT\",\r\n \"33632\": \"QJ\",\r\n \"33636\": \"XH\",\r\n \"33637\": \"YX\",\r\n \"33694\": \"WG\",\r\n \"33705\": \"PF\",\r\n \"33728\": \"YW\",\r\n \"33882\": \"SR\",\r\n \"34067\": \"WM\",\r\n \"34074\": \"YW\",\r\n \"34121\": \"QJ\",\r\n \"34255\": \"ZC\",\r\n \"34259\": \"XL\",\r\n \"34425\": \"JH\",\r\n \"34430\": \"XH\",\r\n \"34485\": \"KH\",\r\n \"34503\": \"YS\",\r\n \"34532\": \"HG\",\r\n \"34552\": \"XS\",\r\n \"34558\": \"YE\",\r\n \"34593\": \"ZL\",\r\n \"34660\": \"YQ\",\r\n \"34892\": \"XH\",\r\n \"34928\": \"SC\",\r\n \"34999\": \"QJ\",\r\n \"35048\": \"PB\",\r\n \"35059\": \"SC\",\r\n \"35098\": \"ZC\",\r\n \"35203\": \"TQ\",\r\n \"35265\": \"JX\",\r\n \"35299\": \"JX\",\r\n \"35782\": \"SZ\",\r\n \"35828\": \"YS\",\r\n \"35830\": \"E\",\r\n \"35843\": \"TD\",\r\n \"35895\": \"YG\",\r\n \"35977\": \"MH\",\r\n \"36158\": \"JG\",\r\n \"36228\": \"QJ\",\r\n \"36426\": \"XQ\",\r\n \"36466\": \"DC\",\r\n \"36710\": \"JC\",\r\n \"36711\": \"ZYG\",\r\n \"36767\": \"PB\",\r\n \"36866\": \"SK\",\r\n \"36951\": \"YW\",\r\n \"37034\": \"YX\",\r\n \"37063\": \"XH\",\r\n \"37218\": \"ZC\",\r\n \"37325\": \"ZC\",\r\n \"38063\": \"PB\",\r\n \"38079\": \"TD\",\r\n \"38085\": \"QY\",\r\n \"38107\": \"DC\",\r\n \"38116\": \"TD\",\r\n \"38123\": \"YD\",\r\n \"38224\": \"HG\",\r\n \"38241\": \"XTC\",\r\n \"38271\": \"ZC\",\r\n \"38415\": \"YE\",\r\n \"38426\": \"KH\",\r\n \"38461\": \"YD\",\r\n \"38463\": \"AE\",\r\n \"38466\": \"PB\",\r\n \"38477\": \"XJ\",\r\n \"38518\": \"YT\",\r\n \"38551\": \"WK\",\r\n \"38585\": \"ZC\",\r\n \"38704\": \"XS\",\r\n \"38739\": \"LJ\",\r\n \"38761\": \"GJ\",\r\n \"38808\": \"SQ\",\r\n \"39048\": \"JG\",\r\n \"39049\": \"XJ\",\r\n \"39052\": \"HG\",\r\n \"39076\": \"CZ\",\r\n \"39271\": \"XT\",\r\n \"39534\": \"TD\",\r\n \"39552\": \"TD\",\r\n \"39584\": \"PB\",\r\n \"39647\": \"SB\",\r\n \"39730\": \"LG\",\r\n \"39748\": \"TPB\",\r\n \"40109\": \"ZQ\",\r\n \"40479\": \"ND\",\r\n \"40516\": \"HG\",\r\n \"40536\": \"HG\",\r\n \"40583\": \"QJ\",\r\n \"40765\": \"YQ\",\r\n \"40784\": \"QJ\",\r\n \"40840\": \"YK\",\r\n \"40863\": \"QJG\"\r\n };\r\n }\r\n\r\n /**\r\n * 获取拼音首字母\r\n * @param {String} str 输入的中文字符串\r\n */\r\n getCamelChars(str) {\r\n if (typeof(str) != \"string\")\r\n throw new Error(-1, \"函数getCamelChars需要字符串类型参数!\");\r\n let chars = new Array(); //保存中间结果的数组\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n //获得unicode码\r\n let ch = str.charAt(i);\r\n //检查该unicode码是否在处理范围之内,在则返回该码对映汉字的拼音首字母,不在则调用其它函数处理\r\n chars.push(this._getChar(ch));\r\n }\r\n //处理arrResult,返回所有可能的拼音首字母串数组\r\n let result = this._getResult(chars);\r\n\r\n this.options.charCase === 1 ?\r\n result = result.toLowerCase() :\r\n this.options.charCase === 2 ?\r\n result = result.toUpperCase() :\r\n {};\r\n return result;\r\n }\r\n\r\n /**\r\n * 获取拼音\r\n * @param {String} str 输入的中文字符串\r\n */\r\n getFullChars(str) {\r\n let len = str.length;\r\n let result = \"\";\r\n let reg = new RegExp('[a-zA-Z0-9\\- ]');\r\n for (let i = 0; i < len; i++) {\r\n let ch = str.substr(i, 1);\r\n let unicode = ch.charCodeAt(0);\r\n //如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数\r\n if (unicode > 40869 || unicode < 19968) {\r\n result += ch;\r\n } else {\r\n let name = this._getFullChar(ch);\r\n if (name !== false) {\r\n result += name;\r\n }\r\n }\r\n }\r\n\r\n this.options.charCase === 1 ?\r\n result = result.toLowerCase() :\r\n this.options.charCase === 2 ?\r\n result = result.toUpperCase() :\r\n {};\r\n return result;\r\n }\r\n\r\n _getFullChar(ch) {\r\n for (let key in this.full_dict) {\r\n if (this.full_dict[key].indexOf(ch) != -1) {\r\n return this._capitalize(key);\r\n break;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * 首字母大写\r\n */\r\n _capitalize(str) {\r\n if (str.length > 0) {\r\n let first = str.substr(0, 1).toUpperCase();\r\n let spare = str.substr(1, str.length);\r\n return first + spare;\r\n }\r\n }\r\n\r\n _getChar(ch) {\r\n let unicode = ch.charCodeAt(0);\r\n //如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数\r\n if (unicode > 40869 || unicode < 19968)\r\n return ch; //dealWithOthers(ch);\r\n //检查是否是多音字,是按多音字处理,不是就直接在strChineseFirstPY字符串中找对应的首字母\r\n if (!this.options.checkPolyphone)\r\n return this.char_dict.charAt(unicode - 19968);\r\n return this.polyphone[unicode] ? this.polyphone[unicode] : this.char_dict.charAt(unicode - 19968);\r\n }\r\n\r\n _getResult(chars) {\r\n if (!this.options.checkPolyphone)\r\n return chars.join('');\r\n let result = [''];\r\n for (let i = 0, len = chars.length; i < len; i++) {\r\n let str = chars[i];\r\n let strlen = str.length;\r\n if (strlen == 1) {\r\n for (let j = 0; j < result.length; j++) {\r\n result[k] += str;\r\n }\r\n } else {\r\n let swap1 = result.slice(0);\r\n result = [];\r\n for (let j = 0; j < strlen; j++) {\r\n //复制一个相同的arrRslt\r\n let swap2 = swap1.slice(0);\r\n //把当前字符str[k]添加到每个元素末尾\r\n for (let k = 0; k < swap2.length; k++) {\r\n swap2[k] += str.charAt(j);\r\n }\r\n //把复制并修改后的数组连接到arrRslt上\r\n result = result.concat(swap2);\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\n\r\nmodule.exports = Pinyin;","/**\r\n * @fileOverview 导出默认的实例\r\n * @author waterchestnut 2017/3/13\r\n * @module\r\n */\r\n'use strict';\r\n\r\nlet pinyin = new (require('./pinyin'))({charCase:0});\r\n/*console.log(pinyin.getFullChars('管理员'))\r\nconsole.log(pinyin.getCamelChars('管理员'))\r\nconsole.log(pinyin.getCamelChars('1234'))\r\nconsole.log(pinyin.getCamelChars('english'))*/\r\nmodule.exports = pinyin;","/*!\n * Vue-Lazyload.js v1.3.3\n * (c) 2019 Awe \n * Released under the MIT License.\n */\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n/*!\n * is-primitive \n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n// see http://jsperf.com/testing-value-is-primitive/7\n\nvar isPrimitive = function isPrimitive(value) {\n return value == null || typeof value !== 'function' && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== 'object';\n};\n\n/*!\n * assign-symbols \n *\n * Copyright (c) 2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nvar assignSymbols = function assignSymbols(receiver, objects) {\n if (receiver === null || typeof receiver === 'undefined') {\n throw new TypeError('expected first argument to be an object.');\n }\n\n if (typeof objects === 'undefined' || typeof Symbol === 'undefined') {\n return receiver;\n }\n\n if (typeof Object.getOwnPropertySymbols !== 'function') {\n return receiver;\n }\n\n var isEnumerable = Object.prototype.propertyIsEnumerable;\n var target = Object(receiver);\n var len = arguments.length,\n i = 0;\n\n while (++i < len) {\n var provider = Object(arguments[i]);\n var names = Object.getOwnPropertySymbols(provider);\n\n for (var j = 0; j < names.length; j++) {\n var key = names[j];\n\n if (isEnumerable.call(provider, key)) {\n target[key] = provider[key];\n }\n }\n }\n return target;\n};\n\nvar toString = Object.prototype.toString;\n\n/**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\nvar kindOf = function kindOf(val) {\n var type = typeof val === 'undefined' ? 'undefined' : _typeof(val);\n\n // primitivies\n if (type === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (type === 'string' || val instanceof String) {\n return 'string';\n }\n if (type === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (type === 'function' || val instanceof Function) {\n if (typeof val.constructor.name !== 'undefined' && val.constructor.name.slice(0, 9) === 'Generator') {\n return 'generatorfunction';\n }\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n type = toString.call(val);\n\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n if (type === '[object Promise]') {\n return 'promise';\n }\n\n // buffer\n if (isBuffer(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n\n if (type === '[object Map Iterator]') {\n return 'mapiterator';\n }\n if (type === '[object Set Iterator]') {\n return 'setiterator';\n }\n if (type === '[object String Iterator]') {\n return 'stringiterator';\n }\n if (type === '[object Array Iterator]') {\n return 'arrayiterator';\n }\n\n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n};\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n return val.constructor && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\nfunction assign(target /*, objects*/) {\n target = target || {};\n var len = arguments.length,\n i = 0;\n if (len === 1) {\n return target;\n }\n while (++i < len) {\n var val = arguments[i];\n if (isPrimitive(target)) {\n target = val;\n }\n if (isObject$1(val)) {\n extend(target, val);\n }\n }\n return target;\n}\n\n/**\n * Shallow extend\n */\n\nfunction extend(target, obj) {\n assignSymbols(target, obj);\n\n for (var key in obj) {\n if (key !== '__proto__' && hasOwn(obj, key)) {\n var val = obj[key];\n if (isObject$1(val)) {\n if (kindOf(target[key]) === 'undefined' && kindOf(val) === 'function') {\n target[key] = val;\n }\n target[key] = assign(target[key] || {}, val);\n } else {\n target[key] = val;\n }\n }\n }\n return target;\n}\n\n/**\n * Returns true if the object is a plain object or a function.\n */\n\nfunction isObject$1(obj) {\n return kindOf(obj) === 'object' || kindOf(obj) === 'function';\n}\n\n/**\n * Returns true if the given `key` is an own property of `obj`.\n */\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\n/**\n * Expose `assign`\n */\n\nvar assignDeep = assign;\n\nvar inBrowser = typeof window !== 'undefined';\nvar hasIntersectionObserver = checkIntersectionObserver();\n\nfunction checkIntersectionObserver() {\n if (inBrowser && 'IntersectionObserver' in window && 'IntersectionObserverEntry' in window && 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype, 'isIntersecting', {\n get: function get$$1() {\n return this.intersectionRatio > 0;\n }\n });\n }\n return true;\n }\n return false;\n}\n\nvar modeType = {\n event: 'event',\n observer: 'observer'\n\n // CustomEvent polyfill\n};var CustomEvent = function () {\n if (!inBrowser) return;\n if (typeof window.CustomEvent === 'function') return window.CustomEvent;\n function CustomEvent(event, params) {\n params = params || { bubbles: false, cancelable: false, detail: undefined };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n CustomEvent.prototype = window.Event.prototype;\n return CustomEvent;\n}();\n\nfunction remove(arr, item) {\n if (!arr.length) return;\n var index = arr.indexOf(item);\n if (index > -1) return arr.splice(index, 1);\n}\n\nfunction some(arr, fn) {\n var has = false;\n for (var i = 0, len = arr.length; i < len; i++) {\n if (fn(arr[i])) {\n has = true;\n break;\n }\n }\n return has;\n}\n\nfunction getBestSelectionFromSrcset(el, scale) {\n if (el.tagName !== 'IMG' || !el.getAttribute('data-srcset')) return;\n\n var options = el.getAttribute('data-srcset');\n var result = [];\n var container = el.parentNode;\n var containerWidth = container.offsetWidth * scale;\n\n var spaceIndex = void 0;\n var tmpSrc = void 0;\n var tmpWidth = void 0;\n\n options = options.trim().split(',');\n\n options.map(function (item) {\n item = item.trim();\n spaceIndex = item.lastIndexOf(' ');\n if (spaceIndex === -1) {\n tmpSrc = item;\n tmpWidth = 999998;\n } else {\n tmpSrc = item.substr(0, spaceIndex);\n tmpWidth = parseInt(item.substr(spaceIndex + 1, item.length - spaceIndex - 2), 10);\n }\n result.push([tmpWidth, tmpSrc]);\n });\n\n result.sort(function (a, b) {\n if (a[0] < b[0]) {\n return 1;\n }\n if (a[0] > b[0]) {\n return -1;\n }\n if (a[0] === b[0]) {\n if (b[1].indexOf('.webp', b[1].length - 5) !== -1) {\n return 1;\n }\n if (a[1].indexOf('.webp', a[1].length - 5) !== -1) {\n return -1;\n }\n }\n return 0;\n });\n var bestSelectedSrc = '';\n var tmpOption = void 0;\n\n for (var i = 0; i < result.length; i++) {\n tmpOption = result[i];\n bestSelectedSrc = tmpOption[1];\n var next = result[i + 1];\n if (next && next[0] < containerWidth) {\n bestSelectedSrc = tmpOption[1];\n break;\n } else if (!next) {\n bestSelectedSrc = tmpOption[1];\n break;\n }\n }\n\n return bestSelectedSrc;\n}\n\nfunction find(arr, fn) {\n var item = void 0;\n for (var i = 0, len = arr.length; i < len; i++) {\n if (fn(arr[i])) {\n item = arr[i];\n break;\n }\n }\n return item;\n}\n\nvar getDPR = function getDPR() {\n var scale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n return inBrowser ? window.devicePixelRatio || scale : scale;\n};\n\nfunction supportWebp() {\n if (!inBrowser) return false;\n\n var support = true;\n var d = document;\n\n try {\n var el = d.createElement('object');\n el.type = 'image/webp';\n el.style.visibility = 'hidden';\n el.innerHTML = '!';\n d.body.appendChild(el);\n support = !el.offsetWidth;\n d.body.removeChild(el);\n } catch (err) {\n support = false;\n }\n\n return support;\n}\n\nfunction throttle(action, delay) {\n var timeout = null;\n var lastRun = 0;\n return function () {\n if (timeout) {\n return;\n }\n var elapsed = Date.now() - lastRun;\n var context = this;\n var args = arguments;\n var runCallback = function runCallback() {\n lastRun = Date.now();\n timeout = false;\n action.apply(context, args);\n };\n if (elapsed >= delay) {\n runCallback();\n } else {\n timeout = setTimeout(runCallback, delay);\n }\n };\n}\n\nfunction testSupportsPassive() {\n if (!inBrowser) return;\n var support = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get$$1() {\n support = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n return support;\n}\n\nvar supportsPassive = testSupportsPassive();\n\nvar _ = {\n on: function on(el, type, func) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (supportsPassive) {\n el.addEventListener(type, func, {\n capture: capture,\n passive: true\n });\n } else {\n el.addEventListener(type, func, capture);\n }\n },\n off: function off(el, type, func) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n el.removeEventListener(type, func, capture);\n }\n};\n\nvar loadImageAsync = function loadImageAsync(item, resolve, reject) {\n var image = new Image();\n if (!item || !item.src) {\n var err = new Error('image src is required');\n return reject(err);\n }\n\n image.src = item.src;\n\n image.onload = function () {\n resolve({\n naturalHeight: image.naturalHeight,\n naturalWidth: image.naturalWidth,\n src: image.src\n });\n };\n\n image.onerror = function (e) {\n reject(e);\n };\n};\n\nvar style = function style(el, prop) {\n return typeof getComputedStyle !== 'undefined' ? getComputedStyle(el, null).getPropertyValue(prop) : el.style[prop];\n};\n\nvar overflow = function overflow(el) {\n return style(el, 'overflow') + style(el, 'overflow-y') + style(el, 'overflow-x');\n};\n\nvar scrollParent = function scrollParent(el) {\n if (!inBrowser) return;\n if (!(el instanceof HTMLElement)) {\n return window;\n }\n\n var parent = el;\n\n while (parent) {\n if (parent === document.body || parent === document.documentElement) {\n break;\n }\n\n if (!parent.parentNode) {\n break;\n }\n\n if (/(scroll|auto)/.test(overflow(parent))) {\n return parent;\n }\n\n parent = parent.parentNode;\n }\n\n return window;\n};\n\nfunction isObject(obj) {\n return obj !== null && (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object';\n}\n\nfunction ObjectKeys(obj) {\n if (!(obj instanceof Object)) return [];\n if (Object.keys) {\n return Object.keys(obj);\n } else {\n var keys = [];\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n keys.push(key);\n }\n }\n return keys;\n }\n}\n\nfunction ArrayFrom(arrLike) {\n var len = arrLike.length;\n var list = [];\n for (var i = 0; i < len; i++) {\n list.push(arrLike[i]);\n }\n return list;\n}\n\nfunction noop() {}\n\nvar ImageCache = function () {\n function ImageCache(_ref) {\n var max = _ref.max;\n classCallCheck(this, ImageCache);\n\n this.options = {\n max: max || 100\n };\n this._caches = [];\n }\n\n createClass(ImageCache, [{\n key: 'has',\n value: function has(key) {\n return this._caches.indexOf(key) > -1;\n }\n }, {\n key: 'add',\n value: function add(key) {\n if (this.has(key)) return;\n this._caches.push(key);\n if (this._caches.length > this.options.max) {\n this.free();\n }\n }\n }, {\n key: 'free',\n value: function free() {\n this._caches.shift();\n }\n }]);\n return ImageCache;\n}();\n\n// el: {\n// state,\n// src,\n// error,\n// loading\n// }\n\nvar ReactiveListener = function () {\n function ReactiveListener(_ref) {\n var el = _ref.el,\n src = _ref.src,\n error = _ref.error,\n loading = _ref.loading,\n bindType = _ref.bindType,\n $parent = _ref.$parent,\n options = _ref.options,\n elRenderer = _ref.elRenderer,\n imageCache = _ref.imageCache;\n classCallCheck(this, ReactiveListener);\n\n this.el = el;\n this.src = src;\n this.error = error;\n this.loading = loading;\n this.bindType = bindType;\n this.attempt = 0;\n\n this.naturalHeight = 0;\n this.naturalWidth = 0;\n\n this.options = options;\n\n this.rect = null;\n\n this.$parent = $parent;\n this.elRenderer = elRenderer;\n this._imageCache = imageCache;\n this.performanceData = {\n init: Date.now(),\n loadStart: 0,\n loadEnd: 0\n };\n\n this.filter();\n this.initState();\n this.render('loading', false);\n }\n\n /*\n * init listener state\n * @return\n */\n\n\n createClass(ReactiveListener, [{\n key: 'initState',\n value: function initState() {\n if ('dataset' in this.el) {\n this.el.dataset.src = this.src;\n } else {\n this.el.setAttribute('data-src', this.src);\n }\n\n this.state = {\n loading: false,\n error: false,\n loaded: false,\n rendered: false\n };\n }\n\n /*\n * record performance\n * @return\n */\n\n }, {\n key: 'record',\n value: function record(event) {\n this.performanceData[event] = Date.now();\n }\n\n /*\n * update image listener data\n * @param {String} image uri\n * @param {String} loading image uri\n * @param {String} error image uri\n * @return\n */\n\n }, {\n key: 'update',\n value: function update(_ref2) {\n var src = _ref2.src,\n loading = _ref2.loading,\n error = _ref2.error;\n\n var oldSrc = this.src;\n this.src = src;\n this.loading = loading;\n this.error = error;\n this.filter();\n if (oldSrc !== this.src) {\n this.attempt = 0;\n this.initState();\n }\n }\n\n /*\n * get el node rect\n * @return\n */\n\n }, {\n key: 'getRect',\n value: function getRect() {\n this.rect = this.el.getBoundingClientRect();\n }\n\n /*\n * check el is in view\n * @return {Boolean} el is in view\n */\n\n }, {\n key: 'checkInView',\n value: function checkInView() {\n this.getRect();\n return this.rect.top < window.innerHeight * this.options.preLoad && this.rect.bottom > this.options.preLoadTop && this.rect.left < window.innerWidth * this.options.preLoad && this.rect.right > 0;\n }\n\n /*\n * listener filter\n */\n\n }, {\n key: 'filter',\n value: function filter() {\n var _this = this;\n\n ObjectKeys(this.options.filter).map(function (key) {\n _this.options.filter[key](_this, _this.options);\n });\n }\n\n /*\n * render loading first\n * @params cb:Function\n * @return\n */\n\n }, {\n key: 'renderLoading',\n value: function renderLoading(cb) {\n var _this2 = this;\n\n this.state.loading = true;\n loadImageAsync({\n src: this.loading\n }, function (data) {\n _this2.render('loading', false);\n _this2.state.loading = false;\n cb();\n }, function () {\n // handler `loading image` load failed\n cb();\n _this2.state.loading = false;\n if (!_this2.options.silent) console.warn('VueLazyload log: load failed with loading image(' + _this2.loading + ')');\n });\n }\n\n /*\n * try load image and render it\n * @return\n */\n\n }, {\n key: 'load',\n value: function load() {\n var _this3 = this;\n\n var onFinish = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n if (this.attempt > this.options.attempt - 1 && this.state.error) {\n if (!this.options.silent) console.log('VueLazyload log: ' + this.src + ' tried too more than ' + this.options.attempt + ' times');\n onFinish();\n return;\n }\n if (this.state.rendered && this.state.loaded) return;\n if (this._imageCache.has(this.src)) {\n this.state.loaded = true;\n this.render('loaded', true);\n this.state.rendered = true;\n return onFinish();\n }\n\n this.renderLoading(function () {\n _this3.attempt++;\n\n _this3.options.adapter['beforeLoad'] && _this3.options.adapter['beforeLoad'](_this3, _this3.options);\n _this3.record('loadStart');\n\n loadImageAsync({\n src: _this3.src\n }, function (data) {\n _this3.naturalHeight = data.naturalHeight;\n _this3.naturalWidth = data.naturalWidth;\n _this3.state.loaded = true;\n _this3.state.error = false;\n _this3.record('loadEnd');\n _this3.render('loaded', false);\n _this3.state.rendered = true;\n _this3._imageCache.add(_this3.src);\n onFinish();\n }, function (err) {\n !_this3.options.silent && console.error(err);\n _this3.state.error = true;\n _this3.state.loaded = false;\n _this3.render('error', false);\n });\n });\n }\n\n /*\n * render image\n * @param {String} state to render // ['loading', 'src', 'error']\n * @param {String} is form cache\n * @return\n */\n\n }, {\n key: 'render',\n value: function render(state, cache) {\n this.elRenderer(this, state, cache);\n }\n\n /*\n * output performance data\n * @return {Object} performance data\n */\n\n }, {\n key: 'performance',\n value: function performance() {\n var state = 'loading';\n var time = 0;\n\n if (this.state.loaded) {\n state = 'loaded';\n time = (this.performanceData.loadEnd - this.performanceData.loadStart) / 1000;\n }\n\n if (this.state.error) state = 'error';\n\n return {\n src: this.src,\n state: state,\n time: time\n };\n }\n\n /*\n * $destroy\n * @return\n */\n\n }, {\n key: '$destroy',\n value: function $destroy() {\n this.el = null;\n this.src = null;\n this.error = null;\n this.loading = null;\n this.bindType = null;\n this.attempt = 0;\n }\n }]);\n return ReactiveListener;\n}();\n\nvar DEFAULT_URL = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\nvar DEFAULT_EVENTS = ['scroll', 'wheel', 'mousewheel', 'resize', 'animationend', 'transitionend', 'touchmove'];\nvar DEFAULT_OBSERVER_OPTIONS = {\n rootMargin: '0px',\n threshold: 0\n};\n\nvar Lazy = function (Vue) {\n return function () {\n function Lazy(_ref) {\n var preLoad = _ref.preLoad,\n error = _ref.error,\n throttleWait = _ref.throttleWait,\n preLoadTop = _ref.preLoadTop,\n dispatchEvent = _ref.dispatchEvent,\n loading = _ref.loading,\n attempt = _ref.attempt,\n _ref$silent = _ref.silent,\n silent = _ref$silent === undefined ? true : _ref$silent,\n scale = _ref.scale,\n listenEvents = _ref.listenEvents,\n hasbind = _ref.hasbind,\n filter = _ref.filter,\n adapter = _ref.adapter,\n observer = _ref.observer,\n observerOptions = _ref.observerOptions;\n classCallCheck(this, Lazy);\n\n this.version = '1.3.3';\n this.mode = modeType.event;\n this.ListenerQueue = [];\n this.TargetIndex = 0;\n this.TargetQueue = [];\n this.options = {\n silent: silent,\n dispatchEvent: !!dispatchEvent,\n throttleWait: throttleWait || 200,\n preLoad: preLoad || 1.3,\n preLoadTop: preLoadTop || 0,\n error: error || DEFAULT_URL,\n loading: loading || DEFAULT_URL,\n attempt: attempt || 3,\n scale: scale || getDPR(scale),\n ListenEvents: listenEvents || DEFAULT_EVENTS,\n hasbind: false,\n supportWebp: supportWebp(),\n filter: filter || {},\n adapter: adapter || {},\n observer: !!observer,\n observerOptions: observerOptions || DEFAULT_OBSERVER_OPTIONS\n };\n this._initEvent();\n this._imageCache = new ImageCache({ max: 200 });\n this.lazyLoadHandler = throttle(this._lazyLoadHandler.bind(this), this.options.throttleWait);\n\n this.setMode(this.options.observer ? modeType.observer : modeType.event);\n }\n\n /**\n * update config\n * @param {Object} config params\n * @return\n */\n\n\n createClass(Lazy, [{\n key: 'config',\n value: function config() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n assignDeep(this.options, options);\n }\n\n /**\n * output listener's load performance\n * @return {Array}\n */\n\n }, {\n key: 'performance',\n value: function performance() {\n var list = [];\n\n this.ListenerQueue.map(function (item) {\n list.push(item.performance());\n });\n\n return list;\n }\n\n /*\n * add lazy component to queue\n * @param {Vue} vm lazy component instance\n * @return\n */\n\n }, {\n key: 'addLazyBox',\n value: function addLazyBox(vm) {\n this.ListenerQueue.push(vm);\n if (inBrowser) {\n this._addListenerTarget(window);\n this._observer && this._observer.observe(vm.el);\n if (vm.$el && vm.$el.parentNode) {\n this._addListenerTarget(vm.$el.parentNode);\n }\n }\n }\n\n /*\n * add image listener to queue\n * @param {DOM} el\n * @param {object} binding vue directive binding\n * @param {vnode} vnode vue directive vnode\n * @return\n */\n\n }, {\n key: 'add',\n value: function add(el, binding, vnode) {\n var _this = this;\n\n if (some(this.ListenerQueue, function (item) {\n return item.el === el;\n })) {\n this.update(el, binding);\n return Vue.nextTick(this.lazyLoadHandler);\n }\n\n var _valueFormatter2 = this._valueFormatter(binding.value),\n src = _valueFormatter2.src,\n loading = _valueFormatter2.loading,\n error = _valueFormatter2.error;\n\n Vue.nextTick(function () {\n src = getBestSelectionFromSrcset(el, _this.options.scale) || src;\n _this._observer && _this._observer.observe(el);\n\n var container = Object.keys(binding.modifiers)[0];\n var $parent = void 0;\n\n if (container) {\n $parent = vnode.context.$refs[container];\n // if there is container passed in, try ref first, then fallback to getElementById to support the original usage\n $parent = $parent ? $parent.$el || $parent : document.getElementById(container);\n }\n\n if (!$parent) {\n $parent = scrollParent(el);\n }\n\n var newListener = new ReactiveListener({\n bindType: binding.arg,\n $parent: $parent,\n el: el,\n loading: loading,\n error: error,\n src: src,\n elRenderer: _this._elRenderer.bind(_this),\n options: _this.options,\n imageCache: _this._imageCache\n });\n\n _this.ListenerQueue.push(newListener);\n\n if (inBrowser) {\n _this._addListenerTarget(window);\n _this._addListenerTarget($parent);\n }\n\n _this.lazyLoadHandler();\n Vue.nextTick(function () {\n return _this.lazyLoadHandler();\n });\n });\n }\n\n /**\n * update image src\n * @param {DOM} el\n * @param {object} vue directive binding\n * @return\n */\n\n }, {\n key: 'update',\n value: function update(el, binding, vnode) {\n var _this2 = this;\n\n var _valueFormatter3 = this._valueFormatter(binding.value),\n src = _valueFormatter3.src,\n loading = _valueFormatter3.loading,\n error = _valueFormatter3.error;\n\n src = getBestSelectionFromSrcset(el, this.options.scale) || src;\n\n var exist = find(this.ListenerQueue, function (item) {\n return item.el === el;\n });\n if (!exist) {\n this.add(el, binding, vnode);\n } else {\n exist.update({\n src: src,\n loading: loading,\n error: error\n });\n }\n if (this._observer) {\n this._observer.unobserve(el);\n this._observer.observe(el);\n }\n this.lazyLoadHandler();\n Vue.nextTick(function () {\n return _this2.lazyLoadHandler();\n });\n }\n\n /**\n * remove listener form list\n * @param {DOM} el\n * @return\n */\n\n }, {\n key: 'remove',\n value: function remove$$1(el) {\n if (!el) return;\n this._observer && this._observer.unobserve(el);\n var existItem = find(this.ListenerQueue, function (item) {\n return item.el === el;\n });\n if (existItem) {\n this._removeListenerTarget(existItem.$parent);\n this._removeListenerTarget(window);\n remove(this.ListenerQueue, existItem);\n existItem.$destroy();\n }\n }\n\n /*\n * remove lazy components form list\n * @param {Vue} vm Vue instance\n * @return\n */\n\n }, {\n key: 'removeComponent',\n value: function removeComponent(vm) {\n if (!vm) return;\n remove(this.ListenerQueue, vm);\n this._observer && this._observer.unobserve(vm.el);\n if (vm.$parent && vm.$el.parentNode) {\n this._removeListenerTarget(vm.$el.parentNode);\n }\n this._removeListenerTarget(window);\n }\n }, {\n key: 'setMode',\n value: function setMode(mode) {\n var _this3 = this;\n\n if (!hasIntersectionObserver && mode === modeType.observer) {\n mode = modeType.event;\n }\n\n this.mode = mode; // event or observer\n\n if (mode === modeType.event) {\n if (this._observer) {\n this.ListenerQueue.forEach(function (listener) {\n _this3._observer.unobserve(listener.el);\n });\n this._observer = null;\n }\n\n this.TargetQueue.forEach(function (target) {\n _this3._initListen(target.el, true);\n });\n } else {\n this.TargetQueue.forEach(function (target) {\n _this3._initListen(target.el, false);\n });\n this._initIntersectionObserver();\n }\n }\n\n /*\n *** Private functions ***\n */\n\n /*\n * add listener target\n * @param {DOM} el listener target\n * @return\n */\n\n }, {\n key: '_addListenerTarget',\n value: function _addListenerTarget(el) {\n if (!el) return;\n var target = find(this.TargetQueue, function (target) {\n return target.el === el;\n });\n if (!target) {\n target = {\n el: el,\n id: ++this.TargetIndex,\n childrenCount: 1,\n listened: true\n };\n this.mode === modeType.event && this._initListen(target.el, true);\n this.TargetQueue.push(target);\n } else {\n target.childrenCount++;\n }\n return this.TargetIndex;\n }\n\n /*\n * remove listener target or reduce target childrenCount\n * @param {DOM} el or window\n * @return\n */\n\n }, {\n key: '_removeListenerTarget',\n value: function _removeListenerTarget(el) {\n var _this4 = this;\n\n this.TargetQueue.forEach(function (target, index) {\n if (target.el === el) {\n target.childrenCount--;\n if (!target.childrenCount) {\n _this4._initListen(target.el, false);\n _this4.TargetQueue.splice(index, 1);\n target = null;\n }\n }\n });\n }\n\n /*\n * add or remove eventlistener\n * @param {DOM} el DOM or Window\n * @param {boolean} start flag\n * @return\n */\n\n }, {\n key: '_initListen',\n value: function _initListen(el, start) {\n var _this5 = this;\n\n this.options.ListenEvents.forEach(function (evt) {\n return _[start ? 'on' : 'off'](el, evt, _this5.lazyLoadHandler);\n });\n }\n }, {\n key: '_initEvent',\n value: function _initEvent() {\n var _this6 = this;\n\n this.Event = {\n listeners: {\n loading: [],\n loaded: [],\n error: []\n }\n };\n\n this.$on = function (event, func) {\n if (!_this6.Event.listeners[event]) _this6.Event.listeners[event] = [];\n _this6.Event.listeners[event].push(func);\n };\n\n this.$once = function (event, func) {\n var vm = _this6;\n function on() {\n vm.$off(event, on);\n func.apply(vm, arguments);\n }\n _this6.$on(event, on);\n };\n\n this.$off = function (event, func) {\n if (!func) {\n if (!_this6.Event.listeners[event]) return;\n _this6.Event.listeners[event].length = 0;\n return;\n }\n remove(_this6.Event.listeners[event], func);\n };\n\n this.$emit = function (event, context, inCache) {\n if (!_this6.Event.listeners[event]) return;\n _this6.Event.listeners[event].forEach(function (func) {\n return func(context, inCache);\n });\n };\n }\n\n /**\n * find nodes which in viewport and trigger load\n * @return\n */\n\n }, {\n key: '_lazyLoadHandler',\n value: function _lazyLoadHandler() {\n var _this7 = this;\n\n var freeList = [];\n this.ListenerQueue.forEach(function (listener, index) {\n if (!listener.el || !listener.el.parentNode) {\n freeList.push(listener);\n }\n var catIn = listener.checkInView();\n if (!catIn) return;\n listener.load();\n });\n freeList.forEach(function (item) {\n remove(_this7.ListenerQueue, item);\n item.$destroy();\n });\n }\n /**\n * init IntersectionObserver\n * set mode to observer\n * @return\n */\n\n }, {\n key: '_initIntersectionObserver',\n value: function _initIntersectionObserver() {\n var _this8 = this;\n\n if (!hasIntersectionObserver) return;\n this._observer = new IntersectionObserver(this._observerHandler.bind(this), this.options.observerOptions);\n if (this.ListenerQueue.length) {\n this.ListenerQueue.forEach(function (listener) {\n _this8._observer.observe(listener.el);\n });\n }\n }\n\n /**\n * init IntersectionObserver\n * @return\n */\n\n }, {\n key: '_observerHandler',\n value: function _observerHandler(entries, observer) {\n var _this9 = this;\n\n entries.forEach(function (entry) {\n if (entry.isIntersecting) {\n _this9.ListenerQueue.forEach(function (listener) {\n if (listener.el === entry.target) {\n if (listener.state.loaded) return _this9._observer.unobserve(listener.el);\n listener.load();\n }\n });\n }\n });\n }\n\n /**\n * set element attribute with image'url and state\n * @param {object} lazyload listener object\n * @param {string} state will be rendered\n * @param {bool} inCache is rendered from cache\n * @return\n */\n\n }, {\n key: '_elRenderer',\n value: function _elRenderer(listener, state, cache) {\n if (!listener.el) return;\n var el = listener.el,\n bindType = listener.bindType;\n\n\n var src = void 0;\n switch (state) {\n case 'loading':\n src = listener.loading;\n break;\n case 'error':\n src = listener.error;\n break;\n default:\n src = listener.src;\n break;\n }\n\n if (bindType) {\n el.style[bindType] = 'url(\"' + src + '\")';\n } else if (el.getAttribute('src') !== src) {\n el.setAttribute('src', src);\n }\n\n el.setAttribute('lazy', state);\n\n this.$emit(state, listener, cache);\n this.options.adapter[state] && this.options.adapter[state](listener, this.options);\n\n if (this.options.dispatchEvent) {\n var event = new CustomEvent(state, {\n detail: listener\n });\n el.dispatchEvent(event);\n }\n }\n\n /**\n * generate loading loaded error image url\n * @param {string} image's src\n * @return {object} image's loading, loaded, error url\n */\n\n }, {\n key: '_valueFormatter',\n value: function _valueFormatter(value) {\n var src = value;\n var loading = this.options.loading;\n var error = this.options.error;\n\n // value is object\n if (isObject(value)) {\n if (!value.src && !this.options.silent) console.error('Vue Lazyload warning: miss src with ' + value);\n src = value.src;\n loading = value.loading || this.options.loading;\n error = value.error || this.options.error;\n }\n return {\n src: src,\n loading: loading,\n error: error\n };\n }\n }]);\n return Lazy;\n }();\n};\n\nvar LazyComponent = (function (lazy) {\n return {\n props: {\n tag: {\n type: String,\n default: 'div'\n }\n },\n render: function render(h) {\n if (this.show === false) {\n return h(this.tag);\n }\n return h(this.tag, null, this.$slots.default);\n },\n data: function data() {\n return {\n el: null,\n state: {\n loaded: false\n },\n rect: {},\n show: false\n };\n },\n mounted: function mounted() {\n this.el = this.$el;\n lazy.addLazyBox(this);\n lazy.lazyLoadHandler();\n },\n beforeDestroy: function beforeDestroy() {\n lazy.removeComponent(this);\n },\n\n methods: {\n getRect: function getRect() {\n this.rect = this.$el.getBoundingClientRect();\n },\n checkInView: function checkInView() {\n this.getRect();\n return inBrowser && this.rect.top < window.innerHeight * lazy.options.preLoad && this.rect.bottom > 0 && this.rect.left < window.innerWidth * lazy.options.preLoad && this.rect.right > 0;\n },\n load: function load() {\n this.show = true;\n this.state.loaded = true;\n this.$emit('show', this);\n },\n destroy: function destroy() {\n return this.$destroy;\n }\n }\n };\n});\n\nvar LazyContainerMananger = function () {\n function LazyContainerMananger(_ref) {\n var lazy = _ref.lazy;\n classCallCheck(this, LazyContainerMananger);\n\n this.lazy = lazy;\n lazy.lazyContainerMananger = this;\n this._queue = [];\n }\n\n createClass(LazyContainerMananger, [{\n key: 'bind',\n value: function bind(el, binding, vnode) {\n var container = new LazyContainer$1({ el: el, binding: binding, vnode: vnode, lazy: this.lazy });\n this._queue.push(container);\n }\n }, {\n key: 'update',\n value: function update(el, binding, vnode) {\n var container = find(this._queue, function (item) {\n return item.el === el;\n });\n if (!container) return;\n container.update({ el: el, binding: binding, vnode: vnode });\n }\n }, {\n key: 'unbind',\n value: function unbind(el, binding, vnode) {\n var container = find(this._queue, function (item) {\n return item.el === el;\n });\n if (!container) return;\n container.clear();\n remove(this._queue, container);\n }\n }]);\n return LazyContainerMananger;\n}();\n\nvar defaultOptions = {\n selector: 'img'\n};\n\nvar LazyContainer$1 = function () {\n function LazyContainer(_ref2) {\n var el = _ref2.el,\n binding = _ref2.binding,\n vnode = _ref2.vnode,\n lazy = _ref2.lazy;\n classCallCheck(this, LazyContainer);\n\n this.el = null;\n this.vnode = vnode;\n this.binding = binding;\n this.options = {};\n this.lazy = lazy;\n\n this._queue = [];\n this.update({ el: el, binding: binding });\n }\n\n createClass(LazyContainer, [{\n key: 'update',\n value: function update(_ref3) {\n var _this = this;\n\n var el = _ref3.el,\n binding = _ref3.binding;\n\n this.el = el;\n this.options = assignDeep({}, defaultOptions, binding.value);\n\n var imgs = this.getImgs();\n imgs.forEach(function (el) {\n _this.lazy.add(el, assignDeep({}, _this.binding, {\n value: {\n src: 'dataset' in el ? el.dataset.src : el.getAttribute('data-src'),\n error: ('dataset' in el ? el.dataset.error : el.getAttribute('data-error')) || _this.options.error,\n loading: ('dataset' in el ? el.dataset.loading : el.getAttribute('data-loading')) || _this.options.loading\n }\n }), _this.vnode);\n });\n }\n }, {\n key: 'getImgs',\n value: function getImgs() {\n return ArrayFrom(this.el.querySelectorAll(this.options.selector));\n }\n }, {\n key: 'clear',\n value: function clear() {\n var _this2 = this;\n\n var imgs = this.getImgs();\n imgs.forEach(function (el) {\n return _this2.lazy.remove(el);\n });\n\n this.vnode = null;\n this.binding = null;\n this.lazy = null;\n }\n }]);\n return LazyContainer;\n}();\n\nvar LazyImage = (function (lazyManager) {\n return {\n props: {\n src: [String, Object],\n tag: {\n type: String,\n default: 'img'\n }\n },\n render: function render(h) {\n return h(this.tag, {\n attrs: {\n src: this.renderSrc\n }\n }, this.$slots.default);\n },\n data: function data() {\n return {\n el: null,\n options: {\n src: '',\n error: '',\n loading: '',\n attempt: lazyManager.options.attempt\n },\n state: {\n loaded: false,\n error: false,\n attempt: 0\n },\n rect: {},\n renderSrc: ''\n };\n },\n\n watch: {\n src: function src() {\n this.init();\n lazyManager.addLazyBox(this);\n lazyManager.lazyLoadHandler();\n }\n },\n created: function created() {\n this.init();\n this.renderSrc = this.options.loading;\n },\n mounted: function mounted() {\n this.el = this.$el;\n lazyManager.addLazyBox(this);\n lazyManager.lazyLoadHandler();\n },\n beforeDestroy: function beforeDestroy() {\n lazyManager.removeComponent(this);\n },\n\n methods: {\n init: function init() {\n var _lazyManager$_valueFo = lazyManager._valueFormatter(this.src),\n src = _lazyManager$_valueFo.src,\n loading = _lazyManager$_valueFo.loading,\n error = _lazyManager$_valueFo.error;\n\n this.state.loaded = false;\n this.options.src = src;\n this.options.error = error;\n this.options.loading = loading;\n this.renderSrc = this.options.loading;\n },\n getRect: function getRect() {\n this.rect = this.$el.getBoundingClientRect();\n },\n checkInView: function checkInView() {\n this.getRect();\n return inBrowser && this.rect.top < window.innerHeight * lazyManager.options.preLoad && this.rect.bottom > 0 && this.rect.left < window.innerWidth * lazyManager.options.preLoad && this.rect.right > 0;\n },\n load: function load() {\n var _this = this;\n\n var onFinish = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n if (this.state.attempt > this.options.attempt - 1 && this.state.error) {\n if (!lazyManager.options.silent) console.log('VueLazyload log: ' + this.options.src + ' tried too more than ' + this.options.attempt + ' times');\n onFinish();\n return;\n }\n var src = this.options.src;\n loadImageAsync({ src: src }, function (_ref) {\n var src = _ref.src;\n\n _this.renderSrc = src;\n _this.state.loaded = true;\n }, function (e) {\n _this.state.attempt++;\n _this.renderSrc = _this.options.error;\n _this.state.error = true;\n });\n }\n }\n };\n});\n\nvar index = {\n /*\n * install function\n * @param {Vue} Vue\n * @param {object} options lazyload options\n */\n install: function install(Vue) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var LazyClass = Lazy(Vue);\n var lazy = new LazyClass(options);\n var lazyContainer = new LazyContainerMananger({ lazy: lazy });\n\n var isVue2 = Vue.version.split('.')[0] === '2';\n\n Vue.prototype.$Lazyload = lazy;\n\n if (options.lazyComponent) {\n Vue.component('lazy-component', LazyComponent(lazy));\n }\n\n if (options.lazyImage) {\n Vue.component('lazy-image', LazyImage(lazy));\n }\n\n if (isVue2) {\n Vue.directive('lazy', {\n bind: lazy.add.bind(lazy),\n update: lazy.update.bind(lazy),\n componentUpdated: lazy.lazyLoadHandler.bind(lazy),\n unbind: lazy.remove.bind(lazy)\n });\n Vue.directive('lazy-container', {\n bind: lazyContainer.bind.bind(lazyContainer),\n componentUpdated: lazyContainer.update.bind(lazyContainer),\n unbind: lazyContainer.unbind.bind(lazyContainer)\n });\n } else {\n Vue.directive('lazy', {\n bind: lazy.lazyLoadHandler.bind(lazy),\n update: function update(newValue, oldValue) {\n assignDeep(this.vm.$refs, this.vm.$els);\n lazy.add(this.el, {\n modifiers: this.modifiers || {},\n arg: this.arg,\n value: newValue,\n oldValue: oldValue\n }, {\n context: this.vm\n });\n },\n unbind: function unbind() {\n lazy.remove(this.el);\n }\n });\n\n Vue.directive('lazy-container', {\n update: function update(newValue, oldValue) {\n lazyContainer.update(this.el, {\n modifiers: this.modifiers || {},\n arg: this.arg,\n value: newValue,\n oldValue: oldValue\n }, {\n context: this.vm\n });\n },\n unbind: function unbind() {\n lazyContainer.unbind(this.el);\n }\n });\n }\n }\n};\n\nexport default index;\n","/*\n * EJS Embedded JavaScript templates\n * Copyright 2112 Matthew Eernisse (mde@fleegix.org)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n*/\n\n'use strict';\n\n/**\n * @file Embedded JavaScript templating engine. {@link http://ejs.co}\n * @author Matthew Eernisse \n * @author Tiancheng \"Timothy\" Gu \n * @project EJS\n * @license {@link http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0}\n */\n\n/**\n * EJS internal functions.\n *\n * Technically this \"module\" lies in the same file as {@link module:ejs}, for\n * the sake of organization all the private functions re grouped into this\n * module.\n *\n * @module ejs-internal\n * @private\n */\n\n/**\n * Embedded JavaScript templating engine.\n *\n * @module ejs\n * @public\n */\n\nvar fs = require('fs');\nvar path = require('path');\nvar utils = require('./utils');\n\nvar scopeOptionWarned = false;\n/** @type {string} */\nvar _VERSION_STRING = require('../package.json').version;\nvar _DEFAULT_OPEN_DELIMITER = '<';\nvar _DEFAULT_CLOSE_DELIMITER = '>';\nvar _DEFAULT_DELIMITER = '%';\nvar _DEFAULT_LOCALS_NAME = 'locals';\nvar _NAME = 'ejs';\nvar _REGEX_STRING = '(<%%|%%>|<%=|<%-|<%_|<%#|<%|%>|-%>|_%>)';\nvar _OPTS_PASSABLE_WITH_DATA = ['delimiter', 'scope', 'context', 'debug', 'compileDebug',\n 'client', '_with', 'rmWhitespace', 'strict', 'filename', 'async'];\n// We don't allow 'cache' option to be passed in the data obj for\n// the normal `render` call, but this is where Express 2 & 3 put it\n// so we make an exception for `renderFile`\nvar _OPTS_PASSABLE_WITH_DATA_EXPRESS = _OPTS_PASSABLE_WITH_DATA.concat('cache');\nvar _BOM = /^\\uFEFF/;\n\n/**\n * EJS template function cache. This can be a LRU object from lru-cache NPM\n * module. By default, it is {@link module:utils.cache}, a simple in-process\n * cache that grows continuously.\n *\n * @type {Cache}\n */\n\nexports.cache = utils.cache;\n\n/**\n * Custom file loader. Useful for template preprocessing or restricting access\n * to a certain part of the filesystem.\n *\n * @type {fileLoader}\n */\n\nexports.fileLoader = fs.readFileSync;\n\n/**\n * Name of the object containing the locals.\n *\n * This variable is overridden by {@link Options}`.localsName` if it is not\n * `undefined`.\n *\n * @type {String}\n * @public\n */\n\nexports.localsName = _DEFAULT_LOCALS_NAME;\n\n/**\n * Promise implementation -- defaults to the native implementation if available\n * This is mostly just for testability\n *\n * @type {PromiseConstructorLike}\n * @public\n */\n\nexports.promiseImpl = (new Function('return this;'))().Promise;\n\n/**\n * Get the path to the included file from the parent file path and the\n * specified path.\n *\n * @param {String} name specified path\n * @param {String} filename parent file path\n * @param {Boolean} [isDir=false] whether the parent file path is a directory\n * @return {String}\n */\nexports.resolveInclude = function(name, filename, isDir) {\n var dirname = path.dirname;\n var extname = path.extname;\n var resolve = path.resolve;\n var includePath = resolve(isDir ? filename : dirname(filename), name);\n var ext = extname(name);\n if (!ext) {\n includePath += '.ejs';\n }\n return includePath;\n};\n\n/**\n * Try to resolve file path on multiple directories\n *\n * @param {String} name specified path\n * @param {Array} paths list of possible parent directory paths\n * @return {String}\n */\nfunction resolvePaths(name, paths) {\n var filePath;\n if (paths.some(function (v) {\n filePath = exports.resolveInclude(name, v, true);\n return fs.existsSync(filePath);\n })) {\n return filePath;\n }\n}\n\n/**\n * Get the path to the included file by Options\n *\n * @param {String} path specified path\n * @param {Options} options compilation options\n * @return {String}\n */\nfunction getIncludePath(path, options) {\n var includePath;\n var filePath;\n var views = options.views;\n var match = /^[A-Za-z]+:\\\\|^\\//.exec(path);\n\n // Abs path\n if (match && match.length) {\n path = path.replace(/^\\/*/, '');\n if (Array.isArray(options.root)) {\n includePath = resolvePaths(path, options.root);\n } else {\n includePath = exports.resolveInclude(path, options.root || '/', true);\n }\n }\n // Relative paths\n else {\n // Look relative to a passed filename first\n if (options.filename) {\n filePath = exports.resolveInclude(path, options.filename);\n if (fs.existsSync(filePath)) {\n includePath = filePath;\n }\n }\n // Then look in any views directories\n if (!includePath && Array.isArray(views)) {\n includePath = resolvePaths(path, views);\n }\n if (!includePath && typeof options.includer !== 'function') {\n throw new Error('Could not find the include file \"' +\n options.escapeFunction(path) + '\"');\n }\n }\n return includePath;\n}\n\n/**\n * Get the template from a string or a file, either compiled on-the-fly or\n * read from cache (if enabled), and cache the template if needed.\n *\n * If `template` is not set, the file specified in `options.filename` will be\n * read.\n *\n * If `options.cache` is true, this function reads the file from\n * `options.filename` so it must be set prior to calling this function.\n *\n * @memberof module:ejs-internal\n * @param {Options} options compilation options\n * @param {String} [template] template source\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `options.client`, either type might be returned.\n * @static\n */\n\nfunction handleCache(options, template) {\n var func;\n var filename = options.filename;\n var hasTemplate = arguments.length > 1;\n\n if (options.cache) {\n if (!filename) {\n throw new Error('cache option requires a filename');\n }\n func = exports.cache.get(filename);\n if (func) {\n return func;\n }\n if (!hasTemplate) {\n template = fileLoader(filename).toString().replace(_BOM, '');\n }\n }\n else if (!hasTemplate) {\n // istanbul ignore if: should not happen at all\n if (!filename) {\n throw new Error('Internal EJS error: no file name or template '\n + 'provided');\n }\n template = fileLoader(filename).toString().replace(_BOM, '');\n }\n func = exports.compile(template, options);\n if (options.cache) {\n exports.cache.set(filename, func);\n }\n return func;\n}\n\n/**\n * Try calling handleCache with the given options and data and call the\n * callback with the result. If an error occurs, call the callback with\n * the error. Used by renderFile().\n *\n * @memberof module:ejs-internal\n * @param {Options} options compilation options\n * @param {Object} data template data\n * @param {RenderFileCallback} cb callback\n * @static\n */\n\nfunction tryHandleCache(options, data, cb) {\n var result;\n if (!cb) {\n if (typeof exports.promiseImpl == 'function') {\n return new exports.promiseImpl(function (resolve, reject) {\n try {\n result = handleCache(options)(data);\n resolve(result);\n }\n catch (err) {\n reject(err);\n }\n });\n }\n else {\n throw new Error('Please provide a callback function');\n }\n }\n else {\n try {\n result = handleCache(options)(data);\n }\n catch (err) {\n return cb(err);\n }\n\n cb(null, result);\n }\n}\n\n/**\n * fileLoader is independent\n *\n * @param {String} filePath ejs file path.\n * @return {String} The contents of the specified file.\n * @static\n */\n\nfunction fileLoader(filePath){\n return exports.fileLoader(filePath);\n}\n\n/**\n * Get the template function.\n *\n * If `options.cache` is `true`, then the template is cached.\n *\n * @memberof module:ejs-internal\n * @param {String} path path for the specified file\n * @param {Options} options compilation options\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `options.client`, either type might be returned\n * @static\n */\n\nfunction includeFile(path, options) {\n var opts = utils.shallowCopy({}, options);\n opts.filename = getIncludePath(path, opts);\n if (typeof options.includer === 'function') {\n var includerResult = options.includer(path, opts.filename);\n if (includerResult) {\n if (includerResult.filename) {\n opts.filename = includerResult.filename;\n }\n if (includerResult.template) {\n return handleCache(opts, includerResult.template);\n }\n }\n }\n return handleCache(opts);\n}\n\n/**\n * Re-throw the given `err` in context to the `str` of ejs, `filename`, and\n * `lineno`.\n *\n * @implements {RethrowCallback}\n * @memberof module:ejs-internal\n * @param {Error} err Error object\n * @param {String} str EJS source\n * @param {String} flnm file name of the EJS file\n * @param {Number} lineno line number of the error\n * @param {EscapeCallback} esc\n * @static\n */\n\nfunction rethrow(err, str, flnm, lineno, esc) {\n var lines = str.split('\\n');\n var start = Math.max(lineno - 3, 0);\n var end = Math.min(lines.length, lineno + 3);\n var filename = esc(flnm);\n // Error context\n var context = lines.slice(start, end).map(function (line, i){\n var curr = i + start + 1;\n return (curr == lineno ? ' >> ' : ' ')\n + curr\n + '| '\n + line;\n }).join('\\n');\n\n // Alter exception message\n err.path = filename;\n err.message = (filename || 'ejs') + ':'\n + lineno + '\\n'\n + context + '\\n\\n'\n + err.message;\n\n throw err;\n}\n\nfunction stripSemi(str){\n return str.replace(/;(\\s*$)/, '$1');\n}\n\n/**\n * Compile the given `str` of ejs into a template function.\n *\n * @param {String} template EJS template\n *\n * @param {Options} [opts] compilation options\n *\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `opts.client`, either type might be returned.\n * Note that the return type of the function also depends on the value of `opts.async`.\n * @public\n */\n\nexports.compile = function compile(template, opts) {\n var templ;\n\n // v1 compat\n // 'scope' is 'context'\n // FIXME: Remove this in a future version\n if (opts && opts.scope) {\n if (!scopeOptionWarned){\n console.warn('`scope` option is deprecated and will be removed in EJS 3');\n scopeOptionWarned = true;\n }\n if (!opts.context) {\n opts.context = opts.scope;\n }\n delete opts.scope;\n }\n templ = new Template(template, opts);\n return templ.compile();\n};\n\n/**\n * Render the given `template` of ejs.\n *\n * If you would like to include options but not data, you need to explicitly\n * call this function with `data` being an empty object or `null`.\n *\n * @param {String} template EJS template\n * @param {Object} [data={}] template data\n * @param {Options} [opts={}] compilation and rendering options\n * @return {(String|Promise)}\n * Return value type depends on `opts.async`.\n * @public\n */\n\nexports.render = function (template, d, o) {\n var data = d || {};\n var opts = o || {};\n\n // No options object -- if there are optiony names\n // in the data, copy them to options\n if (arguments.length == 2) {\n utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA);\n }\n\n return handleCache(opts, template)(data);\n};\n\n/**\n * Render an EJS file at the given `path` and callback `cb(err, str)`.\n *\n * If you would like to include options but not data, you need to explicitly\n * call this function with `data` being an empty object or `null`.\n *\n * @param {String} path path to the EJS file\n * @param {Object} [data={}] template data\n * @param {Options} [opts={}] compilation and rendering options\n * @param {RenderFileCallback} cb callback\n * @public\n */\n\nexports.renderFile = function () {\n var args = Array.prototype.slice.call(arguments);\n var filename = args.shift();\n var cb;\n var opts = {filename: filename};\n var data;\n var viewOpts;\n\n // Do we have a callback?\n if (typeof arguments[arguments.length - 1] == 'function') {\n cb = args.pop();\n }\n // Do we have data/opts?\n if (args.length) {\n // Should always have data obj\n data = args.shift();\n // Normal passed opts (data obj + opts obj)\n if (args.length) {\n // Use shallowCopy so we don't pollute passed in opts obj with new vals\n utils.shallowCopy(opts, args.pop());\n }\n // Special casing for Express (settings + opts-in-data)\n else {\n // Express 3 and 4\n if (data.settings) {\n // Pull a few things from known locations\n if (data.settings.views) {\n opts.views = data.settings.views;\n }\n if (data.settings['view cache']) {\n opts.cache = true;\n }\n // Undocumented after Express 2, but still usable, esp. for\n // items that are unsafe to be passed along with data, like `root`\n viewOpts = data.settings['view options'];\n if (viewOpts) {\n utils.shallowCopy(opts, viewOpts);\n }\n }\n // Express 2 and lower, values set in app.locals, or people who just\n // want to pass options in their data. NOTE: These values will override\n // anything previously set in settings or settings['view options']\n utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA_EXPRESS);\n }\n opts.filename = filename;\n }\n else {\n data = {};\n }\n\n return tryHandleCache(opts, data, cb);\n};\n\n/**\n * Clear intermediate JavaScript cache. Calls {@link Cache#reset}.\n * @public\n */\n\n/**\n * EJS template class\n * @public\n */\nexports.Template = Template;\n\nexports.clearCache = function () {\n exports.cache.reset();\n};\n\nfunction Template(text, opts) {\n opts = opts || {};\n var options = {};\n this.templateText = text;\n /** @type {string | null} */\n this.mode = null;\n this.truncate = false;\n this.currentLine = 1;\n this.source = '';\n options.client = opts.client || false;\n options.escapeFunction = opts.escape || opts.escapeFunction || utils.escapeXML;\n options.compileDebug = opts.compileDebug !== false;\n options.debug = !!opts.debug;\n options.filename = opts.filename;\n options.openDelimiter = opts.openDelimiter || exports.openDelimiter || _DEFAULT_OPEN_DELIMITER;\n options.closeDelimiter = opts.closeDelimiter || exports.closeDelimiter || _DEFAULT_CLOSE_DELIMITER;\n options.delimiter = opts.delimiter || exports.delimiter || _DEFAULT_DELIMITER;\n options.strict = opts.strict || false;\n options.context = opts.context;\n options.cache = opts.cache || false;\n options.rmWhitespace = opts.rmWhitespace;\n options.root = opts.root;\n options.includer = opts.includer;\n options.outputFunctionName = opts.outputFunctionName;\n options.localsName = opts.localsName || exports.localsName || _DEFAULT_LOCALS_NAME;\n options.views = opts.views;\n options.async = opts.async;\n options.destructuredLocals = opts.destructuredLocals;\n options.legacyInclude = typeof opts.legacyInclude != 'undefined' ? !!opts.legacyInclude : true;\n\n if (options.strict) {\n options._with = false;\n }\n else {\n options._with = typeof opts._with != 'undefined' ? opts._with : true;\n }\n\n this.opts = options;\n\n this.regex = this.createRegex();\n}\n\nTemplate.modes = {\n EVAL: 'eval',\n ESCAPED: 'escaped',\n RAW: 'raw',\n COMMENT: 'comment',\n LITERAL: 'literal'\n};\n\nTemplate.prototype = {\n createRegex: function () {\n var str = _REGEX_STRING;\n var delim = utils.escapeRegExpChars(this.opts.delimiter);\n var open = utils.escapeRegExpChars(this.opts.openDelimiter);\n var close = utils.escapeRegExpChars(this.opts.closeDelimiter);\n str = str.replace(/%/g, delim)\n .replace(//g, close);\n return new RegExp(str);\n },\n\n compile: function () {\n /** @type {string} */\n var src;\n /** @type {ClientFunction} */\n var fn;\n var opts = this.opts;\n var prepended = '';\n var appended = '';\n /** @type {EscapeCallback} */\n var escapeFn = opts.escapeFunction;\n /** @type {FunctionConstructor} */\n var ctor;\n /** @type {string} */\n var sanitizedFilename = opts.filename ? JSON.stringify(opts.filename) : 'undefined';\n\n if (!this.source) {\n this.generateSource();\n prepended +=\n ' var __output = \"\";\\n' +\n ' function __append(s) { if (s !== undefined && s !== null) __output += s }\\n';\n if (opts.outputFunctionName) {\n prepended += ' var ' + opts.outputFunctionName + ' = __append;' + '\\n';\n }\n if (opts.destructuredLocals && opts.destructuredLocals.length) {\n var destructuring = ' var __locals = (' + opts.localsName + ' || {}),\\n';\n for (var i = 0; i < opts.destructuredLocals.length; i++) {\n var name = opts.destructuredLocals[i];\n if (i > 0) {\n destructuring += ',\\n ';\n }\n destructuring += name + ' = __locals.' + name;\n }\n prepended += destructuring + ';\\n';\n }\n if (opts._with !== false) {\n prepended += ' with (' + opts.localsName + ' || {}) {' + '\\n';\n appended += ' }' + '\\n';\n }\n appended += ' return __output;' + '\\n';\n this.source = prepended + this.source + appended;\n }\n\n if (opts.compileDebug) {\n src = 'var __line = 1' + '\\n'\n + ' , __lines = ' + JSON.stringify(this.templateText) + '\\n'\n + ' , __filename = ' + sanitizedFilename + ';' + '\\n'\n + 'try {' + '\\n'\n + this.source\n + '} catch (e) {' + '\\n'\n + ' rethrow(e, __lines, __filename, __line, escapeFn);' + '\\n'\n + '}' + '\\n';\n }\n else {\n src = this.source;\n }\n\n if (opts.client) {\n src = 'escapeFn = escapeFn || ' + escapeFn.toString() + ';' + '\\n' + src;\n if (opts.compileDebug) {\n src = 'rethrow = rethrow || ' + rethrow.toString() + ';' + '\\n' + src;\n }\n }\n\n if (opts.strict) {\n src = '\"use strict\";\\n' + src;\n }\n if (opts.debug) {\n console.log(src);\n }\n if (opts.compileDebug && opts.filename) {\n src = src + '\\n'\n + '//# sourceURL=' + sanitizedFilename + '\\n';\n }\n\n try {\n if (opts.async) {\n // Have to use generated function for this, since in envs without support,\n // it breaks in parsing\n try {\n ctor = (new Function('return (async function(){}).constructor;'))();\n }\n catch(e) {\n if (e instanceof SyntaxError) {\n throw new Error('This environment does not support async/await');\n }\n else {\n throw e;\n }\n }\n }\n else {\n ctor = Function;\n }\n fn = new ctor(opts.localsName + ', escapeFn, include, rethrow', src);\n }\n catch(e) {\n // istanbul ignore else\n if (e instanceof SyntaxError) {\n if (opts.filename) {\n e.message += ' in ' + opts.filename;\n }\n e.message += ' while compiling ejs\\n\\n';\n e.message += 'If the above error is not helpful, you may want to try EJS-Lint:\\n';\n e.message += 'https://github.com/RyanZim/EJS-Lint';\n if (!opts.async) {\n e.message += '\\n';\n e.message += 'Or, if you meant to create an async function, pass `async: true` as an option.';\n }\n }\n throw e;\n }\n\n // Return a callable function which will execute the function\n // created by the source-code, with the passed data as locals\n // Adds a local `include` function which allows full recursive include\n var returnedFn = opts.client ? fn : function anonymous(data) {\n var include = function (path, includeData) {\n var d = utils.shallowCopy({}, data);\n if (includeData) {\n d = utils.shallowCopy(d, includeData);\n }\n return includeFile(path, opts)(d);\n };\n return fn.apply(opts.context, [data || {}, escapeFn, include, rethrow]);\n };\n if (opts.filename && typeof Object.defineProperty === 'function') {\n var filename = opts.filename;\n var basename = path.basename(filename, path.extname(filename));\n try {\n Object.defineProperty(returnedFn, 'name', {\n value: basename,\n writable: false,\n enumerable: false,\n configurable: true\n });\n } catch (e) {/* ignore */}\n }\n return returnedFn;\n },\n\n generateSource: function () {\n var opts = this.opts;\n\n if (opts.rmWhitespace) {\n // Have to use two separate replace here as `^` and `$` operators don't\n // work well with `\\r` and empty lines don't work well with the `m` flag.\n this.templateText =\n this.templateText.replace(/[\\r\\n]+/g, '\\n').replace(/^\\s+|\\s+$/gm, '');\n }\n\n // Slurp spaces and tabs before <%_ and after _%>\n this.templateText =\n this.templateText.replace(/[ \\t]*<%_/gm, '<%_').replace(/_%>[ \\t]*/gm, '_%>');\n\n var self = this;\n var matches = this.parseTemplateText();\n var d = this.opts.delimiter;\n var o = this.opts.openDelimiter;\n var c = this.opts.closeDelimiter;\n\n if (matches && matches.length) {\n matches.forEach(function (line, index) {\n var closing;\n // If this is an opening tag, check for closing tags\n // FIXME: May end up with some false positives here\n // Better to store modes as k/v with openDelimiter + delimiter as key\n // Then this can simply check against the map\n if ( line.indexOf(o + d) === 0 // If it is a tag\n && line.indexOf(o + d + d) !== 0) { // and is not escaped\n closing = matches[index + 2];\n if (!(closing == d + c || closing == '-' + d + c || closing == '_' + d + c)) {\n throw new Error('Could not find matching close tag for \"' + line + '\".');\n }\n }\n self.scanLine(line);\n });\n }\n\n },\n\n parseTemplateText: function () {\n var str = this.templateText;\n var pat = this.regex;\n var result = pat.exec(str);\n var arr = [];\n var firstPos;\n\n while (result) {\n firstPos = result.index;\n\n if (firstPos !== 0) {\n arr.push(str.substring(0, firstPos));\n str = str.slice(firstPos);\n }\n\n arr.push(result[0]);\n str = str.slice(result[0].length);\n result = pat.exec(str);\n }\n\n if (str) {\n arr.push(str);\n }\n\n return arr;\n },\n\n _addOutput: function (line) {\n if (this.truncate) {\n // Only replace single leading linebreak in the line after\n // -%> tag -- this is the single, trailing linebreak\n // after the tag that the truncation mode replaces\n // Handle Win / Unix / old Mac linebreaks -- do the \\r\\n\n // combo first in the regex-or\n line = line.replace(/^(?:\\r\\n|\\r|\\n)/, '');\n this.truncate = false;\n }\n if (!line) {\n return line;\n }\n\n // Preserve literal slashes\n line = line.replace(/\\\\/g, '\\\\\\\\');\n\n // Convert linebreaks\n line = line.replace(/\\n/g, '\\\\n');\n line = line.replace(/\\r/g, '\\\\r');\n\n // Escape double-quotes\n // - this will be the delimiter during execution\n line = line.replace(/\"/g, '\\\\\"');\n this.source += ' ; __append(\"' + line + '\")' + '\\n';\n },\n\n scanLine: function (line) {\n var self = this;\n var d = this.opts.delimiter;\n var o = this.opts.openDelimiter;\n var c = this.opts.closeDelimiter;\n var newLineCount = 0;\n\n newLineCount = (line.split('\\n').length - 1);\n\n switch (line) {\n case o + d:\n case o + d + '_':\n this.mode = Template.modes.EVAL;\n break;\n case o + d + '=':\n this.mode = Template.modes.ESCAPED;\n break;\n case o + d + '-':\n this.mode = Template.modes.RAW;\n break;\n case o + d + '#':\n this.mode = Template.modes.COMMENT;\n break;\n case o + d + d:\n this.mode = Template.modes.LITERAL;\n this.source += ' ; __append(\"' + line.replace(o + d + d, o + d) + '\")' + '\\n';\n break;\n case d + d + c:\n this.mode = Template.modes.LITERAL;\n this.source += ' ; __append(\"' + line.replace(d + d + c, d + c) + '\")' + '\\n';\n break;\n case d + c:\n case '-' + d + c:\n case '_' + d + c:\n if (this.mode == Template.modes.LITERAL) {\n this._addOutput(line);\n }\n\n this.mode = null;\n this.truncate = line.indexOf('-') === 0 || line.indexOf('_') === 0;\n break;\n default:\n // In script mode, depends on type of tag\n if (this.mode) {\n // If '//' is found without a line break, add a line break.\n switch (this.mode) {\n case Template.modes.EVAL:\n case Template.modes.ESCAPED:\n case Template.modes.RAW:\n if (line.lastIndexOf('//') > line.lastIndexOf('\\n')) {\n line += '\\n';\n }\n }\n switch (this.mode) {\n // Just executing code\n case Template.modes.EVAL:\n this.source += ' ; ' + line + '\\n';\n break;\n // Exec, esc, and output\n case Template.modes.ESCAPED:\n this.source += ' ; __append(escapeFn(' + stripSemi(line) + '))' + '\\n';\n break;\n // Exec and output\n case Template.modes.RAW:\n this.source += ' ; __append(' + stripSemi(line) + ')' + '\\n';\n break;\n case Template.modes.COMMENT:\n // Do nothing\n break;\n // Literal <%% mode, append as raw output\n case Template.modes.LITERAL:\n this._addOutput(line);\n break;\n }\n }\n // In string mode, just add the output\n else {\n this._addOutput(line);\n }\n }\n\n if (self.opts.compileDebug && newLineCount) {\n this.currentLine += newLineCount;\n this.source += ' ; __line = ' + this.currentLine + '\\n';\n }\n }\n};\n\n/**\n * Escape characters reserved in XML.\n *\n * This is simply an export of {@link module:utils.escapeXML}.\n *\n * If `markup` is `undefined` or `null`, the empty string is returned.\n *\n * @param {String} markup Input string\n * @return {String} Escaped string\n * @public\n * @func\n * */\nexports.escapeXML = utils.escapeXML;\n\n/**\n * Express.js support.\n *\n * This is an alias for {@link module:ejs.renderFile}, in order to support\n * Express.js out-of-the-box.\n *\n * @func\n */\n\nexports.__express = exports.renderFile;\n\n/**\n * Version of EJS.\n *\n * @readonly\n * @type {String}\n * @public\n */\n\nexports.VERSION = _VERSION_STRING;\n\n/**\n * Name for detection of EJS.\n *\n * @readonly\n * @type {String}\n * @public\n */\n\nexports.name = _NAME;\n\n/* istanbul ignore if */\nif (typeof window != 'undefined') {\n window.ejs = exports;\n}\n"],"sourceRoot":""}