From 29e258c131b297382bd097249bec94b628923631 Mon Sep 17 00:00:00 2001 From: sisong Date: Sun, 4 Apr 2021 10:42:42 +0800 Subject: [PATCH 01/27] init lib hdiffpatch,add sub modules --- .gitmodules | 6 ++++++ android/jni/HDiffPatch | 1 + android/jni/lzma | 1 + 3 files changed, 8 insertions(+) create mode 100644 .gitmodules create mode 160000 android/jni/HDiffPatch create mode 160000 android/jni/lzma diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..1bcca5b --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "android/jni/lzma"] + path = android/jni/lzma + url = https://github.com/sisong/lzma.git +[submodule "android/jni/HDiffPatch"] + path = android/jni/HDiffPatch + url = https://github.com/sisong/HDiffPatch.git diff --git a/android/jni/HDiffPatch b/android/jni/HDiffPatch new file mode 160000 index 0000000..eb959d6 --- /dev/null +++ b/android/jni/HDiffPatch @@ -0,0 +1 @@ +Subproject commit eb959d671cd94281ca763d609f638b5d248df3a3 diff --git a/android/jni/lzma b/android/jni/lzma new file mode 160000 index 0000000..c80bb80 --- /dev/null +++ b/android/jni/lzma @@ -0,0 +1 @@ +Subproject commit c80bb80bbbac61da7ec02d12fb497851b1f59635 From 69aed18b78aa0fe29d6e7ca9ddc28a695d1e67e8 Mon Sep 17 00:00:00 2001 From: sisong Date: Sun, 4 Apr 2021 12:17:57 +0800 Subject: [PATCH 02/27] add hpatch interface code --- android/jni/DownloadTask.c | 7 +++++++ .../cn_reactnative_modules_update_DownloadTask.h | 8 ++++++++ android/jni/hpatch.c | 13 +++++++++++++ android/jni/hpatch.h | 13 +++++++++++++ .../cn/reactnative/modules/update/DownloadTask.java | 3 ++- 5 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 android/jni/hpatch.c create mode 100644 android/jni/hpatch.h diff --git a/android/jni/DownloadTask.c b/android/jni/DownloadTask.c index 32491f8..4644da9 100644 --- a/android/jni/DownloadTask.c +++ b/android/jni/DownloadTask.c @@ -108,4 +108,11 @@ JNIEXPORT jbyteArray JNICALL Java_cn_reactnative_modules_update_DownloadTask_bsd (*env)->ReleaseByteArrayElements(env, origin, originPtr, JNI_ABORT); (*env)->ReleaseByteArrayElements(env, patch, patchPtr, JNI_ABORT); return ret; +} + + +JNIEXPORT jbyteArray JNICALL Java_cn_reactnative_modules_update_DownloadTask_hdiffPatch + (JNIEnv *env, jobject self, jbyteArray origin, jbyteArray patch){ + //todo: + return 0; } \ No newline at end of file diff --git a/android/jni/cn_reactnative_modules_update_DownloadTask.h b/android/jni/cn_reactnative_modules_update_DownloadTask.h index fc08c72..0da7e9e 100644 --- a/android/jni/cn_reactnative_modules_update_DownloadTask.h +++ b/android/jni/cn_reactnative_modules_update_DownloadTask.h @@ -15,6 +15,14 @@ extern "C" { JNIEXPORT jbyteArray JNICALL Java_cn_reactnative_modules_update_DownloadTask_bsdiffPatch (JNIEnv *, jclass, jbyteArray, jbyteArray); +/* + * Class: cn_reactnative_modules_update_DownloadTask + * Method: hdiffPatch + * Signature: ([B[B)[B + */ +JNIEXPORT jbyteArray JNICALL Java_cn_reactnative_modules_update_DownloadTask_hdiffPatch + (JNIEnv *, jclass, jbyteArray, jbyteArray); + #ifdef __cplusplus } #endif diff --git a/android/jni/hpatch.c b/android/jni/hpatch.c new file mode 100644 index 0000000..0e34c9c --- /dev/null +++ b/android/jni/hpatch.c @@ -0,0 +1,13 @@ +// hpatch.c +// Copyright 2021 housisong, All rights reserved + +int hpatch_by_mem(const uint8_t* old,size_t oldsize, uint8_t* newBuf,size_t newsize, + const uint8_t* pat,size_t patsize){ + //todo: + return -1; +} + +int hpatch_by_file(const char* oldfile, const char* newfile, const char* patchfile){ + //todo: + return -1; +} \ No newline at end of file diff --git a/android/jni/hpatch.h b/android/jni/hpatch.h new file mode 100644 index 0000000..377cb23 --- /dev/null +++ b/android/jni/hpatch.h @@ -0,0 +1,13 @@ +// hpatch.h +// import HDiffPatch, support patchfile created by "hdiffz -SD -C-lzma2 oldfile newfile patchfile" +// Copyright 2021 housisong, All rights reserved + +#ifndef HDIFFPATCH_PATCH_H +#define HDIFFPATCH_PATCH_H +# include //for uint8_t + +int hpatch_by_mem(const uint8_t* old,size_t oldsize, uint8_t* newBuf,size_t newsize, + const uint8_t* pat,size_t patsize); +int hpatch_by_file(const char* oldfile, const char* newfile, const char* patchfile); + +#endif //HDIFFPATCH_PATCH_H \ No newline at end of file diff --git a/android/src/main/java/cn/reactnative/modules/update/DownloadTask.java b/android/src/main/java/cn/reactnative/modules/update/DownloadTask.java index 9307884..12a049b 100644 --- a/android/src/main/java/cn/reactnative/modules/update/DownloadTask.java +++ b/android/src/main/java/cn/reactnative/modules/update/DownloadTask.java @@ -134,9 +134,10 @@ class DownloadTask extends AsyncTask { } - byte[] buffer = new byte[1024]; + byte[] buffer = new byte[1024*4]; private static native byte[] bsdiffPatch(byte[] origin, byte[] patch); + private static native byte[] hdiffPatch(byte[] origin, byte[] patch); private void unzipToFile(ZipInputStream zis, File fmd) throws IOException { int count; From 7782025e388044bdb31e950b1d9ecc1d8d3040eb Mon Sep 17 00:00:00 2001 From: sisong Date: Sun, 4 Apr 2021 15:50:40 +0800 Subject: [PATCH 03/27] jni hdiffPatch() ok --- android/jni/DownloadTask.c | 49 ++++++++++++++++++++++++++++++++++++-- android/jni/hpatch.c | 13 +++++++++- android/jni/hpatch.h | 7 +++++- 3 files changed, 65 insertions(+), 4 deletions(-) diff --git a/android/jni/DownloadTask.c b/android/jni/DownloadTask.c index 4644da9..4dfebc2 100644 --- a/android/jni/DownloadTask.c +++ b/android/jni/DownloadTask.c @@ -6,6 +6,7 @@ #include #include "bzlib.h" #include "bspatch.h" +#include "hpatch.h" #include static int64_t offtin(uint8_t *buf) @@ -111,8 +112,52 @@ JNIEXPORT jbyteArray JNICALL Java_cn_reactnative_modules_update_DownloadTask_bsd } +#define _check(v,errInfo) do{ if (!(v)) { _isError=hpatch_TRUE; _errInfo=errInfo; goto _clear; } }while(0) + JNIEXPORT jbyteArray JNICALL Java_cn_reactnative_modules_update_DownloadTask_hdiffPatch (JNIEnv *env, jobject self, jbyteArray origin, jbyteArray patch){ - //todo: - return 0; + hpatch_BOOL _isError=hpatch_FALSE; + const char* _errInfo=""; + + jbyte* originPtr = (*env)->GetByteArrayElements(env, origin, NULL); + size_t originLength = (*env)->GetArrayLength(env, origin); + jbyte* patchPtr = (*env)->GetByteArrayElements(env, patch, NULL); + size_t patchLength = (*env)->GetArrayLength(env, patch); + jbyteArray ret = NULL; + jbyte* outPtr = NULL; + size_t newsize = 0; + hpatch_singleCompressedDiffInfo patInfo; + + _check(((originLength==0)||originPtr) && patchPtr && (patchLength>0),"Corrupt patch"); + _check(0!=hpatch_getInfo_by_mem(&patInfo,patchPtr,patchLength),"Error info in hpatch"); + _check(originLength==patInfo.oldDataSize,"Error oldDataSize in hpatch"); + newsize=(size_t)patInfo.newDataSize; + if (sizeof(size_t)!=sizeof(hpatch_StreamPos_t)) + _check(newsize==patInfo.newDataSize,"Error newDataSize in hpatch"); + + ret = (*env)->NewByteArray(env,newsize); + _check(ret,"Error JNIEnv::NewByteArray()"); + if (newsize>0) { + outPtr = (*env)->GetByteArrayElements(env, ret, NULL); + _check(outPtr,"Corrupt JNIEnv::GetByteArrayElements"); + } + + _check(0!=hpatch_by_mem(originPtr,originLength,outPtr,newsize, + pat,patsize,&patInfo),"hpacth"); + +_clear: + if (outPtr) (*env)->ReleaseByteArrayElements(env, ret, outPtr, (_isError?JNI_ABORT:0)); + if (originPtr) (*env)->ReleaseByteArrayElements(env, origin, originPtr, JNI_ABORT); + if (patchPtr) (*env)->ReleaseByteArrayElements(env, patch, patchPtr, JNI_ABORT); + if (_isError){ + jclass newExcCls = NULL; + if (ret){ + (*env)->DeleteLocalRef(env, ret); + ret = NULL; + } + newExcCls = (*env)->FindClass(env, "java/lang/Error"); + if (newExcCls != NULL) /* Unable to find the new exception class, give up. */ + (*env)->ThrowNew(env, newExcCls, _errInfo); + } + return ret; } \ No newline at end of file diff --git a/android/jni/hpatch.c b/android/jni/hpatch.c index 0e34c9c..3d7d646 100644 --- a/android/jni/hpatch.c +++ b/android/jni/hpatch.c @@ -1,8 +1,19 @@ // hpatch.c // Copyright 2021 housisong, All rights reserved +#include "hpatch.h" +#include "HDiffPatch/libHDiffPatch/HPatch/patch.h" + +int hpatch_getInfo_by_mem(struct hpatch_singleCompressedDiffInfo* out_patinfo, + const uint8_t* pat,size_t patsize){ + hpatch_TStreamInput patStream; + mem_as_hStreamInput(&patStream,pat,pat+patsize); + if (!getSingleCompressedDiffInfo(out_patinfo,&patStream,0)) + return -1;//data error; + return 0; //ok +} int hpatch_by_mem(const uint8_t* old,size_t oldsize, uint8_t* newBuf,size_t newsize, - const uint8_t* pat,size_t patsize){ + const uint8_t* pat,size_t patsize,const struct hpatch_singleCompressedDiffInfo* patInfo){ //todo: return -1; } diff --git a/android/jni/hpatch.h b/android/jni/hpatch.h index 377cb23..e48571e 100644 --- a/android/jni/hpatch.h +++ b/android/jni/hpatch.h @@ -6,8 +6,13 @@ #define HDIFFPATCH_PATCH_H # include //for uint8_t +struct hpatch_singleCompressedDiffInfo; +int hpatch_getInfo_by_mem(struct hpatch_singleCompressedDiffInfo* out_patinfo, + const uint8_t* pat,size_t patsize); + +//patInfo can NULL int hpatch_by_mem(const uint8_t* old,size_t oldsize, uint8_t* newBuf,size_t newsize, - const uint8_t* pat,size_t patsize); + const uint8_t* pat,size_t patsize,const struct hpatch_singleCompressedDiffInfo* patInfo); int hpatch_by_file(const char* oldfile, const char* newfile, const char* patchfile); #endif //HDIFFPATCH_PATCH_H \ No newline at end of file From 6f222fcc997fc115f7f01dd10f4bcb2bf0c8055b Mon Sep 17 00:00:00 2001 From: sisong Date: Sun, 4 Apr 2021 16:02:24 +0800 Subject: [PATCH 04/27] hpatch_by_mem() ok --- android/jni/hpatch.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/android/jni/hpatch.c b/android/jni/hpatch.c index 3d7d646..c8878a3 100644 --- a/android/jni/hpatch.c +++ b/android/jni/hpatch.c @@ -2,20 +2,37 @@ // Copyright 2021 housisong, All rights reserved #include "hpatch.h" #include "HDiffPatch/libHDiffPatch/HPatch/patch.h" +#include "HDiffPatch/file_for_patch.h" + +enum { + kHPatch_ok = 0, + kHPatch_error_info =-1, +}; int hpatch_getInfo_by_mem(struct hpatch_singleCompressedDiffInfo* out_patinfo, const uint8_t* pat,size_t patsize){ hpatch_TStreamInput patStream; mem_as_hStreamInput(&patStream,pat,pat+patsize); if (!getSingleCompressedDiffInfo(out_patinfo,&patStream,0)) - return -1;//data error; - return 0; //ok + return kHPatch_error_info;//data error; + return kHPatch_ok; //ok } -int hpatch_by_mem(const uint8_t* old,size_t oldsize, uint8_t* newBuf,size_t newsize, + +static int hpatch_by_stream(const hpatch_TStreamInput* old,const hpatch_TStreamInput* pat, + const hpatch_TStreamOutput* out_new,const hpatch_singleCompressedDiffInfo* patInfo){ +// +} + +int hpatch_by_mem(const uint8_t* old,size_t oldsize,uint8_t* newBuf,size_t newsize, const uint8_t* pat,size_t patsize,const struct hpatch_singleCompressedDiffInfo* patInfo){ - //todo: - return -1; + hpatch_TStreamInput oldStream; + hpatch_TStreamInput patStream; + hpatch_TStreamOutput newStream; + mem_as_hStreamInput(&oldStream,old,old+oldsize); + mem_as_hStreamInput(&patStream,pat,pat+patsize); + mem_as_hStreamOutput(&newStream,newBuf,newBuf+newsize); + return hpatch_by_stream(&oldStream,&patStream,&newStream,patInfo); } int hpatch_by_file(const char* oldfile, const char* newfile, const char* patchfile){ From 8678a748fd5fb1bac1995994b538cbfeddaadf9e Mon Sep 17 00:00:00 2001 From: sisong Date: Sun, 4 Apr 2021 17:03:39 +0800 Subject: [PATCH 05/27] hpatch_by_file() ok --- android/jni/hpatch.c | 59 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 10 deletions(-) diff --git a/android/jni/hpatch.c b/android/jni/hpatch.c index c8878a3..5d4b2a0 100644 --- a/android/jni/hpatch.c +++ b/android/jni/hpatch.c @@ -5,10 +5,22 @@ #include "HDiffPatch/file_for_patch.h" enum { - kHPatch_ok = 0, - kHPatch_error_info =-1, + kHPatch_ok = 0, + kHPatch_error_info =-1, + kHPatch_error_old_fopen =-2, + kHPatch_error_old_fread =-3, + kHPatch_error_old_fclose =-4, + kHPatch_error_pat_fopen =-5, + kHPatch_error_pat_fread =-6, + kHPatch_error_pat_fclose =-7, + kHPatch_error_new_fopen =-8, + kHPatch_error_new_fwrite =-9, + kHPatch_error_new_fclose =-10, }; +#define _check(v,errorType) do{ \ + if (!(v)){ if (result==kHPatch_ok) result=errorType; if (!_isInClear){ goto _clear; }; } }while(0) + int hpatch_getInfo_by_mem(struct hpatch_singleCompressedDiffInfo* out_patinfo, const uint8_t* pat,size_t patsize){ hpatch_TStreamInput patStream; @@ -19,23 +31,50 @@ int hpatch_getInfo_by_mem(struct hpatch_singleCompressedDiffInfo* out_patinfo, } -static int hpatch_by_stream(const hpatch_TStreamInput* old,const hpatch_TStreamInput* pat, - const hpatch_TStreamOutput* out_new,const hpatch_singleCompressedDiffInfo* patInfo){ -// +static int hpatch_by_stream(const hpatch_TStreamInput* old,hpatch_BOOL isLoadOldToMem,const hpatch_TStreamInput* pat, + hpatch_TStreamOutput* out_new,const hpatch_singleCompressedDiffInfo* patInfo){ +//todo: + return -1; } int hpatch_by_mem(const uint8_t* old,size_t oldsize,uint8_t* newBuf,size_t newsize, - const uint8_t* pat,size_t patsize,const struct hpatch_singleCompressedDiffInfo* patInfo){ + const uint8_t* pat,size_t patsize,const struct hpatch_singleCompressedDiffInfo* patInfo){ hpatch_TStreamInput oldStream; hpatch_TStreamInput patStream; hpatch_TStreamOutput newStream; mem_as_hStreamInput(&oldStream,old,old+oldsize); mem_as_hStreamInput(&patStream,pat,pat+patsize); mem_as_hStreamOutput(&newStream,newBuf,newBuf+newsize); - return hpatch_by_stream(&oldStream,&patStream,&newStream,patInfo); + return hpatch_by_stream(&oldStream,hpatch_FALSE,&patStream,&newStream,patInfo); } int hpatch_by_file(const char* oldfile, const char* newfile, const char* patchfile){ - //todo: - return -1; -} \ No newline at end of file + int result=kHPatch_ok; + int _isInClear=hpatch_FALSE; + int patch_result; + hpatch_TFileStreamInput oldStream; + hpatch_TFileStreamInput patStream; + hpatch_TFileStreamOutput newStream; + hpatch_TFileStreamInput_init(&oldStream); + hpatch_TFileStreamInput_init(&patStream); + hpatch_TFileStreamOutput_init(&newStream); + + _check(hpatch_TFileStreamInput_open(&oldStream,oldfile),kHPatch_error_old_fopen); + _check(hpatch_TFileStreamInput_open(&patStream,patchfile),kHPatch_error_pat_fopen); + _check(hpatch_TFileStreamOutput_open(&newStream,newfile,~(hpatch_StreamPos_t)0),kHPatch_error_new_fopen); + + patch_result=hpatch_by_stream(&oldStream.base,hpatch_TRUE,&patStream.base,&newStream.base,0); + if (patch_result!=kHPatch_ok){ + _check(!oldStream.fileError,kHPatch_error_old_fread); + _check(!patStream.fileError,kHPatch_error_pat_fread); + _check(!newStream.fileError,kHPatch_error_new_fwrite); + _check(hpatch_FALSE,patch_result); + } + +_clear: + _isInClear=hpatch_TRUE; + _check(hpatch_TFileStreamInput_close(&oldStream),kHPatch_error_old_fclose); + _check(hpatch_TFileStreamInput_close(&patStream),kHPatch_error_pat_fclose); + _check(hpatch_TFileStreamOutput_close(&newStream),kHPatch_error_new_fclose); + return result; +} From e6a88555021eed83fbba7b3621f982bd5caa2386 Mon Sep 17 00:00:00 2001 From: sisong Date: Mon, 5 Apr 2021 10:55:42 +0800 Subject: [PATCH 06/27] hpatch_by_stream() ok --- android/jni/hpatch.c | 101 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 87 insertions(+), 14 deletions(-) diff --git a/android/jni/hpatch.c b/android/jni/hpatch.c index 5d4b2a0..8675a4a 100644 --- a/android/jni/hpatch.c +++ b/android/jni/hpatch.c @@ -4,18 +4,31 @@ #include "HDiffPatch/libHDiffPatch/HPatch/patch.h" #include "HDiffPatch/file_for_patch.h" +//#define _CompressPlugin_zlib +//#define _CompressPlugin_bz2 +//#define _CompressPlugin_lzma +#define _CompressPlugin_lzma2 +#include "HDiffPatch/decompress_plugin_demo.h" + +#define kMaxLoadMemOldSize ((1<<20)*8) + enum { kHPatch_ok = 0, - kHPatch_error_info =-1, - kHPatch_error_old_fopen =-2, - kHPatch_error_old_fread =-3, - kHPatch_error_old_fclose =-4, - kHPatch_error_pat_fopen =-5, - kHPatch_error_pat_fread =-6, - kHPatch_error_pat_fclose =-7, - kHPatch_error_new_fopen =-8, - kHPatch_error_new_fwrite =-9, - kHPatch_error_new_fclose =-10, + kHPatch_error_malloc =-1, + kHPatch_error_info =-2, + kHPatch_error_compressType =-3, + kHPatch_error_patch =-4, + kHPatch_error_old_fopen =-5, + kHPatch_error_old_fread =-6, + kHPatch_error_old_fclose =-7, + kHPatch_error_pat_fopen =-8, + kHPatch_error_pat_fread =-9, + kHPatch_error_pat_fclose =-10, + kHPatch_error_new_fopen =-11, + kHPatch_error_new_fwrite =-12, + kHPatch_error_new_fclose =-13, + kHPatch_error_old_size =-14, + kHPatch_error_new_size =-15, }; #define _check(v,errorType) do{ \ @@ -30,11 +43,71 @@ int hpatch_getInfo_by_mem(struct hpatch_singleCompressedDiffInfo* out_patinfo, return kHPatch_ok; //ok } - -static int hpatch_by_stream(const hpatch_TStreamInput* old,hpatch_BOOL isLoadOldToMem,const hpatch_TStreamInput* pat, +static hpatch_TDecompress* getDecompressPlugin(const char* compressType){ +#ifdef _CompressPlugin_zlib + if (zlibDecompressPlugin.is_can_open(compressType)) + return &zlibDecompressPlugin; +#endif +#ifdef _CompressPlugin_bz2 + if (bz2DecompressPlugin.is_can_open(compressType)) + return &bz2DecompressPlugin; +#endif +#ifdef _CompressPlugin_lzma + if (lzmaDecompressPlugin.is_can_open(compressType)) + return &lzmaDecompressPlugin; +#endif +#ifdef _CompressPlugin_lzma2 + if (lzma2DecompressPlugin.is_can_open(compressType)) + return &lzma2DecompressPlugin; +#endif + return 0; +} +static int hpatch_by_stream(const hpatch_TStreamInput* old,hpatch_BOOL isLoadOldAllToMem,const hpatch_TStreamInput* pat, hpatch_TStreamOutput* out_new,const hpatch_singleCompressedDiffInfo* patInfo){ -//todo: - return -1; + int result=kHPatch_ok; + int _isInClear=hpatch_FALSE; + hpatch_TDecompress* decompressPlugin=0; + uint8_t* temp_cache=0; + size_t temp_cache_size; + hpatch_singleCompressedDiffInfo _patinfo; + hpatch_TStreamInput _old; + {// info + if (!patInfo){ + _check(getSingleCompressedDiffInfo(&_patinfo,pat,0),kHPatch_error_info); + patInfo=&_patinfo; + } + _check(old->streamSize==patInfo->oldDataSize,kHPatch_error_old_size); + _check(out_new->streamSize>=patInfo->newDataSize,kHPatch_error_new_size); + out_new->streamSize=patInfo->newDataSize; + if (strlen(patInfo->compressType)>0){ + decompressPlugin=getDecompressPlugin(patInfo->compressType); + _check(decompressPlugin,kHPatch_error_compressType); + } + } + {// mem + size_t mem_size; + size_t oldSize=(size_t)old->streamSize; + isLoadOldAllToMem=isLoadOldAllToMem&&(old->streamSize<=kMaxLoadMemOldSize); + temp_cache_size=patInfo->stepMemSize+hpatch_kFileIOBufBetterSize*3; + mem_size=temp_cache_size+(isLoadOldAllToMem?oldSize:0); + temp_cache=malloc(mem_size); + _check(temp_cache,kHPatch_error_malloc); + if (isLoadOldAllToMem){//load old to mem + uint8_t* oldMem=temp_cache+temp_cache_size; + _check(old->read(old,0,oldMem,oldMem+oldSize),kHPatch_error_old_fread); + mem_as_hStreamInput(&_old,oldMem,oldMem+oldSize); + old=&_old; + } + } + + _check(patch_single_compressed_diff(&out_new,old,pat,patInfo->diffDataPos, + patInfo->uncompressedSize,decompressPlugin,patInfo->coverCount, + patInfo->stepMemSize,temp_cache,temp_cache+temp_cache_size),kHPatch_error_patch); + +_clear: + _isInClear=hpatch_TRUE; + if (temp_cache){ free(temp_cache); temp_cache=0; } + return result; } int hpatch_by_mem(const uint8_t* old,size_t oldsize,uint8_t* newBuf,size_t newsize, From 9d9fbd3315936edd0fb8721090e6cf7f16b51b17 Mon Sep 17 00:00:00 2001 From: sisong Date: Mon, 5 Apr 2021 11:32:01 +0800 Subject: [PATCH 07/27] build .so files ok --- android/jni/Android.mk | 11 ++++++++++- android/jni/DownloadTask.c | 14 ++++++++------ android/jni/hpatch.c | 8 +++++--- android/jni/hpatch.h | 6 +++--- 4 files changed, 26 insertions(+), 13 deletions(-) diff --git a/android/jni/Android.mk b/android/jni/Android.mk index 6871e9f..9970cd6 100644 --- a/android/jni/Android.mk +++ b/android/jni/Android.mk @@ -3,6 +3,14 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := rnupdate + +Hdp_Files := \ + hpatch.c \ + HDiffPatch/libHDiffPatch/HPatch/patch.c \ + HDiffPatch/file_for_patch.c \ + lzma/C/LzmaDec.c \ + lzma/C/Lzma2Dec.c + LOCAL_SRC_FILES := \ DownloadTask.c \ blocksort.c \ @@ -12,6 +20,7 @@ LOCAL_SRC_FILES := \ compress.c \ decompress.c \ huffman.c \ - randtable.c + randtable.c \ + $(Hdp_Files) include $(BUILD_SHARED_LIBRARY) \ No newline at end of file diff --git a/android/jni/DownloadTask.c b/android/jni/DownloadTask.c index 4dfebc2..cdbdbf4 100644 --- a/android/jni/DownloadTask.c +++ b/android/jni/DownloadTask.c @@ -6,9 +6,11 @@ #include #include "bzlib.h" #include "bspatch.h" -#include "hpatch.h" +#include //for memcmp #include +#include "hpatch.h" + static int64_t offtin(uint8_t *buf) { int64_t y; @@ -129,7 +131,7 @@ JNIEXPORT jbyteArray JNICALL Java_cn_reactnative_modules_update_DownloadTask_hdi hpatch_singleCompressedDiffInfo patInfo; _check(((originLength==0)||originPtr) && patchPtr && (patchLength>0),"Corrupt patch"); - _check(0!=hpatch_getInfo_by_mem(&patInfo,patchPtr,patchLength),"Error info in hpatch"); + _check(0!=hpatch_getInfo_by_mem(&patInfo,(const uint8_t*)patchPtr,patchLength),"Error info in hpatch"); _check(originLength==patInfo.oldDataSize,"Error oldDataSize in hpatch"); newsize=(size_t)patInfo.newDataSize; if (sizeof(size_t)!=sizeof(hpatch_StreamPos_t)) @@ -142,8 +144,8 @@ JNIEXPORT jbyteArray JNICALL Java_cn_reactnative_modules_update_DownloadTask_hdi _check(outPtr,"Corrupt JNIEnv::GetByteArrayElements"); } - _check(0!=hpatch_by_mem(originPtr,originLength,outPtr,newsize, - pat,patsize,&patInfo),"hpacth"); + _check(0!=hpatch_by_mem((const uint8_t*)originPtr,originLength,(uint8_t*)outPtr,newsize, + (const uint8_t*)patchPtr,patchLength,&patInfo),"hpacth"); _clear: if (outPtr) (*env)->ReleaseByteArrayElements(env, ret, outPtr, (_isError?JNI_ABORT:0)); @@ -156,8 +158,8 @@ _clear: ret = NULL; } newExcCls = (*env)->FindClass(env, "java/lang/Error"); - if (newExcCls != NULL) /* Unable to find the new exception class, give up. */ + if (newExcCls != NULL) // Unable to find the new exception class, give up. (*env)->ThrowNew(env, newExcCls, _errInfo); } return ret; -} \ No newline at end of file +} diff --git a/android/jni/hpatch.c b/android/jni/hpatch.c index 8675a4a..5c0ccd6 100644 --- a/android/jni/hpatch.c +++ b/android/jni/hpatch.c @@ -8,6 +8,8 @@ //#define _CompressPlugin_bz2 //#define _CompressPlugin_lzma #define _CompressPlugin_lzma2 +#define _IsNeedIncludeDefaultCompressHead 0 +#include "lzma/C/Lzma2Dec.h" #include "HDiffPatch/decompress_plugin_demo.h" #define kMaxLoadMemOldSize ((1<<20)*8) @@ -34,7 +36,7 @@ enum { #define _check(v,errorType) do{ \ if (!(v)){ if (result==kHPatch_ok) result=errorType; if (!_isInClear){ goto _clear; }; } }while(0) -int hpatch_getInfo_by_mem(struct hpatch_singleCompressedDiffInfo* out_patinfo, +int hpatch_getInfo_by_mem(hpatch_singleCompressedDiffInfo* out_patinfo, const uint8_t* pat,size_t patsize){ hpatch_TStreamInput patStream; mem_as_hStreamInput(&patStream,pat,pat+patsize); @@ -100,7 +102,7 @@ static int hpatch_by_stream(const hpatch_TStreamInput* old,hpatch_BOOL isLoadOld } } - _check(patch_single_compressed_diff(&out_new,old,pat,patInfo->diffDataPos, + _check(patch_single_compressed_diff(out_new,old,pat,patInfo->diffDataPos, patInfo->uncompressedSize,decompressPlugin,patInfo->coverCount, patInfo->stepMemSize,temp_cache,temp_cache+temp_cache_size),kHPatch_error_patch); @@ -111,7 +113,7 @@ _clear: } int hpatch_by_mem(const uint8_t* old,size_t oldsize,uint8_t* newBuf,size_t newsize, - const uint8_t* pat,size_t patsize,const struct hpatch_singleCompressedDiffInfo* patInfo){ + const uint8_t* pat,size_t patsize,const hpatch_singleCompressedDiffInfo* patInfo){ hpatch_TStreamInput oldStream; hpatch_TStreamInput patStream; hpatch_TStreamOutput newStream; diff --git a/android/jni/hpatch.h b/android/jni/hpatch.h index e48571e..9f4e4a3 100644 --- a/android/jni/hpatch.h +++ b/android/jni/hpatch.h @@ -5,14 +5,14 @@ #ifndef HDIFFPATCH_PATCH_H #define HDIFFPATCH_PATCH_H # include //for uint8_t +#include "HDiffPatch/libHDiffPatch/HPatch/patch_types.h" //for hpatch_singleCompressedDiffInfo -struct hpatch_singleCompressedDiffInfo; -int hpatch_getInfo_by_mem(struct hpatch_singleCompressedDiffInfo* out_patinfo, +int hpatch_getInfo_by_mem(hpatch_singleCompressedDiffInfo* out_patinfo, const uint8_t* pat,size_t patsize); //patInfo can NULL int hpatch_by_mem(const uint8_t* old,size_t oldsize, uint8_t* newBuf,size_t newsize, - const uint8_t* pat,size_t patsize,const struct hpatch_singleCompressedDiffInfo* patInfo); + const uint8_t* pat,size_t patsize,const hpatch_singleCompressedDiffInfo* patInfo); int hpatch_by_file(const char* oldfile, const char* newfile, const char* patchfile); #endif //HDIFFPATCH_PATCH_H \ No newline at end of file From 48e084980493003307fd5befa5f14aadab911293 Mon Sep 17 00:00:00 2001 From: sisong Date: Mon, 5 Apr 2021 13:40:38 +0800 Subject: [PATCH 08/27] recode hpatch result code --- android/jni/DownloadTask.c | 6 +++--- android/jni/hpatch.c | 22 ++-------------------- android/jni/hpatch.h | 20 ++++++++++++++++++++ 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/android/jni/DownloadTask.c b/android/jni/DownloadTask.c index cdbdbf4..d41793c 100644 --- a/android/jni/DownloadTask.c +++ b/android/jni/DownloadTask.c @@ -131,7 +131,7 @@ JNIEXPORT jbyteArray JNICALL Java_cn_reactnative_modules_update_DownloadTask_hdi hpatch_singleCompressedDiffInfo patInfo; _check(((originLength==0)||originPtr) && patchPtr && (patchLength>0),"Corrupt patch"); - _check(0!=hpatch_getInfo_by_mem(&patInfo,(const uint8_t*)patchPtr,patchLength),"Error info in hpatch"); + _check(kHPatch_ok!=hpatch_getInfo_by_mem(&patInfo,(const uint8_t*)patchPtr,patchLength),"Error info in hpatch"); _check(originLength==patInfo.oldDataSize,"Error oldDataSize in hpatch"); newsize=(size_t)patInfo.newDataSize; if (sizeof(size_t)!=sizeof(hpatch_StreamPos_t)) @@ -144,8 +144,8 @@ JNIEXPORT jbyteArray JNICALL Java_cn_reactnative_modules_update_DownloadTask_hdi _check(outPtr,"Corrupt JNIEnv::GetByteArrayElements"); } - _check(0!=hpatch_by_mem((const uint8_t*)originPtr,originLength,(uint8_t*)outPtr,newsize, - (const uint8_t*)patchPtr,patchLength,&patInfo),"hpacth"); + _check(kHPatch_ok!=hpatch_by_mem((const uint8_t*)originPtr,originLength,(uint8_t*)outPtr,newsize, + (const uint8_t*)patchPtr,patchLength,&patInfo),"hpacth"); _clear: if (outPtr) (*env)->ReleaseByteArrayElements(env, ret, outPtr, (_isError?JNI_ABORT:0)); diff --git a/android/jni/hpatch.c b/android/jni/hpatch.c index 5c0ccd6..5c3592d 100644 --- a/android/jni/hpatch.c +++ b/android/jni/hpatch.c @@ -6,33 +6,15 @@ //#define _CompressPlugin_zlib //#define _CompressPlugin_bz2 -//#define _CompressPlugin_lzma +#define _CompressPlugin_lzma #define _CompressPlugin_lzma2 #define _IsNeedIncludeDefaultCompressHead 0 +#include "lzma/C/LzmaDec.h" #include "lzma/C/Lzma2Dec.h" #include "HDiffPatch/decompress_plugin_demo.h" #define kMaxLoadMemOldSize ((1<<20)*8) -enum { - kHPatch_ok = 0, - kHPatch_error_malloc =-1, - kHPatch_error_info =-2, - kHPatch_error_compressType =-3, - kHPatch_error_patch =-4, - kHPatch_error_old_fopen =-5, - kHPatch_error_old_fread =-6, - kHPatch_error_old_fclose =-7, - kHPatch_error_pat_fopen =-8, - kHPatch_error_pat_fread =-9, - kHPatch_error_pat_fclose =-10, - kHPatch_error_new_fopen =-11, - kHPatch_error_new_fwrite =-12, - kHPatch_error_new_fclose =-13, - kHPatch_error_old_size =-14, - kHPatch_error_new_size =-15, -}; - #define _check(v,errorType) do{ \ if (!(v)){ if (result==kHPatch_ok) result=errorType; if (!_isInClear){ goto _clear; }; } }while(0) diff --git a/android/jni/hpatch.h b/android/jni/hpatch.h index 9f4e4a3..3046d02 100644 --- a/android/jni/hpatch.h +++ b/android/jni/hpatch.h @@ -7,6 +7,26 @@ # include //for uint8_t #include "HDiffPatch/libHDiffPatch/HPatch/patch_types.h" //for hpatch_singleCompressedDiffInfo +//result +enum { + kHPatch_ok = 0, + kHPatch_error_malloc =-1, + kHPatch_error_info =-2, + kHPatch_error_compressType =-3, + kHPatch_error_patch =-4, + kHPatch_error_old_fopen =-5, + kHPatch_error_old_fread =-6, + kHPatch_error_old_fclose =-7, + kHPatch_error_pat_fopen =-8, + kHPatch_error_pat_fread =-9, + kHPatch_error_pat_fclose =-10, + kHPatch_error_new_fopen =-11, + kHPatch_error_new_fwrite =-12, + kHPatch_error_new_fclose =-13, + kHPatch_error_old_size =-14, + kHPatch_error_new_size =-15, +}; + int hpatch_getInfo_by_mem(hpatch_singleCompressedDiffInfo* out_patinfo, const uint8_t* pat,size_t patsize); From c4d2523a92550f943eb7fa3d9278851aa114697d Mon Sep 17 00:00:00 2001 From: sisong Date: Mon, 5 Apr 2021 18:45:42 +0800 Subject: [PATCH 09/27] extend new patchType: *.apk.hpatch & *.ppk.hpatch --- .../modules/update/DownloadTask.java | 27 +++++-- .../modules/update/DownloadTaskParams.java | 11 ++- .../modules/update/UpdateContext.java | 31 ++++++-- .../modules/update/UpdateModule.java | 65 ++++++++++------ ios/RCTPushy/BSDiff/BSDiff.h | 5 ++ ios/RCTPushy/BSDiff/BSDiff.m | 24 +++++- ios/RCTPushy/RCTPushy.m | 75 +++++++++++++++++-- ios/RCTPushy/RCTPushyManager.h | 5 ++ ios/RCTPushy/RCTPushyManager.m | 13 ++++ lib/index.d.ts | 2 + lib/index.js | 13 ++++ 11 files changed, 222 insertions(+), 49 deletions(-) diff --git a/android/src/main/java/cn/reactnative/modules/update/DownloadTask.java b/android/src/main/java/cn/reactnative/modules/update/DownloadTask.java index 12a049b..5ee4225 100644 --- a/android/src/main/java/cn/reactnative/modules/update/DownloadTask.java +++ b/android/src/main/java/cn/reactnative/modules/update/DownloadTask.java @@ -301,7 +301,7 @@ class DownloadTask extends AsyncTask { } } - private void doPatchFromApk(DownloadTaskParams param) throws IOException, JSONException { + private void doPatchFromApk(DownloadTaskParams param,int apkPatchType) throws IOException, JSONException { downloadFile(param); ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(param.targetFile))); @@ -349,8 +349,12 @@ class DownloadTask extends AsyncTask { } if (fn.equals("index.bundlejs.patch")) { foundBundlePatch = true; - // do bsdiff patch - byte[] patched = bsdiffPatch(readOriginBundle(), readBytes(zis)); + + byte[] patched; + if (DownloadTaskParams.isHPatchType(apkPatchType)) // hpatch + patched = hdiffPatch(readOriginBundle(), readBytes(zis)); + else // do bsdiff patch + patched = bsdiffPatch(readOriginBundle(), readBytes(zis)); FileOutputStream fout = new FileOutputStream(new File(param.unzipDirectory, "index.bundlejs")); fout.write(patched); @@ -387,7 +391,7 @@ class DownloadTask extends AsyncTask { } - private void doPatchFromPpk(DownloadTaskParams param) throws IOException, JSONException { + private void doPatchFromPpk(DownloadTaskParams param,int ppkPatchType) throws IOException, JSONException { downloadFile(param); ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(param.targetFile))); @@ -427,8 +431,11 @@ class DownloadTask extends AsyncTask { } if (fn.equals("index.bundlejs.patch")) { foundBundlePatch = true; - // do bsdiff patch - byte[] patched = bsdiffPatch(readFile(new File(param.originDirectory, "index.bundlejs")), readBytes(zis)); + byte[] patched; + if (DownloadTaskParams.isHPatchType(ppkPatchType)) // hpatch + patched = hdiffPatch(readFile(new File(param.originDirectory, "index.bundlejs")), readBytes(zis)); + else // do bsdiff patch + patched = bsdiffPatch(readFile(new File(param.originDirectory, "index.bundlejs")), readBytes(zis)); FileOutputStream fout = new FileOutputStream(new File(param.unzipDirectory, "index.bundlejs")); fout.write(patched); @@ -490,10 +497,12 @@ class DownloadTask extends AsyncTask { doFullPatch(params[0]); break; case DownloadTaskParams.TASK_TYPE_PATCH_FROM_APK: - doPatchFromApk(params[0]); + case DownloadTaskParams.TASK_TYPE_HPATCH_FROM_APK: + doPatchFromApk(params[0],type); break; case DownloadTaskParams.TASK_TYPE_PATCH_FROM_PPK: - doPatchFromPpk(params[0]); + case DownloadTaskParams.TASK_TYPE_HPATCH_FROM_PPK: + doPatchFromPpk(params[0],type); break; case DownloadTaskParams.TASK_TYPE_CLEANUP: doCleanUp(params[0]); @@ -515,6 +524,8 @@ class DownloadTask extends AsyncTask { case DownloadTaskParams.TASK_TYPE_PATCH_FULL: case DownloadTaskParams.TASK_TYPE_PATCH_FROM_APK: case DownloadTaskParams.TASK_TYPE_PATCH_FROM_PPK: + case DownloadTaskParams.TASK_TYPE_HPATCH_FROM_APK: + case DownloadTaskParams.TASK_TYPE_HPATCH_FROM_PPK: try { removeDirectory(params[0].unzipDirectory); } catch (IOException ioException) { diff --git a/android/src/main/java/cn/reactnative/modules/update/DownloadTaskParams.java b/android/src/main/java/cn/reactnative/modules/update/DownloadTaskParams.java index 248a392..fbddeb3 100644 --- a/android/src/main/java/cn/reactnative/modules/update/DownloadTaskParams.java +++ b/android/src/main/java/cn/reactnative/modules/update/DownloadTaskParams.java @@ -8,12 +8,19 @@ import java.io.File; * Created by tdzl2003 on 3/31/16. */ class DownloadTaskParams { - static final int TASK_TYPE_PATCH_FULL = 1; + static final int TASK_TYPE_CLEANUP = 0; //Keep hash & originHash + + static final int TASK_TYPE_PATCH_FULL = 1; static final int TASK_TYPE_PATCH_FROM_APK = 2; static final int TASK_TYPE_PATCH_FROM_PPK = 3; static final int TASK_TYPE_PLAIN_DOWNLOAD = 4; - static final int TASK_TYPE_CLEANUP = 0; //Keep hash & originHash + static final int TASK_TYPE_HPATCH_FROM_APK = 5; + static final int TASK_TYPE_HPATCH_FROM_PPK = 6; + + static boolean isHPatchType(int patchType){ + return (patchType==TASK_TYPE_HPATCH_FROM_APK)||(patchType==TASK_TYPE_HPATCH_FROM_PPK); + } int type; String url; diff --git a/android/src/main/java/cn/reactnative/modules/update/UpdateContext.java b/android/src/main/java/cn/reactnative/modules/update/UpdateContext.java index ab782fb..0b294f6 100644 --- a/android/src/main/java/cn/reactnative/modules/update/UpdateContext.java +++ b/android/src/main/java/cn/reactnative/modules/update/UpdateContext.java @@ -90,13 +90,30 @@ public class UpdateContext { void onDownloadFailed(Throwable error); } + private String zipExtension(int patchType){ + switch (patchType) { + case TASK_TYPE_PATCH_FULL: + return ".ppk"; + case TASK_TYPE_PATCH_FROM_APK: + return ".apk.patch"; + case TASK_TYPE_PATCH_FROM_PPK: + return ".ppk.patch"; + case TASK_TYPE_HPATCH_FROM_APK: + return ".apk.hpatch"; + case TASK_TYPE_HPATCH_FROM_PPK: + return ".ppk.hpatch"; + default: + return "";//unknown type + } + } + public void downloadFullUpdate(String url, String hash, DownloadFileListener listener) { DownloadTaskParams params = new DownloadTaskParams(); params.type = DownloadTaskParams.TASK_TYPE_PATCH_FULL; params.url = url; params.hash = hash; params.listener = listener; - params.targetFile = new File(rootDir, hash + ".ppk"); + params.targetFile = new File(rootDir, hash + zipExtension(params.type)); params.unzipDirectory = new File(rootDir, hash); new DownloadTask(context).executeOnExecutor(this.executor, params); } @@ -112,25 +129,25 @@ public class UpdateContext { new DownloadTask(context).executeOnExecutor(this.executor, params); } - public void downloadPatchFromApk(String url, String hash, DownloadFileListener listener) { + public void downloadPatchFromApk(String url, String hash,int apkPatchType,DownloadFileListener listener) { DownloadTaskParams params = new DownloadTaskParams(); - params.type = DownloadTaskParams.TASK_TYPE_PATCH_FROM_APK; + params.type = apkPatchType; params.url = url; params.hash = hash; params.listener = listener; - params.targetFile = new File(rootDir, hash + ".apk.patch"); + params.targetFile = new File(rootDir, hash + zipExtension(params.type)); params.unzipDirectory = new File(rootDir, hash); new DownloadTask(context).executeOnExecutor(this.executor, params); } - public void downloadPatchFromPpk(String url, String hash, String originHash, DownloadFileListener listener) { + public void downloadPatchFromPpk(String url,String hash,String originHash,int ppkPatchType,DownloadFileListener listener) { DownloadTaskParams params = new DownloadTaskParams(); - params.type = DownloadTaskParams.TASK_TYPE_PATCH_FROM_PPK; + params.type = ppkPatchType; params.url = url; params.hash = hash; params.originHash = originHash; params.listener = listener; - params.targetFile = new File(rootDir, originHash + "-" + hash + ".ppk.patch"); + params.targetFile = new File(rootDir, originHash + "-" + hash + zipExtension(params.type)); params.unzipDirectory = new File(rootDir, hash); params.originDirectory = new File(rootDir, originHash); new DownloadTask(context).executeOnExecutor(this.executor, params); diff --git a/android/src/main/java/cn/reactnative/modules/update/UpdateModule.java b/android/src/main/java/cn/reactnative/modules/update/UpdateModule.java index 046e606..cb79bb2 100644 --- a/android/src/main/java/cn/reactnative/modules/update/UpdateModule.java +++ b/android/src/main/java/cn/reactnative/modules/update/UpdateModule.java @@ -135,15 +135,36 @@ public class UpdateModule extends ReactContextBaseJavaModule { } } - - @ReactMethod - public void downloadPatchFromPackage(ReadableMap options, final Promise promise) { + private void _downloadPatchFromPackage(ReadableMap options, final Promise promise,int apkPatchType) { String url = options.getString("updateUrl"); String hash = options.getString("hash"); if (hash == null) { hash = options.getString("hashName"); } - updateContext.downloadPatchFromApk(url, hash, new UpdateContext.DownloadFileListener() { + updateContext.downloadPatchFromApk(url,hash,apkPatchType,new UpdateContext.DownloadFileListener() { + @Override + public void onDownloadCompleted(DownloadTaskParams params) { + promise.resolve(null); + } + + @Override + public void onDownloadFailed(Throwable error) { + promise.reject(error); + } + }); + } + + private void _downloadPatchFromPpk(ReadableMap options, final Promise promise,int ppkPatchType) { + String url = options.getString("updateUrl"); + String hash = options.getString("hash"); + if (hash == null) { + hash = options.getString("hashName"); + } + String originHash = options.getString("originHash"); + if (originHash == null) { + originHash = options.getString(("originHashName")); + } + updateContext.downloadPatchFromPpk(url,hash,originHash,ppkPatchType,new UpdateContext.DownloadFileListener() { @Override public void onDownloadCompleted(DownloadTaskParams params) { promise.resolve(null); @@ -157,27 +178,23 @@ public class UpdateModule extends ReactContextBaseJavaModule { } @ReactMethod - public void downloadPatchFromPpk(ReadableMap options, final Promise promise) { - String url = options.getString("updateUrl"); - String hash = options.getString("hash"); - if (hash == null) { - hash = options.getString("hashName"); - } - String originHash = options.getString("originHash"); - if (originHash == null) { - originHash = options.getString(("originHashName")); - } - updateContext.downloadPatchFromPpk(url, hash, originHash, new UpdateContext.DownloadFileListener() { - @Override - public void onDownloadCompleted(DownloadTaskParams params) { - promise.resolve(null); - } + public void downloadPatchFromPackage(ReadableMap options, final Promise promise) { + _downloadPatchFromPackage(options,promise,DownloadTaskParams.TASK_TYPE_PATCH_FROM_APK); + } + + @ReactMethod + public void downloadHPatchFromPackage(ReadableMap options, final Promise promise) { + _downloadPatchFromPackage(options,promise,DownloadTaskParams.TASK_TYPE_HPATCH_FROM_APK); + } - @Override - public void onDownloadFailed(Throwable error) { - promise.reject(error); - } - }); + @ReactMethod + public void downloadPatchFromPpk(ReadableMap options, final Promise promise) { + _downloadPatchFromPpk(options,promise,DownloadTaskParams.TASK_TYPE_PATCH_FROM_PPK); + } + + @ReactMethod + public void downloadHPatchFromPpk(ReadableMap options, final Promise promise) { + _downloadPatchFromPpk(options,promise,DownloadTaskParams.TASK_TYPE_HPATCH_FROM_PPK); } @ReactMethod diff --git a/ios/RCTPushy/BSDiff/BSDiff.h b/ios/RCTPushy/BSDiff/BSDiff.h index d334f3c..36a4e54 100644 --- a/ios/RCTPushy/BSDiff/BSDiff.h +++ b/ios/RCTPushy/BSDiff/BSDiff.h @@ -13,4 +13,9 @@ + (BOOL)bsdiffPatch:(NSString *)path origin:(NSString *)origin toDestination:(NSString *)destination; + ++ (BOOL)hdiffPatch:(NSString *)path + origin:(NSString *)origin + toDestination:(NSString *)destination; + @end diff --git a/ios/RCTPushy/BSDiff/BSDiff.m b/ios/RCTPushy/BSDiff/BSDiff.m index e63e63c..db26a92 100644 --- a/ios/RCTPushy/BSDiff/BSDiff.m +++ b/ios/RCTPushy/BSDiff/BSDiff.m @@ -8,7 +8,7 @@ #import "BSDiff.h" #include "bspatch.h" - +#include "../../../android/jni/hpatch.h" @implementation BSDiff @@ -34,4 +34,26 @@ return YES; } ++ (BOOL)hdiffPatch:(NSString *)patch + origin:(NSString *)origin + toDestination:(NSString *)destination +{ + if (![[NSFileManager defaultManager] fileExistsAtPath:patch]) { + return NO; + } + if (![[NSFileManager defaultManager] fileExistsAtPath:origin]) { + return NO; + } + + if ([[NSFileManager defaultManager] fileExistsAtPath:destination]) { + [[NSFileManager defaultManager] removeItemAtPath:destination error:nil]; + } + + int err = hpatch_by_file([origin UTF8String], [destination UTF8String], [patch UTF8String]); + if (err) { + return NO; + } + return YES; +} + @end diff --git a/ios/RCTPushy/RCTPushy.m b/ios/RCTPushy/RCTPushy.m index 77e9fd4..431fc44 100644 --- a/ios/RCTPushy/RCTPushy.m +++ b/ios/RCTPushy/RCTPushy.m @@ -39,6 +39,7 @@ static NSString * const BUNDLE_PATCH_NAME = @"index.bundlejs.patch"; // error def static NSString * const ERROR_OPTIONS = @"options error"; static NSString * const ERROR_BSDIFF = @"bsdiff error"; +static NSString * const ERROR_HDIFFPATCH = @"hdiffpatch error"; static NSString * const ERROR_FILE_OPERATION = @"file operation error"; // event def @@ -53,6 +54,9 @@ typedef NS_ENUM(NSInteger, PushyType) { PushyTypeFullDownload = 1, PushyTypePatchFromPackage = 2, PushyTypePatchFromPpk = 3, + //TASK_TYPE_PLAIN_DOWNLOAD=4? + PushyTypeHPatchFromPackage = 5, + PushyTypeHPatchFromPpk = 6, }; static BOOL ignoreRollback = false; @@ -253,6 +257,34 @@ RCT_EXPORT_METHOD(downloadPatchFromPpk:(NSDictionary *)options }]; } +RCT_EXPORT_METHOD(downloadHPatchFromPackage:(NSDictionary *)options + resolver:(RCTPromiseResolveBlock)resolve + rejecter:(RCTPromiseRejectBlock)reject) +{ + [self doPushy:PushyTypeHPatchFromPackage options:options callback:^(NSError *error) { + if (error) { + reject([NSString stringWithFormat: @"%lu", (long)error.code], error.localizedDescription, error); + } + else { + resolve(nil); + } + }]; +} + +RCT_EXPORT_METHOD(downloadHPatchFromPpk:(NSDictionary *)options + resolver:(RCTPromiseResolveBlock)resolve + rejecter:(RCTPromiseRejectBlock)reject) +{ + [self doPushy:PushyTypeHPatchFromPpk options:options callback:^(NSError *error) { + if (error) { + reject([NSString stringWithFormat: @"%lu", (long)error.code], error.localizedDescription, error); + } + else { + resolve(nil); + } + }]; +} + RCT_EXPORT_METHOD(setNeedUpdate:(NSDictionary *)options) { NSString *hash = options[@"hash"]; @@ -349,7 +381,7 @@ RCT_EXPORT_METHOD(markSuccess) return; } NSString *originHash = [RCTConvert NSString:options[@"originHash"]]; - if (type == PushyTypePatchFromPpk && originHash <= 0) { + if (((type == PushyTypePatchFromPpk)||(type == PushyTypeHPatchFromPpk)) && originHash <= 0) { callback([self errorWithMessage:ERROR_OPTIONS]); return; } @@ -398,19 +430,27 @@ RCT_EXPORT_METHOD(markSuccess) else { switch (type) { case PushyTypePatchFromPackage: + case PushyTypeHPatchFromPackage: { NSString *sourceOrigin = [[NSBundle mainBundle] resourcePath]; NSString *bundleOrigin = [[RCTPushy binaryBundleURL] path]; - [self patch:hash fromBundle:bundleOrigin source:sourceOrigin callback:callback]; + if (type==PushyTypeHPatchFromPackage) + [self hpatch:hash fromBundle:bundleOrigin source:sourceOrigin callback:callback]; + else + [self patch:hash fromBundle:bundleOrigin source:sourceOrigin callback:callback]; } break; case PushyTypePatchFromPpk: + case PushyTypeHPatchFromPpk: { NSString *lastVersionDir = [dir stringByAppendingPathComponent:originHash]; NSString *sourceOrigin = lastVersionDir; NSString *bundleOrigin = [lastVersionDir stringByAppendingPathComponent:BUNDLE_FILE_NAME]; - [self patch:hash fromBundle:bundleOrigin source:sourceOrigin callback:callback]; + if (type==PushyTypeHPatchFromPpk) + [self hpatch:hash fromBundle:bundleOrigin source:sourceOrigin callback:callback]; + else + [self patch:hash fromBundle:bundleOrigin source:sourceOrigin callback:callback]; } break; default: @@ -424,14 +464,15 @@ RCT_EXPORT_METHOD(markSuccess) }]; } -- (void)patch:(NSString *)hash fromBundle:(NSString *)bundleOrigin source:(NSString *)sourceOrigin callback:(void (^)(NSError *error))callback +- (void)_dopatch:(NSString *)hash fromBundle:(NSString *)bundleOrigin source:(NSString *)sourceOrigin + callback:(void (^)(NSError *error))callback isHPatch:(BOOL)isHPatch { NSString *unzipDir = [[RCTPushy downloadDir] stringByAppendingPathComponent:hash]; NSString *sourcePatch = [unzipDir stringByAppendingPathComponent:SOURCE_PATCH_NAME]; NSString *bundlePatch = [unzipDir stringByAppendingPathComponent:BUNDLE_PATCH_NAME]; NSString *destination = [unzipDir stringByAppendingPathComponent:BUNDLE_FILE_NAME]; - [_fileManager bsdiffFileAtPath:bundlePatch fromOrigin:bundleOrigin toDestination:destination completionHandler:^(BOOL success) { + void (^)(BOOL success) completionHandler=^(BOOL success) { if (success) { NSData *data = [NSData dataWithContentsOfFile:sourcePatch]; NSError *error = nil; @@ -454,9 +495,25 @@ RCT_EXPORT_METHOD(markSuccess) }]; } else { - callback([self errorWithMessage:ERROR_BSDIFF]); + if (isHPatch) + callback([self errorWithMessage:ERROR_HDIFFPATCH]); + else + callback([self errorWithMessage:ERROR_BSDIFF]); } - }]; + } + if (isHPatch) + [_fileManager hdiffFileAtPath:bundlePatch fromOrigin:bundleOrigin toDestination:destination completionHandler:completionHandler]; + else + [_fileManager bsdiffFileAtPath:bundlePatch fromOrigin:bundleOrigin toDestination:destination completionHandler:completionHandler]; +} + +- (void)patch:(NSString *)hash fromBundle:(NSString *)bundleOrigin source:(NSString *)sourceOrigin callback:(void (^)(NSError *error))callback +{ + [self _dopatch:hash fromBundle:bundleOrigin source:sourceOrigin callback:callback isHPatch:false]; +} +- (void)hpatch:(NSString *)hash fromBundle:(NSString *)bundleOrigin source:(NSString *)sourceOrigin callback:(void (^)(NSError *error))callback +{ + [self _dopatch:hash fromBundle:bundleOrigin source:sourceOrigin callback:callback isHPatch:true]; } - (void)clearInvalidFiles @@ -488,6 +545,10 @@ RCT_EXPORT_METHOD(markSuccess) return @".ipa.patch"; case PushyTypePatchFromPpk: return @".ppk.patch"; + case PushyTypeHPatchFromPackage: + return @".ipa.hpatch"; + case PushyTypeHPatchFromPpk: + return @".ppk.hpatch"; default: break; } diff --git a/ios/RCTPushy/RCTPushyManager.h b/ios/RCTPushy/RCTPushyManager.h index 05b90d1..7be53be 100644 --- a/ios/RCTPushy/RCTPushyManager.h +++ b/ios/RCTPushy/RCTPushyManager.h @@ -23,6 +23,11 @@ toDestination:(NSString *)destination completionHandler:(void (^)(BOOL success))completionHandler; +- (void)hdiffFileAtPath:(NSString *)path + fromOrigin:(NSString *)origin + toDestination:(NSString *)destination + completionHandler:(void (^)(BOOL success))completionHandler; + - (void)copyFiles:(NSDictionary *)filesDic fromDir:(NSString *)fromDir toDir:(NSString *)toDir diff --git a/ios/RCTPushy/RCTPushyManager.m b/ios/RCTPushy/RCTPushyManager.m index 871b5ca..46f0182 100644 --- a/ios/RCTPushy/RCTPushyManager.m +++ b/ios/RCTPushy/RCTPushyManager.m @@ -88,6 +88,19 @@ }); } +- (void)hdiffFileAtPath:(NSString *)path + fromOrigin:(NSString *)origin + toDestination:(NSString *)destination + completionHandler:(void (^)(BOOL success))completionHandler +{ + dispatch_async(_opQueue, ^{ + BOOL success = [BSDiff hdiffPatch:path origin:origin toDestination:destination]; + if (completionHandler) { + completionHandler(success); + } + }); +} + - (void)copyFiles:(NSDictionary *)filesDic fromDir:(NSString *)fromDir toDir:(NSString *)toDir diff --git a/lib/index.d.ts b/lib/index.d.ts index c78bfa2..5555865 100644 --- a/lib/index.d.ts +++ b/lib/index.d.ts @@ -25,6 +25,8 @@ export interface UpdateAvailableResult { metaInfo: string; pdiffUrl: string; diffUrl?: string; + phdiffUrl?: string; + hdiffUrl?: string; } export type CheckResult = diff --git a/lib/index.js b/lib/index.js index 2f05597..26d341f 100644 --- a/lib/index.js +++ b/lib/index.js @@ -167,6 +167,19 @@ export async function downloadUpdate(options, eventListeners) { updateUrl: options.pdiffUrl, hash: options.hash, }); + }else if (options.hdiffUrl) { + logger('downloading hdiff'); + await Pushy.downloadHPatchFromPpk({ + updateUrl: options.hdiffUrl, + hash: options.hash, + originHash: currentVersion, + }); + } else if (options.phdiffUrl) { + logger('downloading phdiff'); + await Pushy.downloadHPatchFromPackage({ + updateUrl: options.phdiffUrl, + hash: options.hash, + }); } progressHandler && progressHandler.remove(); return options.hash; From 2097ce31285a4b5025034c9e2177582e258a4d05 Mon Sep 17 00:00:00 2001 From: sisong Date: Tue, 6 Apr 2021 00:13:53 +0800 Subject: [PATCH 10/27] run hpatch in .so on android --- android/jni/DownloadTask.c | 4 ++-- android/jni/hpatch.h | 2 +- .../reactnative/modules/update/DownloadTask.java | 4 ++-- .../modules/update/DownloadTaskParams.java | 14 +++++++------- .../reactnative/modules/update/UpdateContext.java | 10 +++++----- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/android/jni/DownloadTask.c b/android/jni/DownloadTask.c index d41793c..562714f 100644 --- a/android/jni/DownloadTask.c +++ b/android/jni/DownloadTask.c @@ -131,7 +131,7 @@ JNIEXPORT jbyteArray JNICALL Java_cn_reactnative_modules_update_DownloadTask_hdi hpatch_singleCompressedDiffInfo patInfo; _check(((originLength==0)||originPtr) && patchPtr && (patchLength>0),"Corrupt patch"); - _check(kHPatch_ok!=hpatch_getInfo_by_mem(&patInfo,(const uint8_t*)patchPtr,patchLength),"Error info in hpatch"); + _check(kHPatch_ok==hpatch_getInfo_by_mem(&patInfo,(const uint8_t*)patchPtr,patchLength),"Error info in hpatch"); _check(originLength==patInfo.oldDataSize,"Error oldDataSize in hpatch"); newsize=(size_t)patInfo.newDataSize; if (sizeof(size_t)!=sizeof(hpatch_StreamPos_t)) @@ -144,7 +144,7 @@ JNIEXPORT jbyteArray JNICALL Java_cn_reactnative_modules_update_DownloadTask_hdi _check(outPtr,"Corrupt JNIEnv::GetByteArrayElements"); } - _check(kHPatch_ok!=hpatch_by_mem((const uint8_t*)originPtr,originLength,(uint8_t*)outPtr,newsize, + _check(kHPatch_ok==hpatch_by_mem((const uint8_t*)originPtr,originLength,(uint8_t*)outPtr,newsize, (const uint8_t*)patchPtr,patchLength,&patInfo),"hpacth"); _clear: diff --git a/android/jni/hpatch.h b/android/jni/hpatch.h index 3046d02..516df4a 100644 --- a/android/jni/hpatch.h +++ b/android/jni/hpatch.h @@ -1,5 +1,5 @@ // hpatch.h -// import HDiffPatch, support patchfile created by "hdiffz -SD -C-lzma2 oldfile newfile patchfile" +// import HDiffPatch, support patchData created by "hdiffz -SD -c-lzma2 oldfile newfile patchfile" // Copyright 2021 housisong, All rights reserved #ifndef HDIFFPATCH_PATCH_H diff --git a/android/src/main/java/cn/reactnative/modules/update/DownloadTask.java b/android/src/main/java/cn/reactnative/modules/update/DownloadTask.java index 5ee4225..2f463fa 100644 --- a/android/src/main/java/cn/reactnative/modules/update/DownloadTask.java +++ b/android/src/main/java/cn/reactnative/modules/update/DownloadTask.java @@ -498,11 +498,11 @@ class DownloadTask extends AsyncTask { break; case DownloadTaskParams.TASK_TYPE_PATCH_FROM_APK: case DownloadTaskParams.TASK_TYPE_HPATCH_FROM_APK: - doPatchFromApk(params[0],type); + doPatchFromApk(params[0],taskType); break; case DownloadTaskParams.TASK_TYPE_PATCH_FROM_PPK: case DownloadTaskParams.TASK_TYPE_HPATCH_FROM_PPK: - doPatchFromPpk(params[0],type); + doPatchFromPpk(params[0],taskType); break; case DownloadTaskParams.TASK_TYPE_CLEANUP: doCleanUp(params[0]); diff --git a/android/src/main/java/cn/reactnative/modules/update/DownloadTaskParams.java b/android/src/main/java/cn/reactnative/modules/update/DownloadTaskParams.java index fbddeb3..7d7c538 100644 --- a/android/src/main/java/cn/reactnative/modules/update/DownloadTaskParams.java +++ b/android/src/main/java/cn/reactnative/modules/update/DownloadTaskParams.java @@ -8,15 +8,15 @@ import java.io.File; * Created by tdzl2003 on 3/31/16. */ class DownloadTaskParams { - static final int TASK_TYPE_CLEANUP = 0; //Keep hash & originHash + static final int TASK_TYPE_CLEANUP = 0; //Keep hash & originHash - static final int TASK_TYPE_PATCH_FULL = 1; - static final int TASK_TYPE_PATCH_FROM_APK = 2; - static final int TASK_TYPE_PATCH_FROM_PPK = 3; - static final int TASK_TYPE_PLAIN_DOWNLOAD = 4; + static final int TASK_TYPE_PATCH_FULL = 1; + static final int TASK_TYPE_PATCH_FROM_APK = 2; + static final int TASK_TYPE_PATCH_FROM_PPK = 3; + static final int TASK_TYPE_PLAIN_DOWNLOAD = 4; - static final int TASK_TYPE_HPATCH_FROM_APK = 5; - static final int TASK_TYPE_HPATCH_FROM_PPK = 6; + static final int TASK_TYPE_HPATCH_FROM_APK = 5; + static final int TASK_TYPE_HPATCH_FROM_PPK = 6; static boolean isHPatchType(int patchType){ return (patchType==TASK_TYPE_HPATCH_FROM_APK)||(patchType==TASK_TYPE_HPATCH_FROM_PPK); diff --git a/android/src/main/java/cn/reactnative/modules/update/UpdateContext.java b/android/src/main/java/cn/reactnative/modules/update/UpdateContext.java index 0b294f6..ae911cd 100644 --- a/android/src/main/java/cn/reactnative/modules/update/UpdateContext.java +++ b/android/src/main/java/cn/reactnative/modules/update/UpdateContext.java @@ -92,15 +92,15 @@ public class UpdateContext { private String zipExtension(int patchType){ switch (patchType) { - case TASK_TYPE_PATCH_FULL: + case DownloadTaskParams.TASK_TYPE_PATCH_FULL: return ".ppk"; - case TASK_TYPE_PATCH_FROM_APK: + case DownloadTaskParams.TASK_TYPE_PATCH_FROM_APK: return ".apk.patch"; - case TASK_TYPE_PATCH_FROM_PPK: + case DownloadTaskParams.TASK_TYPE_PATCH_FROM_PPK: return ".ppk.patch"; - case TASK_TYPE_HPATCH_FROM_APK: + case DownloadTaskParams.TASK_TYPE_HPATCH_FROM_APK: return ".apk.hpatch"; - case TASK_TYPE_HPATCH_FROM_PPK: + case DownloadTaskParams.TASK_TYPE_HPATCH_FROM_PPK: return ".ppk.hpatch"; default: return "";//unknown type From 94cda441b240233271d9f7f8290cf3518c0bc385 Mon Sep 17 00:00:00 2001 From: sisong Date: Tue, 6 Apr 2021 17:07:33 +0800 Subject: [PATCH 11/27] update ios xcode preject; --- ios/RCTPushy.xcodeproj/project.pbxproj | 54 ++++++++++++++++++++++++++ ios/RCTPushy/BSDiff/BSDiff.h | 4 -- ios/RCTPushy/BSDiff/BSDiff.m | 23 ----------- ios/RCTPushy/HDiffPatch/HDiffPatch.h | 16 ++++++++ ios/RCTPushy/HDiffPatch/HDiffPatch.m | 35 +++++++++++++++++ ios/RCTPushy/RCTPushyManager.m | 3 +- 6 files changed, 107 insertions(+), 28 deletions(-) create mode 100644 ios/RCTPushy/HDiffPatch/HDiffPatch.h create mode 100644 ios/RCTPushy/HDiffPatch/HDiffPatch.m diff --git a/ios/RCTPushy.xcodeproj/project.pbxproj b/ios/RCTPushy.xcodeproj/project.pbxproj index 154a0a6..69403e2 100644 --- a/ios/RCTPushy.xcodeproj/project.pbxproj +++ b/ios/RCTPushy.xcodeproj/project.pbxproj @@ -7,6 +7,12 @@ objects = { /* Begin PBXBuildFile section */ + 249F2F50261C577300A1E60E /* HDiffPatch.m in Sources */ = {isa = PBXBuildFile; fileRef = 249F2F4E261C577300A1E60E /* HDiffPatch.m */; }; + 249F2F55261C584900A1E60E /* hpatch.c in Sources */ = {isa = PBXBuildFile; fileRef = 249F2F54261C584900A1E60E /* hpatch.c */; }; + 249F2F59261C586900A1E60E /* file_for_patch.c in Sources */ = {isa = PBXBuildFile; fileRef = 249F2F58261C586900A1E60E /* file_for_patch.c */; }; + 249F2F5E261C589D00A1E60E /* patch.c in Sources */ = {isa = PBXBuildFile; fileRef = 249F2F5C261C589D00A1E60E /* patch.c */; }; + 249F2F64261C58C700A1E60E /* Lzma2Dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 249F2F60261C58C700A1E60E /* Lzma2Dec.c */; }; + 249F2F65261C58C700A1E60E /* LzmaDec.c in Sources */ = {isa = PBXBuildFile; fileRef = 249F2F62261C58C700A1E60E /* LzmaDec.c */; }; 91C5F0031C76ECA90037E727 /* RCTPushy.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 91C5F0021C76ECA90037E727 /* RCTPushy.h */; }; 91C5F0051C76ECA90037E727 /* RCTPushy.m in Sources */ = {isa = PBXBuildFile; fileRef = 91C5F0041C76ECA90037E727 /* RCTPushy.m */; }; 9F1BCB1D1CAE5937000EF2CB /* RCTPushyManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F1BCB1C1CAE5937000EF2CB /* RCTPushyManager.m */; }; @@ -43,6 +49,19 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 249F2F4E261C577300A1E60E /* HDiffPatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HDiffPatch.m; sourceTree = ""; }; + 249F2F4F261C577300A1E60E /* HDiffPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HDiffPatch.h; sourceTree = ""; }; + 249F2F53261C584900A1E60E /* hpatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = hpatch.h; path = ../../../android/jni/hpatch.h; sourceTree = ""; }; + 249F2F54261C584900A1E60E /* hpatch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = hpatch.c; path = ../../../android/jni/hpatch.c; sourceTree = ""; }; + 249F2F57261C586900A1E60E /* file_for_patch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = file_for_patch.h; path = ../../../android/jni/HDiffPatch/file_for_patch.h; sourceTree = ""; }; + 249F2F58261C586900A1E60E /* file_for_patch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = file_for_patch.c; path = ../../../android/jni/HDiffPatch/file_for_patch.c; sourceTree = ""; }; + 249F2F5B261C589C00A1E60E /* patch_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = patch_types.h; path = ../../../android/jni/HDiffPatch/libHDiffPatch/HPatch/patch_types.h; sourceTree = ""; }; + 249F2F5C261C589D00A1E60E /* patch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = patch.c; path = ../../../android/jni/HDiffPatch/libHDiffPatch/HPatch/patch.c; sourceTree = ""; }; + 249F2F5D261C589D00A1E60E /* patch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = patch.h; path = ../../../android/jni/HDiffPatch/libHDiffPatch/HPatch/patch.h; sourceTree = ""; }; + 249F2F60261C58C700A1E60E /* Lzma2Dec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Lzma2Dec.c; path = ../../../android/jni/lzma/C/Lzma2Dec.c; sourceTree = ""; }; + 249F2F61261C58C700A1E60E /* Lzma2Dec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Lzma2Dec.h; path = ../../../android/jni/lzma/C/Lzma2Dec.h; sourceTree = ""; }; + 249F2F62261C58C700A1E60E /* LzmaDec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = LzmaDec.c; path = ../../../android/jni/lzma/C/LzmaDec.c; sourceTree = ""; }; + 249F2F63261C58C700A1E60E /* LzmaDec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LzmaDec.h; path = ../../../android/jni/lzma/C/LzmaDec.h; sourceTree = ""; }; 91C5EFFF1C76ECA90037E727 /* libRCTPushy.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRCTPushy.a; sourceTree = BUILT_PRODUCTS_DIR; }; 91C5F0021C76ECA90037E727 /* RCTPushy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTPushy.h; sourceTree = ""; }; 91C5F0041C76ECA90037E727 /* RCTPushy.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTPushy.m; sourceTree = ""; }; @@ -102,6 +121,34 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 249F2F4D261C56E100A1E60E /* HDiffPatch */ = { + isa = PBXGroup; + children = ( + 249F2F52261C581200A1E60E /* hpatch */, + 249F2F4F261C577300A1E60E /* HDiffPatch.h */, + 249F2F4E261C577300A1E60E /* HDiffPatch.m */, + ); + path = HDiffPatch; + sourceTree = ""; + }; + 249F2F52261C581200A1E60E /* hpatch */ = { + isa = PBXGroup; + children = ( + 249F2F60261C58C700A1E60E /* Lzma2Dec.c */, + 249F2F61261C58C700A1E60E /* Lzma2Dec.h */, + 249F2F62261C58C700A1E60E /* LzmaDec.c */, + 249F2F63261C58C700A1E60E /* LzmaDec.h */, + 249F2F5B261C589C00A1E60E /* patch_types.h */, + 249F2F5C261C589D00A1E60E /* patch.c */, + 249F2F5D261C589D00A1E60E /* patch.h */, + 249F2F58261C586900A1E60E /* file_for_patch.c */, + 249F2F57261C586900A1E60E /* file_for_patch.h */, + 249F2F54261C584900A1E60E /* hpatch.c */, + 249F2F53261C584900A1E60E /* hpatch.h */, + ); + name = hpatch; + sourceTree = ""; + }; 91C5EFF61C76ECA90037E727 = { isa = PBXGroup; children = ( @@ -121,6 +168,7 @@ 91C5F0011C76ECA90037E727 /* RCTPushy */ = { isa = PBXGroup; children = ( + 249F2F4D261C56E100A1E60E /* HDiffPatch */, 9F1BCB381CAF6B3E000EF2CB /* BSDiff */, 9F394D571C7C25DC00C794C0 /* SSZipArchive */, 91C5F0021C76ECA90037E727 /* RCTPushy.h */, @@ -272,19 +320,25 @@ 9F394D871C7C25DC00C794C0 /* mztools.c in Sources */, 9F394D821C7C25DC00C794C0 /* hmac.c in Sources */, 9F394D881C7C25DC00C794C0 /* unzip.c in Sources */, + 249F2F65261C58C700A1E60E /* LzmaDec.c in Sources */, 9F1BCB1D1CAE5937000EF2CB /* RCTPushyManager.m in Sources */, + 249F2F5E261C589D00A1E60E /* patch.c in Sources */, 9F1BCB4F1CAF6B68000EF2CB /* BSDiff.m in Sources */, 9F394D7E1C7C25DC00C794C0 /* aeskey.c in Sources */, 9F394D7F1C7C25DC00C794C0 /* aestab.c in Sources */, 9F394D7D1C7C25DC00C794C0 /* aescrypt.c in Sources */, 9F394D801C7C25DC00C794C0 /* entropy.c in Sources */, 9F292F7D1C7C44290095945D /* RCTPushyDownloader.m in Sources */, + 249F2F64261C58C700A1E60E /* Lzma2Dec.c in Sources */, + 249F2F55261C584900A1E60E /* hpatch.c in Sources */, 9F394D831C7C25DC00C794C0 /* prng.c in Sources */, 9F394D861C7C25DC00C794C0 /* ioapi.c in Sources */, 9F1BCB461CAF6B3E000EF2CB /* bspatch.c in Sources */, 9F394D8A1C7C25DC00C794C0 /* SSZipArchive.m in Sources */, + 249F2F50261C577300A1E60E /* HDiffPatch.m in Sources */, 9F394D891C7C25DC00C794C0 /* zip.c in Sources */, 9F394D841C7C25DC00C794C0 /* pwd2key.c in Sources */, + 249F2F59261C586900A1E60E /* file_for_patch.c in Sources */, 91C5F0051C76ECA90037E727 /* RCTPushy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/ios/RCTPushy/BSDiff/BSDiff.h b/ios/RCTPushy/BSDiff/BSDiff.h index 36a4e54..695eae2 100644 --- a/ios/RCTPushy/BSDiff/BSDiff.h +++ b/ios/RCTPushy/BSDiff/BSDiff.h @@ -14,8 +14,4 @@ origin:(NSString *)origin toDestination:(NSString *)destination; -+ (BOOL)hdiffPatch:(NSString *)path - origin:(NSString *)origin - toDestination:(NSString *)destination; - @end diff --git a/ios/RCTPushy/BSDiff/BSDiff.m b/ios/RCTPushy/BSDiff/BSDiff.m index db26a92..a5e23b3 100644 --- a/ios/RCTPushy/BSDiff/BSDiff.m +++ b/ios/RCTPushy/BSDiff/BSDiff.m @@ -8,7 +8,6 @@ #import "BSDiff.h" #include "bspatch.h" -#include "../../../android/jni/hpatch.h" @implementation BSDiff @@ -34,26 +33,4 @@ return YES; } -+ (BOOL)hdiffPatch:(NSString *)patch - origin:(NSString *)origin - toDestination:(NSString *)destination -{ - if (![[NSFileManager defaultManager] fileExistsAtPath:patch]) { - return NO; - } - if (![[NSFileManager defaultManager] fileExistsAtPath:origin]) { - return NO; - } - - if ([[NSFileManager defaultManager] fileExistsAtPath:destination]) { - [[NSFileManager defaultManager] removeItemAtPath:destination error:nil]; - } - - int err = hpatch_by_file([origin UTF8String], [destination UTF8String], [patch UTF8String]); - if (err) { - return NO; - } - return YES; -} - @end diff --git a/ios/RCTPushy/HDiffPatch/HDiffPatch.h b/ios/RCTPushy/HDiffPatch/HDiffPatch.h new file mode 100644 index 0000000..60a4e3a --- /dev/null +++ b/ios/RCTPushy/HDiffPatch/HDiffPatch.h @@ -0,0 +1,16 @@ +// +// HDiffPatch.h +// RCTPushy +// +// Created by HouSisong, All rights reserved. +// + +#import + +@interface HDiffPatch : NSObject + ++ (BOOL)hdiffPatch:(NSString *)path + origin:(NSString *)origin + toDestination:(NSString *)destination; + +@end diff --git a/ios/RCTPushy/HDiffPatch/HDiffPatch.m b/ios/RCTPushy/HDiffPatch/HDiffPatch.m new file mode 100644 index 0000000..faf50d7 --- /dev/null +++ b/ios/RCTPushy/HDiffPatch/HDiffPatch.m @@ -0,0 +1,35 @@ +// +// BSDiff.m +// RCTPushy +// +// Created by HouSisong, All rights reserved. +// + +#import "HDiffPatch.h" +#include "../../../android/jni/hpatch.h" + +@implementation HDiffPatch + ++ (BOOL)hdiffPatch:(NSString *)patch + origin:(NSString *)origin + toDestination:(NSString *)destination +{ + if (![[NSFileManager defaultManager] fileExistsAtPath:patch]) { + return NO; + } + if (![[NSFileManager defaultManager] fileExistsAtPath:origin]) { + return NO; + } + + if ([[NSFileManager defaultManager] fileExistsAtPath:destination]) { + [[NSFileManager defaultManager] removeItemAtPath:destination error:nil]; + } + + int err = hpatch_by_file([origin UTF8String], [destination UTF8String], [patch UTF8String]); + if (err) { + return NO; + } + return YES; +} + +@end diff --git a/ios/RCTPushy/RCTPushyManager.m b/ios/RCTPushy/RCTPushyManager.m index 46f0182..8a3a05d 100644 --- a/ios/RCTPushy/RCTPushyManager.m +++ b/ios/RCTPushy/RCTPushyManager.m @@ -9,6 +9,7 @@ #import "RCTPushyManager.h" #import "ZipArchive.h" #import "BSDiff.h" +#import "HDiffPatch.h" #import "bspatch.h" @implementation RCTPushyManager { @@ -94,7 +95,7 @@ completionHandler:(void (^)(BOOL success))completionHandler { dispatch_async(_opQueue, ^{ - BOOL success = [BSDiff hdiffPatch:path origin:origin toDestination:destination]; + BOOL success = [HDiffPatch hdiffPatch:path origin:origin toDestination:destination]; if (completionHandler) { completionHandler(success); } From ed135f7b4ee0253a01503f9c486b4d28307f7ea8 Mon Sep 17 00:00:00 2001 From: sunnylqm Date: Thu, 8 Apr 2021 17:12:10 +0800 Subject: [PATCH 12/27] Build .so files --- android/lib/arm64-v8a/librnupdate.so | Bin 74600 -> 148472 bytes android/lib/armeabi-v7a/librnupdate.so | Bin 57980 -> 90836 bytes android/lib/x86/librnupdate.so | Bin 74260 -> 143980 bytes android/lib/x86_64/librnupdate.so | Bin 87160 -> 156944 bytes package.json | 2 +- 5 files changed, 1 insertion(+), 1 deletion(-) diff --git a/android/lib/arm64-v8a/librnupdate.so b/android/lib/arm64-v8a/librnupdate.so index ff8f7fd01c9c71e021e20068a717e7f3d0394b1c..dee5b7313018a4e68783479a60748b1407575e05 100755 GIT binary patch literal 148472 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 literal 74600 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 RI`{R&5FN|=r>E2X{x7P<9?<{* diff --git a/android/lib/armeabi-v7a/librnupdate.so b/android/lib/armeabi-v7a/librnupdate.so index 65201d69a5ab382dad090f2ac91f348685c0af15..17c40d2f26a22868d868d4d0e962f57ea942f39f 100755 GIT binary patch literal 90836 zcmeFad013ewl}=bslj3{1_>f!6@w`h?E*Ee(Iik7M^K|U#70A;7%dc)04AE7?i3Db zwbq{ZT5GSp&)&Q6sf<|y$8oIhQ85$i<0c?*?-Fo4(@bCnrbFCt7R|H>r?@_l zG9Z~6VFZ2oK}ydifnx+3;`F}w1+zG|AlC;MLm0aRpmHgm2l^WEUn8DCj{*rOzORl6 z;QQb>!U_7~=6+LE1okHnHoF& z4bMZ|6B-+$20V~O{}TpkbU()!@skJf;ff3tpP=AF!51iaiho7HQ+$Jhr}(3T_#|q) z{7`)6AijDK|MVb!+aP}DAb!sv{`ozRd!+A6=Wo)V( z|4+#0)3+HsmoNP^lt1DMV-}fz5$QXSev{09hw|qR;}}&-!QZ&@sk-BlF*aZ~X^jQ8Irw@|`GP4DL_L|1jeJf%H~6{w`Fs_AU-_zW8pm z@4l}YyDIZ$)R&L?o|O4l0vOvD$uYakTTuSUBF0wAd^zy0dGKd4|1IK!N?3n?@^p+D zn;AO;xlw-#f>75e_*kTm13v}rsgB~j@91L&+}@={_`5e`Qqmy{m}V7KST9Dg7P)!KY2akAA@{`z2oz*#GgX==Mx!g zm+OBK_L%j?o&H&&-(Pzf%aQY&Aismq?*W-#hyEYRW9+b;|03G=m4;(82J%gw!`LS>zXtN#c;=4&ic#KQF5jttCeo#&f5`}^_TPj2A0qIKT>m-b zul?$d{cJ@0TaUnx%H=0QACI6t5QCI|A=>||eBb;>ls9sB<^>}9gTUM`{j6tvGEr~eS;UBh^Wn56c9g!CKXFUk;3{dpAS?}EIe z#aXBmMX_TigKQVJw?lWGUWB)8LX3JJ`4J5 zPvrXB|2TMa8H9pI&pLVwP=ER>XrHXFCfFMX{W#_PbqH@peuK;pMf*rr1a>ZAUXKh&Z9)urffq_6+O(cVx0#@H-5|2(As7~|g{^SQt) z9%23C!-M+2X}mKY{)PHBUS=#!PG60RzCimI%kup@cpzJerR1n{DX*} z?8h;yoW29Nc&7odF~ zLLPncRKwoxgMLfo_zaZ40``MuN##udUkiVVW=MPkA|}J0Gi81X|1|Q|K5XsU;7j~kn?YZygz*Jj=%a86@BsG9e=zH`N>}Bq5LNhzt+xJjLfe` z{V59jX+-=Y$g8jY%b?%d2#%&dDgSL?w}PjHpDXysz@I?>`}%hP@~VOU!sPrrA&)PR z{(#Jvqkg6RMx#Ep4ef;-$iA+jzxTnP^!e{{gntVEk07Z%^P#__Z|=zF82Ce|Z}ADS#umu@ZSZ%)AN18X6oUK^^NSVzr1E|P`8)u9Pm73vN$!b;0bGS;i?to6~&d6KMBZKS@e^z ztd*#CM*d^@d4((UDvI+9t5)V$l|ELSw_;V%>aya>JYNIytg9YhS+**_XhDAE^1On| zqSBI*?EI=i`~T~__B&bg^74!G3rh1=uYA08Wl>&Xd3j!WMG87vS(RV7Jg?BcJg+3b zv}{1Y($)DDMXaE*T&mnIp}c~%c`J%nFqvCgT$Q!5WK~}%VhUH3`#N5>s&M)IRTWjT z81nMcD=UjDsxtHXD)Kd`w5aqk)GD`*I7own@5xw^7gnPyIT z@k%+#uM{noXl4F80ryN$rdQ-IR8&{A>Q1@E6&0&0cx zJg~IBR^Ab0p)5QLsYxoNu%d8$>Vo`&vSLe%qQHifJC9tPLRw6aNqGIO44ajpRM9#g+T3UD~P%&YzG#vXz=K`U$tayGE zI=LciCB&KM6TLike-bN+{il(0R#*K`dF5zjX84E_)XX5gy!^^MyP^q$!hD&T&$U!a z-O1}S&Eldw@?WHIaw-d`cMDee`s^za#s`nOKvDd(veNPap}q?41n0@Ar{x#gi=|*P zFl&BQ{sOrDpN(9ww!Ap682@|DF^OwzGZh>#x)fE2NMlY!`)?9qQYe+CS;>6+5)~B}_O(o!Zwl=+Ey%_> zSbQaw#l_3}t$t8!UL{T8a?YQM-Z#1V3=oy}%_)Ne@*an(@(Rgn23o5uw1Txi8!Q>H zY~7Ny`cnBsttb@pa20#BlAI4&q-6R}~g*xpEa-vAn1h#vpeL>d4No z!br=n%3HY#Gn=)vVt#RXenoy2CX9+=pQV(pC`Sd-;G6>m`P|=}ih0F8=UGv_GJgdO zYEZIy)QE}|Qgw72Q_|`ZKTA-zHgPOT$Q9Ecw6kq&(TzSQ+Ld-UpaQi|Ov4yM9ur*au6wOn4v~VbsSbQ;1uP9Sx zKGy$_m6Vfv&hdo|s0Ma~PX%9obE(n>{> z!O*fOzbwz!OG+R$Dvy?Xd06Kc`Wl4_eU2b+HP+*mrQ`cWM;^!w?q`C1%XZ&7zRZ`b z7~fNv0Pzijntke~c@*o)74k<{WmQq(m@&lQSr4FZO9KF(a!i$v?{qa+VOW=@9-6?$ zITFmX*5PCO6c@LQdDO>GI@t?h>bSj|>?(W-CR>B-)%>Y=oqwW@3ynDAS26nikG}Me zz;4Z`_XCb=KiUaYHmo6@ZF(U9UyaP9 z^Z)8TYRg!_H~>8YfL8)Y@a2F<0TqBs06kTJ#{g@Hk)J1ke+~Ez;3+w59q>lLCYgUm#+!k+ z0JZ|2lf!C&cLH_+cFSQd;95W(fc7Ex1AY%U0HEg};Ca9wh{5xM4>4>zu$N@|k21zq z06PSD8Ssi6)`wmPaRl(D9DrjLhNBFI?KO5n4tr0=O~9vQ`hDO(1E&1?*$ID42o#TA zJNtga^!IF2mLAykmrrb`R&26VZ=Kw_{Hweb-S-5Ci^Zd!k6osp{?F{Uez$$*vEM#l zeJXc%{eySwTbEa#>K%2)vGAoABTtR`)jxAWmQAjF_rXc-sNY0z_jh$&`ixuh!I!N& zLuwP2F8b4noL7GNulIkr(lKe#D}{}=E92IV*G>t3;Nh!cP|KN&N#9;Q;+*#0WaGnK z%S(epW;{{)pWCYoR)74s|6k`@{t;BVTy_1qrES$cJ=6C*eQDL*^-~}1nfXWK@tlW8 zum0`#Z(e$l|J~l9<9j!J8UEOf-zTmpdF9VTulytXDLu=pzdQB%oY{Zdvu5i{|E`(Ta4cl){^xc?=Fk4m zcXxJg-eKQa)_&;oM{{Dj@^X4UH5~RnJszwATeJW9wRc+9sh-XERgpOhy0-D~ zvM0Z;xbV%VH*SA?F=yYN3lG2Wa+O&#V%i6yx~t>SyCxlM7~#Kd`nG>8JU=!zLaH_41Z!Gv2=E*9Z5v?I?Qb&@a9B zz5e^Zu6wcK-H|gE2e$re!o&w|Ogi{h&rH7!_f`!5;XeI(*w|^==9U4!0~iCKF_;9P zCmrylMEU&CNSP+TuoOUJm&RchfW{j6FM7z2(6}I<&^K0SOr`uI0&Gp#D{+N%_%~)GQCg{M&wupPd@gzfpJ8AefCNQg6llB5_xa*u;NJw?FNc#)9xl^_QWW$$1x@~#=8?5>Sezm*TS31C z`UwT!NB#pk^^Yoq`8IW(|K~({|zlcf(HOJ z|GW$^03HF*v&M%8yng}i4Zt`#bhaWk7WA_+KU2nmG9C&%3Qz`kMh=@JVknWq$i zs}%Gk1x@6=fd5d0Z3O*iz^?(*LHFXLBb+#usOWqee|$7Os{#;0X`M#dk@xLL;MWPD!67iH{`F|+yPp~g8X z$wepQKpE?093kT<8OO-jAmaoXn`BJq>{Q;(M>sYVDiR6PAj6%>p_n{$g!f?{B)lJI zwuFDr*lkMp0_JA$kr+G%!W?`*VN6CQ!f^1(gnxy#1mSf!VOhSSa_T!ML?Fr0f1VK}#3!kCb3gyH0h2*Y{V31`CJ5r!d_6VAZ* z4B-&?R>E&%9YuIP<}Jc-h#LsQL2V)o$ke zJrl;FL`N9TJdkh<#wp=9u|6Yw2zN0EZ-V{_8=!x}n1B)p!^xWnPlWynkA(gS+n|5K zGoXLM1<*g?MChOJqtHL$H0Yo3bI?EG1n8geDCnQ?N$8(&4)jkr3Hm2&g8m7QhW-iv z5&9>5H}p?94*Dk?5B(E1LjQy@i8=_Ip?|`dyfzU&2>lbrWbP!4$#o~;Z0Mh`0R0oL zhyDq_1N{@;0{s(y5BevJiLin2cIcn*tI$8;Lg=5c1^OpE4EiTr4E+<{4E+<%g8m6F zf&K}<2K^I00R0oTLjQz+3;h#LhW-g-;=W4QANnU80R0ml1N{@;0sRw(A69$DexvsM z{+nRWa~@s$d*2*4V=#a4+?U}WZT<3i`|)r3=rt)4(+c{y zf__s$zp9{LP|$l7^iBo6RY7l1&`&DpDg|AppoUscdADCoTkdZ&Wk zs-QP0=qD9)m4Yr)&_xP5S3xgO(6bb@RY6Zx&=VANvVu-f&@l=+LO};AXtjdAeH-$} zqh`Mce$M0kvA6ANGRIA^GofiD7)F3{jh%Nw5a{1)jwy}iB1 zk*EDF)$3zhS;(FSjj%N{R)`SRSVILC*DNx}c@g^=PLsV^^rV^u*Ys+^WH$=U;;V5c z!8v_BxD+X+FLs^8_r;DhjXZC%ugzLly4Fgm&5a!5ADgj$`4iw>)2XBx0w0fh{%jIF z;8TQo3Z9KR?K#`32{_w2WarsdKYN`R$?C+rY<1#LL&=R`L!B6*uMYozRqef8ofwvem?W-EpSCzlAD7lP%(m7#r;Uxt7J9o~SFLS+#(=$}?K9g#3p3j| z<8Xc&C@Uy;2Md_fj_dhel`gW~p;b4zge?LyJ>ovv(fh#SOP`1*(fdW{5w<-{tD3cg zq;R%%sI^+SYiHoA%*e$VP+Q5>shR#A1}?CM#cOKUSPhedYR@XW(Z6nyEs8ttCZzD!B4@D@I+^sgzeBo zpC0b&FVSR|@)eqdORYnU4bVe>UW7GFXQM8OCP%ajwxHKVb4_Mpc*BV+ETsKJZ+GBT z*0g;z$DYM83_$`w&Ep<7pab@q1N=Ck`7QqSibl2FAe?ShhxK-Mc_%fhP3k6FDKqiS zbJ}~&%_o?l`9z;Be%_!KR%VV6B4t}-_Vog@=Qs_LB^o44G(ZOG-DGVB=t3(P>`AgM zQv49-pL(8d&k~Mxu#h=z+4`s^&ItSPr&N?DCsVU)ja3V|JEwDr?{sh>VQz;o#I>gJ zf^d}bw6lPFn{}@ZskI0u=3p>bB`8f&uWf{^UF)auWbr|G7RaQnI1j~VQ`T5U}; z?1D-=)2Q8p){a@&Y_Km^I{qM(8!4bab9jqf78TB_~+71RQQ-6Yu$(I$*KgI!y< zemO~nO3!g!kTsbjEb77SX^GoR-dz^6CuD#g)GFsFr)Nl1lV3-? zT0PFc<(*6}4sy32%j7!hRYv0)Yj5}aZHX>yPkYt=b8b4!yeC66=($PE)N>)RR_)DV ze!D;HVA{wIRS4&0!JCA`9cn&G)J;C$w5pxg&bBh6wnG&-OBl`{>OlXUV?8>rT07UF zp4z^a@o8=GhKEFhnH!IC&7qDr){@ULD8k}IKBn?#Le(+4d&m32;~x^^8E4MGyCjw$ z_xFohS8}_Gi`{j=%jqtO&XckGnb9HydJn^TgK8gLHVWgXhfi z?Zd2dZ4I{^58QAkx(;>l!HKo8d$F0xPw;TwV3p&@k~I_gj5fVtfoRC)?z7@OOH4F` ziopyr3>Mnhs0HFEDP~mm!dS%F!bPqutxc=Q;iPb;x;I?p1Chh9{>TC`-p1W;#e0@G z$`IVa@%-oyF2?TBdlG9MM?yuN-j7d5t<^{7i$()??=-w;iE)nl4o*kD+T@ zXT{6|L0x;JnenWsYtVQ=^D{)FK6?R|(s;}9RF`|s%|Df&6*oCm#(4PX`c`H<=ymuZ zT@2SQ6v z6?Dt7_1aJS{7v-^$&hXuSp2#}%VJ`a5?%Ios9*j{{%>Kh2oLcJ*=5xhy`do1oQ?*(6#663wxzJmV^{`i~ zi^^RsEVeGnt;{Dj=bV%#z{pJEmC; zyO#_%?&9tX^sWnj(aY<2uhyUM;QVx+VA!}HD6%{M4$hxTU1v$Sm@CGmCGJss0|LXv zK=Z@VY>cXz`gi$Kr01|OQIa2QI@q|MyALfj!*b1Bs$maoJ&n7En_}EOPB83PEqrh} zeoyq?80(0g!|-mIHgf0i9V*Ny+!SuoI!h|*F{CXKP><%4xU*rnsL5Ut&BpT0ZwS{e zM0(=)y^I#UA>@jQr~%$-(g@U$n8w}5O&Pv-#Ey}BxC!yQxG5ud#0#HXMw_V}X==prF&c%$WLQ?OvD4fJjdOwTyev`Nsx+o-+O zoYr$u#830?546t`)iVvJxN%(*_7+gTvFGCsQs^Ya4KW%qtT5*sC8uBgRzF14bd-pwZR23`!kF?k2lo_ zsls8%vi#)nrf-E;g#%uH_Ntdx#qU^e2^Wfmk7z|a zLge0c0$Ep@n4lk0&tPv^!cl0Sc-SZx@5;`|L5L1{V0}4QH#DsmGR1_3u)Rl{Rtw?# zk^48Z#ZlQqUOU<}Q_$SnxF`#Hywn;qe;;I%EyV8`xi1qo_=?5gs&C>2EzKGoyf#ZT z7>+j06<)Dq!p9nG>zlR;vqi&6vX0=oyY_J7n!1V)w|F?yS#fK_$xgR}8Fdf-+WHX2 z0hhAQB3_Deh3|5(k4J=t71)+vw6*TQ7`o4XZU-spXt4x;Dl&JEq#Q`~vJ* zAMYBz5B2*G-8oAbRx{ESFT~Yqyv#4L?sE~_#d7I7>s*u_`a^c3q4p)OPD^o1GLo#B zHY)$C3x@vk)n?S-Vja9cwflb9{b>C`w0iiy;3z78CdyBaN~}9zzf(4~`>WfTD4W`S zzRxWwyUY+?8`b<3toWR-qJ5>I|U8Cv(&3Ek??qs7!pvFKp!r9bie?8m- z57io;JxkzaiZeBJWxPJh73>VIJ1DTxOe6bem zj?qV(W>^#V?8)uQ6^`9~_)h}XAhy-9v&DGK{-X?`d+vUjn>I0(b3xhLH>tUToEIk)Bb-cHlUlbc41b8Ct@jdL8`d;|caS38% z_Qj^zR>Evd$A$DB)~>6ibq&oyZD`SZ*L1a#EvE$6kybKZrL~g2<^IeF;r^^OmG48_cn6oO_qP7zh1OnxW;)X zg}U}vSdaVJ>H9ATYjutM-SA_#|FtECw;(?x3FIwjc-8UJ8S#NE2SSCIkXHGIz_VhJC$QyTa;yKVf3^8zchA*Jh`W##)LE9s;#8h#QR}Z+ zW~~$Be!I3s>r&PJ*j;orsE#DZFa)@SaL-J?C89AKHJG{fky>?+wrjivD-=}}<}Nk{ zbCY$ZG_tcYT3eU_R&j5%^WYa)t@wK~(r)al#yk-hU5ot*|Bo?4=}>!lJ!jTn-Klei z3sL*HF(*4$R2PmJ(lY1ff0U09e(WB7bqsbBqLwU*4Z3Bpk<^234I%7|-hRl-Ge1-2 z#hQ!&;frRKDXhkLNsq4vHTQSSKF^HKd6f+-xnQh_1G&l3bv2f+FNC_XFv`$tlo94x0!>Q!(>RaeBgD(>OW=0@ zn(*ECLL>%Tp)j=MK-``ODObwg@HF>|=5`PB@w zhS#V);dKGR%vkQ;@a-*QbTrelLKl(g^wnve)yap4i#tJ#G?g&jRj+a(< zY21{dw7Pp(|2{XS>q1B!m+-tdFc=o2s>GVGQV6IEuicD%q0j)wbNh$ZYLQp%3AR&C z!>Kgn6E6hRM(zo$gY-FWirxx4;dfa4FNN)a4Hl4vSYYjX0hU?d@1anG6k3gtAvVP6 zqifZB2rrIF6XTuRzJKCH_YK;2mX#yynz)j4^ zXlv29vaQk1OBkImcZ^ic6=>ZbB}60roVI0QIbxiYhi_ByF-_BA*ywBS=Nk>?%|d!; z4$6miv0vELOu78qM{>v`&1mW#u7k7OaC3U-Oxar@Fgequw01tCNSc#ARt+(RFJvvy8)zK#?b??wHpSqHc+H;o#Kt z)Xk%>sgrdr(V0f0b`R~d{Ma2Kr5k>j8B#{FxF8Rt23uxhdYZW@=|oSW5zD0ph$=QC z3*E71_hYWwD&$t$@2`RAk7@b7S693am(0Sj}7=DuY~YyZf> zd%3`fsJ$X*D_%n(ryP4l-u9wIzYAJr`$nSQ0&V5O*mPuFGVE_~!^ z3*R(e3}xfRp|+E5iMjr>F|*vd z5#vVuTxk!uGe@la*_c%KrV)pKHYU-1X2kWMjfryOJC4<(N8F^3L2;O`8oa^WBdc(;WzShL!pRaSovJ3ob6!-NgAb(%x;WQ#W=d=S zgJYj~KielhVAv<#XD-00!9H=SexEqSHVr#S`^0;*SGD)5_KA}{bat>$oOBX9OGXvW z4AR;{Z5cQXz;#sY+=bd^6D?7*K+Uuidzm(@-NEbN&vb{<#R+CzlUCrorx`aPtAqIo zwsZI+5v#p^?9ERuwd%4owJKL}R2J3&lSADN*J@47;ay5G<3My+?ZmP9y0cTF{U>raE zQLi8WbqnW;#_px6HVa?-&8^HZwKU8d==Yn_^z=8;lE=Ip8z$F^wSza1OGB-WW6XuL zTr|GLGQ3;>OH|b!^QzgSUM=hGn)5nVFwk1BSzpW7h1usu^G%`sqc89ZYf|IyUNm5T zUn2x(24k;yjWu{CtyTZSil6AK4Ok7tT%q;+M#~VlE_2S!4f$MLJW^rpctvISvD<($ za-h;iFaBN)4h?2pgC$`fxO_Tm+6i7B*F#pdbK0IUmFLyiMK5p8jKzL}sqB26P`KIJ-xu)Cm=d`Os`?#di`uwCfbZ^*8#m1N!d^{WV zmsW1P?t8v7{N9&~G#w`XFRitue`(!gUw6f#{!6P)Kj)^S{B$c{a=KMpl2~xK(2mm- z)_%7b<~i5uZ*Wd8Ee&n-QHS~|;*+pzPy5Mc0b^uH`w2(1mK}JSV=WAS69d41&$S1& z-+oso1hsR=nGw24O)p~cCtJfqPl~oU)`3$Ok9z?({tfuh9(S`?7RIHV#JhYt>B-cn zS;h-PamwVh@Xe4aYdB%IYdmTL^Qa8-?RJ~jHZ4{)X6Sj+`oFHI+Qaz>BbU_P%qLxK z#-GJ->(LLZ$O)W*CF!vDO(ifx!wD`a%AIX*wO3mrq%^7G6}z*MM+~17Ajb@mViLuu zMv7A*j%q;*miLD!B+wuXoChRv2wTkJLtDF(%H)s`xyZd?H`qT*7F#le5$#$!&^ zU>(QJY3KNpt?Ie!^HuKmOS#ndVX5a@!{_@ozGCsT%xL5NU$LC*yy&pm>Fmm5$JP1v zzdPuJZ)&g2ej49(DwDt4W1n=)hTgEwzd8<}KWR7qj2yfv6Jz^6Pqh79YY?{`XRB!$ zYIko^Y;$JJfxWDvOali#0i4SL#WuelP$xO+K#5mkdikC@7R#?G0~K$7QL zL&It;4_=73KVoNNkGV7Pg)mia(a<&Z7HZE3sXa!tC(1qf|8aYY3kSAlEwyH$!S1{g zOsz@b#yddqO{eT!$|;-2&Q0?4w?`wjXK3R$Xwy-5p*^dO`SD}8W{*9)vBsjgV6dk_ z(ofyI>-AWVL10F`hoq}IPrc6gzR*tN%vOk9tiq^~4Ly$bbU%ae1NIJHvitw19}o%DHN_U-w0b*D9BPFI@2VAVOfB-Va%1D~X7_D>R9So`7QJ4KV;@FYtb zvP;u^4(k@0ZKqVHe@SEFck2!I1z)inuWYa_dpqk~Yj8pOG|u3$X|~5zsB50JINJAb z7*cD7mhQcFPR#!JQQbLlLGDyB^1!lOwUKLkT9seAP`HrBk_v8w3ojK0xnIh99%t9{ zWBlxI++t6mS9)F3^PRonr&~4Q+PZ^Swa$-OoN-!An{Zl;aIp3+$H^l{ai*(lazGcF z+D(?Uc6@%J4QkiZsDFu6Keq$t@3}v8cU|S{9>s|e3z?g%s!J6k&G7s@-?o`I_V69C zLcZLJr=?c-*-^h^ZcHOuBDEqEt*F-4;(J-cVfT@%MLS+tlu?||+K-?e+*oBR>K&^7 zRt%R~;es6gB(;Ez9a#USLG>@aQ-AiL`sZqEx%)0;a2+ZRwMXD@TQm=>dAZxy^Dow4 z5@Q<7f(s|NKXgAau-*f{esAJ|b=3ET{e92+ztl~&arlP!)$Z%D+T17am)4u5`Ycj? zotT04aOc-2V`t{9-21)PxaK5#^&d9NqmQfM?DF?T0DiHixKQ@&*xY(8?)k` z;LF!q;Y9=Ep767;Ytt8eWheV2n^_$DrL7w4JowYV&s){{&&4R562m*CehBVEaD3C} zVhp~%KE#_WS+$n-59gpwycfpf0@tzH;B3eWc?%8YirEHklG)*-|^nDe{~$+_B8+J42%PFX>P1Q z@+Zrqvj&ptONFd`JM1YtBdvX#WXoE~mc?}{skF1L>f8~~sne^0H3xL?fn>?*y1BVj z@bR!psZ_zttS*5bl+}eFq)?xJW)pfA617=|^N)n_tT@v*Uw8<7Aottxd z(xEzT9(=aPrgEuv^KA}h#GY%4V3S51mGaCwUkM3bO>F@5?kOzSMd4dR9iJjbN+qc3 zRBh|{<}~Cw$lIOyO*7ggg@g++A z7^RLgQ>o!{sZ+9EM5)XAOHD+nFUqBIlb2-pb*Q9qnVTB&QI)>$%C9ctBAXxne7$5?&NX$y=0SQzB%0N(bd|P`C(lc{QQG4$W4$2M*P~hs4qBh*$rM zw9Y06@4rQO2sS5;-p(sWV9%qqXoUv%6S#fc=%|)Ut*X|%o-OTxo|RdSw(#OWk$acB zf320fm*&qztZP;AFTKHy{?2^~vnRK2817VQswr2z)UR#SFZMo4){mw!w%MX_*Td^> ze7zp$2fSyC;1EKE_ZsJBqL$8eZQ%t}18(%(&+K$IT+mJ+%3O&;K*5 zqpK~xmH%QlG!kQ2{qBaFL7ub0tKl*{254_Ub zo%$|)DdASuyQ|t&thamgyN2Z|Q$R~Z=1{5L++>t8wXg01l%E?zDG{2y*`jMw8+yC- z?=rlD-X&Y#gu8kZVB=o{dpM5e0-pO4ztIH#nsF=Y=Ig|mWN zpU_(Io-1jM5s1?;gN-Gc@O4Zp`1H2xb)3z&t1w@<-F^GJ>_&B? z!Da&e$#?HvX358~Ugp`+%T!-_rz^!|%@DZ;&d8NFT=wl*I6_>w!5Gxv(@z_b&Wtl| zf9&#%`$$Y?q0O{27JMna(`h#4HsG85cK7?=o$2o<^>&7bdd*R<#|q8VBXC?&b{fLT zA`CWq|I$P2*RjnXVNOc#+)1_QG#zTcaoOpeo2I09{`Q_Ud^>&As@ikAd+&FgX@vU% z)=Lc*{rOk0lQqVkDR9PA^eyeXr!AEFgqzy(# z>er#alaP8aZUJ4z>6GVoclmeE$@_a^$U5N*^xbI=5_Gxkjgv}Ug4!7=U|00bPq8-3 zM7_dy`Zq{FG1yPgF!X}?daB_epwIxBqdxbg0-chS-FGHQceqFvF-^>H208dT zf7pfI=4(B-Q|;0>s%vp}Wm|YGz4HZga+G1&(Ko0K>hJhEX0kyiEF`umy>qYGltU%3 z(Ohk8)0~_8vQ0U9+c5OxRmAAr)(v)of(rLd$Ob3-R;*+g0FoiuC%8G zwkN(T>&TC^V;Z4ys$7^yT3G-J;naV>6=r|UA6a{M}JuwowI3 z6jocK7@y-BX@t6(=zGfV^FCXIuKly+F$g`rMR!m+HyeB1O_U0D`V4mbE@R~0?#{Vx zXk^LXV7zG97Z@)en{RiIzTW=EI>92OcWyQN!&dvoF3D{M?x&tZ%u(|u?AGFr&~j)& zPoZQ({t`ZJCZ5JCVI6jxrE}aVxPK*bX1c4)rBE(z?2QXqxaV`b`-N-15u6RW^V)ul z;JwlacA-TsDF>Cr8BixXBkHoByG&oyf#ju(oNWWyZwiYq$c1iG3bU6r8m)R7f2q7Q z{&Y5#M=zypKG6)XbjEDRCF|H}HbDOs*9?$VGc<2{r_VRkLB<-%2bydjAmvuGR=SPD zM*mHm#6qC4-Uk9D&tT3y**H`h>n5o#iudyjmArz0D^&d#ho`74}x4WOccK+QKF_5{AVNaz!M_hAkygdy*02Y->vQi6X8vobQ-u;`% z(*D-UZy=kBzLwUm=F~|EZj2$*5O<=-Y-jD0MSUZcmH9>s-6k-db>nXv8%#E4pqBpW zvX7&-fj@BgGPPWTfktoFWj6MKo4a2(*>)hE8o8(pwGk=xFT+#*?y|4UPn#*1R?4Mi zzm{~PMvE3)OOH`E8$m6+MmNYgfa9%If}5l=b*>ob*=l_c_B+h&|Ay*~C`ge7pA;E( zzUah)G_T8vvXP#27~75$`1?OijuYfzIdGDOQ#eWLl%7I-apaMGA$|MP&*IK{a;8g| zQo6>9SWOSzi#|ZUGsw9gC!IZZ_2_`lgZgh@n}lH6Yrzih?QZ*3mfX?&jKGqvH?wh9 zn~&KuV|Au0=P^%=Ios;b0-apFt|>PDcK6Y%I8QOPxHUU@BUXX-&r!Y>vA4UATveHZ zu)mG_C~mC_;kd2;Az~@6;VMf!b(yG_udZqzqIp-MU%2`C6KsrK$Qg6{efbm8M(Gj{}&g)vemCJv^tq!jEPNGuEO}IC*&7uZ~8? z)lu-iiv@IoBR?|a7M&n0X<$nSg+q9%(Qw49dUh zRqwSO3&t9gvopi9mYAjmDbHF|&D5H!US`1kotQYB-q8J>ef{@$;D^1ZyBRY8F5nK2 zKkm9>evj|%UfgsMvwFBdAt5N0WXL(m)97;4CU|;-pT~}}PkUKyy5ti`4!C7iOSPz* z_=aZK_3bv+w{3uZ#$=LhYVBsb%6T{D8K*hfZpuB-$k&tZ=rIUqtZlSSRhd#99KGUlJ z^gq>+qn`1Em9=>)18mQG*W-uB<+VpWK4>LB_8PzCwOi(2YlTlUw?MCb9^-Xqd0EMBW-?s*tkpI2GqEi0Z`0Pd z-CB+N`K_*rFElY@N6}}ZJ&aHCZ~5!2Gg(hsVa?fVt)uK({8?|T#M(;sljR<6D=(wm zkCt+yIcrBjg!{c&%T)hcn{?CtnTS6&xt)z2 zaxtyz7}lGfE0sI7bM5_V`(gXx} z|EACCj5GfJTEZ5Rq1Kzm9u}-o+FK*a^PRu(n1o?M;jX1S@LhE!zxL%0-mjpJJQ3&J z4C%}j)ejsJTvqJnX&f2cg7Ki=C$$)NvJwDeKf{ISq4?WcfQU}~4Zd?2i%s|^J&V$G_Ij+LF{1dweJYco z1-D2yN8?ry-6Y+8ZC^CqBF)GYAXkht7s-|Gkk*?G*L4AJBM!Gp1GZh`1MnSo#n&=! z3cip$%$SLr`ys~cjH7rPaofOYx!LlfSEqU5R&^Enr6(OX zu1J?XE!?f@e9oMcaRXlz+K`d%AxIPLS-NLLuFA@pcZhs`Mw?bh7j?Q9TcQ zM!KlZ-6850>=6AYmh8`HQ%wu7=~J9IF~(Xdk;NA}S^Jses*aRk7I#+M@P*cM9IJw* z|G=_U40Cd+J2HCQ1-qWcZLh^iE^K zro0+|FBi6C_gs4lC~c^@=2?67rtS7eC_FUP`U~)(QNaAPc zC(C@G#Lv=ClKB9MpRNC;%==4xw*DR;AJrhv(@(59FY0Wtl86Rzfj-qbq2?t!*-R1c zD?bZp5Et6U?}m-VTtvD^@HvLm?fzaqY?pnWeWG>7F7v*W{VPEIV*g`!kCWbGrFXLQ z9wWU+OYbDqSwW-5}c=_5 zxHS7>{0>ZOEpnN~p$z*HF^pS`Zwx9MGCw)dx@7+^cIEB62ccTqSiCja6RnTz_wf_0 zx&73`{nX-qYEeIx(@*`XpIX>YJ=9Mv=%?oQQ}g<%x&2gjKQ*VHn%z%5*iX&sr)Kt3 zS^ZRIKQ+Cd68fo(e#+WUP3xyD{Zx8CmDW!^&`;gpPu z`>A{Ssfqp6gnnv#Kb6`~jqRs`B`qdf$JJuoWskzIl#V-Sq?v2=)~)uG+RgSEwXcZ{ zJPY)ca5DyQvj%Xp2XNT~xOoG(1p~N+1Gt<4 z+~NUT?f`Dd0M167Y-RbiQ^imPulK+fBLXlU!u7DuFmAlo`#z7~UUB}5xK#hSl^GqE z@C#Q}aUIs>{CfO)bo?u{hE zg58=?Sq4FUcCGdM?zT3Z{Eh2!`x}hH_uUcr#YWNlOZP4jbo&BuYb;3!jsL!Ts}#!J zug2O{bE~?TjqAW~-Anf4cNn-|_U6l%#H}^f&iS_L4BR~Lde{7Y_Xll3w@ho8f%oWW zCk<=W9yh+FQt3pJ8LeHP%o^rd9mNuMiH;JSST*&2ST{xYE&c}A8T@~f0R9oxL)?UL z;lh#K_{JJ9XvDxYE~R9DR>oH?v}UF?F|C_ZJ;il~M3z8n?r7SDHgChP9D;N1DL3tI0fruC+CdMnCL4YiJj zG$OtJx2m6@Um$;;@sV5Gk)y^Qk1G{t_uNGN*iJWE?;nnMe`asQe~IR?Ju)y|w3P0K zTR(xmT;J)?hg?Caq+|b<*_oYXYpf4uJ&(J~q~ChuYQ{aT?|Yz=gJvPb zI1fJVW)Dk*%(Egq<-;H=ub)=qDRFT|YR|Vl+ywKQ4VJEdK%e*mHzWPU9&X}88CP2R z>YE_dHy-ur`s@39YkL_ab#Dp2NhW%hI?0P_jQGY=n}rC`KO28#qWx$OdZ{yd)LtE9 zUVlH0$1LDn7PY>D8fsw~8!fk5hDf0*gdXUjFz&vSM>bk+UX=F}+IRK9YIMaeN5+Mg zr7q4~RF{+Sfh>!FmJq3J!C57HND`k!lPnyqMRo0EB;f*RL6=GPxyD-T{OpU-U*qoz z{}q2L`YZgupdaAxX#nQ{e}x~;YC2MM_=SD7BO_gqzG8G*{N|b6YA$k$j>s(;>hoz` z@1gV@luln(>ZW?HhNa;C-iy_SHL#-aRB@>OtmryOvM9!UbCRcTUf!$ngQUjeZlOPJ zb79m+i=6(z^dkKFG(%(Gv`91{gz0JbrG5Z+WdLV-Mw!w+fU6(CT^YccHV?=*fU6(C zT^YccwhYKOfU6(CT^YccwhqWQfU6(CT^YccwhhQPfU6(CT^Ycco*j^H09QYNyE1?? zJvSiV0Iq%jcVz(gmYBwrIo}d3gLvy8UKqq@4&rAF;%5!wXAk1D2l4X;@e2m=3kUHz zgZRaR_}oGKl0m#}0AJ)M~P?OouTs_*{s?>RY1 zPcBW;3nfiUN!rq-rIa+3+M&}lO%E-i6ojoHx|EAc0VjBSsxnOh{o!T)Qf^ODDo?$x zfMQFXe^9Um(LY1*Nee21Y(b|q373Sm%>g(2dw-L*INj#V09S>_>O0nDHz;2dZM=CRc zS-Q+uqn=B2SAtc_TXZKZjII8{>P4fg|7vv2C8|lC=KB#Om}7?}nD@rym6fq`S?pXB zJG*iISX=@LCJC2|v}D#KhyRrx*c10*QBHk_uSRQ8>q1uT4=;57^#2rr+A>q! zxNiC+$h4>i&nGVYJQ?!y!fu~9)9)5>FtDW+F+i?zwn?Ty+!zYX2c$5j?#)}Rjl(K2|w zQ2oX<_pHHG!yL%{r|Q%jw9e8k3e&Mb-dt<=bC*eQ7_UYfE-53mk_j7?k-3swoNEwA zLK&GU$;P=#V#L`lG2m>KjK}!~Nfyp!l5sefNHTFYOEPdSl<09bNz!r7mFRFbNXFuv zDM`awCmDltsw5R>tt16!74h#Z>{WGAF0u zY9g+5lgHqS!&U0!R9wk$rJbCDD+R7plaq0!!WBO`30Eb!;wEdGP6P8MY)EV(mtS@L zp-&q&K{%Yk{DL{ee8ZHn_p-0DLu|REQF1`SaOIqfdyjJ~W+_=^x^%JhQ{JQejr1M) zo6^gg{nFbL-;*AbCdkTV56e1b12Rj(FB9HMpm0WE?~Hg7|2gKE*xkJnkwjFj@OqvM z&bfOhpz(}&qV>9sW6!;G28-AL`8=qqLL9}Ey23FDM-h&E9A+GoaTMT~h{MuEj3pE* zcnT9#i--Tzn@1hfkf! z5er@NW>eEK^eW$7=eG_%k0?+_+mDGa!SArU`zq}At%EPDyb9ereHSw9W|Nx+M>iv7C~?~kq6YY^|8_#ZEw-hmy4CukWZYG?$_g`seBDAWsjD6iX4q8%tr841pBRkE%-0t6>E^PtU zVf^)mtITB|?09+YJz+C5`|6qqpKrbVUr*3pFyRAxN_wjtg( z^eK>_JQGk=!@?Z*Ox?0=#{!aF$HWrYwk9am258z!5ks=@SU|b1O;96-$4h?RVRD`c zlwdr%yUzqlUrP6%!Wx?4gtZrZMU+n7oacn^d~D~D<>fhGO++9;MwBb2^jYkgN1Tl1 zh=VtMar!zhUnY0b=Lf96+dUTcz8UL^^EE!imU)NHI@S!v?P&XKD#_8T7q}l^*F;1Hzzr+)l9-iAOD}%Tpp{lf8Rf@Q~SL-H~brQ&d;}o-(HvK|HpMEeXq{if1}Pk z)Y37aOm8jyEd-^+nD?;Tq&qJEy+|`Dag`f}aduc1o-*JR%xm&|eOFc(fr? z^H*)S2K~>BLch9sj4{da?fMu0FV~;;o%(bBm+K$Y^V_28pUJLvGrMcjT=Yp=q_-MrU z4r`Fb*pxuI-F>-r?eD8kiMa-f?`BshU{!4WQ^8v5AwYMm$ALFby66?ftA}Eg9pXWa zN1Pm3W*lu-Zyj&YVZ5+snD2BV8Buut<2ol_JjTh~s2!$M#yGH3XrFVw8z3@f>T|%6 zC*d)1(xJ)!;?MrW8I<2@i{W96mBsD4tXd0S*iDIU z+MZcq1N0*d;zX%hX-i5yuu)rfK!gRkztpRA-svpu90zQDw4S*UT+T#WkjsV-t)ZE= zSfA4sOJ}{u(wKVB%H7|(IXKmGF6^LLY0Jo6!?H`CfBP2`-t^XA|F(fP9D#?w zMG+Ky4{N>qKg1rC7P%K#>%8lSu=B+4)%oPVQD-IU-2H=f7JjeJS^q|zW%&&~Kh(=f z->Wh0->9)B|E3?Tu_#t!=CE(s2z5!qr~VD<(w#5qfgcBad$izDB;*bMKZd8t-|O|( zf2sBn48QO@7=B^q4~@4uRRR%ICiS^M5oG>Sha~3&(fY_-=n)%Lw)%1@IJK^Ut^Q8unRO$mCGm zM|b-pB4_U29pCX6syM@h&s!sArfv~D^&#)cg@*%@#1sg=Gc#sa(5M58mVH)z2r&id zv)L8&DU)5T^-O2r<2zSHeVa%=`0KC)o~t#PcVPFUeJ1&F4l>4VfybiU)|r6J@mRmG z{hPBCB3*x^`#CY5!9G{@IlV)D9BhCN(^nrSk(=8fY#;bgoAeL8&rxB2e8G$T-LSTFz z3%|H-(~LofnZhicn>h9dZVTj9^3Y2D*k7_0m{$pF)|gI`LBzR@um#)*ZDbkZNqC`? zge_tF&6ihb*^R2u(Uh5kElIatKAOgd-evhvg+yylg0%$dD4k-D2!7#8^!MivQ5@=; zHTdVG4-pOc8AA1vDn!t;!gG#7jmopG^5AJeBs_YoGTn3&m3qX6b12Hu;9 zX>+A#(#_?Ak2ql4V3%#sWHVn&u2=_$Rt@Ep53ar|$xm`w|G0GNJmv;2qLGqG;we6~ zM*4h2!)eR3*S|WOnWp_QDF~gq4tRT?n<;$oG$6-8Tcv}%la7XBQ_%)|Ln><7&_P&K ztVrS^@1L}hu}^J6ACsB|#$MP&dyLq(?pcUHVsRHkilqYw#<@#9xmfFQIstwU%jzK2 zBwf}-Ni2>Jjps80J$12F|HIHzQ%RwR#x91Xh{dpoy{fo;z-kP#>NDaY*ISWPP0?1H zz<+i-BA-5sn2o}k(iW1cu`2mO9Iwptle=*+(h?EA)l^Nb$so8 zYn=i@wEht}QhfERS`s{G=o*gEG9xmVJnuZr@8Q-1@Ozo!#o4X(@{S~LiHCP2dnbBS zjud*gJJqXpjGcEx>b~cQVfDUNg>mZ@vdl+cUgMN2XWd80XbAD;!zgM8|l% zZ}1k;r!FI|v%Qn>evWr4&bi)VoF{k-ah~S=k%x7fJTzL>^}`WOu0-EJ?1$!a+I&mX z)KjINOykrT-R8quDR-pBR@`oiEwIw)iu=}TbAErdQE#{}Ps2Zz;}%)GOwRlDHl5@u z7dBfFO^BfpX4Z%+5-Ci-f3CCzt0$Gow}*+ti@B> z!k9HCi(B@Y!R|&G1pX()u*i?^%OO+EJ|sF-3jfm!ukSF}UE=CVC-9pw)4TDKBRw#| z_OWI&@*MXwD-&tmVU zT*lG%{aM2!ohQEZI+ECZs}=xQ-W8~!W64K)-S8FQV^$Uqe~8{qN+7c;b)Jo zT}tC)oH8k$Kh|IBk$~5Dmhu`F6-H@fjCjiR7(8)q<6EP{6nuG_nFeV}9(}&WI>naT zli)calzJ^&sTNV*%s{J-{jpeQXQtTZCLwO-6zqbk*6rsgT%2g9tM>acPRwVk?JM=x zoY*_`m(D@oOCN3_DY~iu>0RK>EQ#OZ%@Sj+{625S6nt^ICQI&Qve8Pyf{vg&3 z(eSQ(a(Pggp)4p{f=MS5IYavei5M-z46eUPF7@>l+s=R ztHCP9YG(!?S)3P^sNLe~4;B9BblVnUCTC6+C90OW+_Yb=gpHm`QgHcXfrlAjhG?iU2+Clfatgh`-*OrxtWjyXptt(*Ek*!9m* zT7Mr`D!sq?A`ZhN@LIe9IgDc31w;FbLc!+pDvd$(O`P1hvix&|jV_8ZpP4PDH_bP-dI^$BQ$1R#5A0pukF6(7RTP|>Z1>&W^~?%$D%*0OI5*QL*4$8|RRz~b)eEP<1LLCgu0N$zOZ*?>{>OM;B}@_1-GcVl zcc_9cE(f(geaDy9rFiGP1dE&Nk%YsNieR>l^CzcD!Wvw&$xqEI-DYWCwfrgDX^iUo zqLnLNy?Zf%UgoH))N37_YEuf;%iax0iN!O!qCHeT-W9%tkuDcRcoVolH5>QY3;O+&UV zx%0Nnzm8Y-KH`;?He*%h&#sF{uktPaO^lB>xeK;^kMaVCq>eo;*k*G7t*4eI%6|<- zZEqKCq>vq_?WJ3(UUXuN+NY3Qb{5c^Ykm%P6q&@3;!lDUkSQtMig{#vMSBV23_4^L z@Vs%50oO`;hnaE^=T~h3%#~%6Ot3DWvKqQ81L%*5bUYDvCwuqeT3_i_j3#15-M;KS zj3xsP1Ktg6D|?Fd=N=k>XU^e`mbrpQCLXivH=XSUnZiWfc|lPQ0ysJ7`NwJuKRI5ascT-|apa zP&33Z<=jLM;=GM7-CD4j?gtN^Vvspy+}@{=Uqu-zS5k~rjZp`8Ws)`}`i=pkrNCOC z0QCO8cL>RT0r_fScQR)mB32FWmWxlt_sZIIZu7`KiJ2hR_DRX#*(WUqx)zzT7let( zTSj-wyuZ6!mc07!@0JVvbT|a!ngT^q3HR&lv5#pf&>b&(kZ7h=}eqYX%~vO{ODVJ^-cXJcK&ni|1MumxoXN2 z3BuuXKLx!(X^&W2KzC3YkJ28CK`*qoQksLEB{F%Qop`$kdn3h_6gR#N-XL;{az*iX zw4?9DG3d2-&S3N`h#%Vc_IL2o7OJtQR8+xcRg6m=iVDM2G{s%((c+|2Jk$x2=~4P#B)zaBg#T_qH&ULB5eLEwx3!X1ydZxo)L zK{GcYCywG_yLzB;t^!`h$xgB%*(uvVvK8=@%yy8XSwYzZMBV9kJ%BtzHH>9J<>k}( zPR?v^?342vKa;0KzO6j1BAE^KtWpIJBq1Bfsu{S$l->z@a&WLbA{2m6rW%97^@qSI zCb-k_O(A3o3~Wn=%r>DKbc`K4C+oMP7I;c(kxQ&*0rHDA!jc#Fy6GH!R{6!5Jp*eV z%S9aWo|R(sozQ2(TK`avIMI)|vTg>^2{}J4)1cJ~zYSS6 zV^7=24qL2D8NNnK^UMoGBTC3IKaDaiv`qXeqIVsgD3kNj)=Rgd3_tB}wP@@f{=!f# z=5!ko^ZIwY=@?{(he+>kyEw7?DcgEP)dwe1%vUTBX5d+DY_!8;gYu1zc8twQfsPLN z0mRs0HC=-ZukRaRVv*W=F+xSKuxBL91Y*1=>{4lI?Uo|g3g_|A z3;CFkVT(~SB}kC!?LGMo^ASAf0 zpjpa7z$me}2PBvNB8XvvHNYXCV=QBfLEwj@8HiC!@ZuYzc96;~?U{l^NUKVWl<{MP z1-b@%xQp6;@mgZh z!PBU`1+m@5=$`|gYjtVPwY!9$BL_?t+CD}=tdqi#XaRS*6ME86E*(8u_Q%0Jo$m@K z0&Mc_BCk0OxptLxZIEU73d9E$G|2MC-*h5Ck_G4O`UjC4LfU&zSj{~KN-2?B?dKw8 zvc%2Zcy2~nH9<1L(_urT2eq4VnuYb#SMF7NYDDdLH6nGapI(MtmF4R2EyLXjURDjv zI<>k6_IpbAX~;L(0c)vh!`sLuu@bS!%aHkUFRXHDyb4Bc7Se-Kxvr}gl=Q*C$qpH; zTP-Q{}iR<%)k|^QhPYJ#uMuq^3T$lmT)GNw?1&!sLifH z_{Ff)ON>qnAkGeV;T%I;#De+w_`tRK-wiw18>+HjU5_~_Gme4HEpfvZloVqW#At3X zwXMu3Mh!u>tqT7$g9f1(_p^fGj#R|Z5Tklrv2Eov0*eL56fv3>^mSynrS4#NB7%aE zY#NFVebe3{6^cCV9kd-dq*)kk4p*Es9ajmsN|2`FN`WhdRD&y-ROL4yy4F2m9`|^u z)US?33Arb%lokrvZDO=9KuoEKiBpJHd>$}V&~cD+ES`+~QgOw@QE(V|)LBNMayR15 zZ`&QWF_u(6gt_}LKs~#ya@YQx&7)(Zd9VG)Rme!7AjsB=acPHzC28)fk=or)1!ZJ? zkYj!=YHIk3TYUSSi4hI4WljoHHP36WaXBij5;KBnY3Q9}ge1K0zvy=Cxok?Ze8 zynf4ZZhKKZZ_h?HCVZi#d3LRx^j+3%zr3D^(dIsQt9Pz9%FsVYVC>DZ2(MzBAF;RU zkX?XzrcWZ3MRXjueUH=Z0JgNg9~fU_5PrL8>LM|^BGAx5VgFH-VfRqWP@1>NBvg*V zgt?E-@123E!o_oIItbwrNua(X9`8z4%|&#Cj?3HteQRMKja*!neJB|T4(iK)hyS!rT0=L!;+sfzWEt5Y-@$B9LT18w_?=?(d|&O` zyhppYczJnco)7P8c{|D{G!mt3%ypHNk%Qo`lWW_RGI$ zLcH`wWbq(|@Gs1Z@eShA5A{F!I)ga+;N`uN;cN-Y;Zcu9@4vL59b+vdgvafp=j?sd z&OHu;&-9JJ;7c1u##q!8RFT~HPX9@OYx^W1+se704)Wwlj8%eYoXJ;Q=iB4_O~fc! zkjYTkv&<1H0DI<6`(+P_!d@MGU#G_?Mf-2;)5B{Gc{wC$GpaDYYx^Xi#P&E5Qw;F) zULeQ%>f*x1Qb5&M(U?hR{;oblhe?P=7oZdgyy(Q}lDxAq9 zpYv@vGR5GCLR&OicIg@%{S@zg7mj8EjyC-RIC=nZWW}65L%t75?*9QKx&JOCP5%xg z(OTWtAZhtuLsB&Q`%5e1khG$_G9QrSjzN-}&{!UTq~(7NNzv#Vmp%??07>YJfx^=J z_>V~U!_b6Z#Jpq#o*w@P@HF#c@~)9_6g8Hazlls#d?Kn`SUJkocF;=h!;u6jqF;9- zPm6=*$|iofpAA38^~x2Z(rOD&=@_2*ob z4z_iXypoE~d#F#v{K}j&hXF(2c^K-S62pW_c`W~t@~RYBkkqijQNoK6>mVPI*^y<8 zG1@?<<9a8hqGUmAwraZo$yP0wHjD5u39bk=;I=Wvbk~rP!3$T^X z>mLY780B%$RA(`gs^{t6C+R>GsQa)QnO;J(SvVVYD}_Z^EiYVT@SE<)(wpb#r86I~ z)3R5`%0@)m3g7;*D7#~5Xeb_cioJ8Y{?U>0Q(r>nqgVC6MEP%oR8o{L87W_Dr={N? zD}4lZ2;#nRg1*Wt0A^g+#q%&?t*}=iX*VajYxJ@ve)}W#gJTm9)Hy+c+=WQvY#VTy ztc|#jk2PSwsp|N`S&e9pQe;ti!HHb#@VIqPzZUDxJQ^D=8oi91@tbxKavj<}vIlH# zS8i++j#h0z3sf%E4rCWbtTRyR&T_;dOm!!~H;IIwx`HeNK6;(91N1JQL;rq7+ez;v zkKXx@D~CJioutt_zr5m#-O-NTS$d_cW3Mx%xh;e^&o=92RU^sW)B!rHm{MB_hNK;P zoFpg3ozez<$Q4sZiYLj72s><(P5CLwO<$BgdnPn?%+xfS{A82K?#+gdCfK{?5C z>6V}PxrXF6?T%^zIb*{4=m81$y0qT5j7FO)e9Q%Hp|Vv@Gr3yZH9ppqf{b|MdfK4r zU0X>m?|0GY=L;}n%@mJL4#tu9u^q|$$F{BqzC3Us9$5; zya(BqkWrfM495}s`8gM|>g+)7njEYXo`nB@(a|aQYTA-_jNExg)O99$cw|{f?{!}x zj>NX49SnNATWsw}dXDmaDJ>_v?zSnA&0gYpsYAK7Tffeh{3$I@wyg^EFX7qPS+hymxwLoRe)E>!+G#9xZQ$_w71c>Pe|58#z;XdpY{7y>KR=(9RGHb|oUHw$i+a zF6Gwb7Fs?VD?i=Opr43^Yu{l@IbM^o4iRrTZ?+&ssfDh5=z~c3QBmQg-xj)NfRaVj zzs>5`_MHRtZIhpST9@q6G__%6t+&1HU@-f^uhMl%G055LSYuOfr1$(^t=DN=o)Hr9 zCSmqCp0TCj?pQ?nQ({!cd}`Mxc-ZHxsQsqFKkTAC;O+Tne>?m}GP@_(6Z~vCllzvV zPI&t(dWU`POdwIK*s5u+waT|Huxcy#=Gj)h;_;vgTo9!c?DDt2B3)Xnqpsh|5L+)1 zG3mxQ3!D4*SxTzipUje|hCV zL#6%8l~W(O#Xe!x7E$V7`p^URrMQy$U&htTs|FwX@}VO8SF09R_8#X^w#tk+bB-x? zf-5Se*i_kn9Q-08In%u^VJ79(yTSdewl~(j6JnVaG?yx+S>7d%_?}1K!&@IR&Rx)7 zX+tbBo%mPx1XylnNTNdiF>*id)BVo3e|>#VfKQ#HW9k=|Q|g1C9^a4UGZnYcn&^JY z=lsf!npo5%K~1Vx`)(kObtD$^j_$AHvCsZb>MS3vb9k3iHVTMnFQKuoiBtW7R{v>0 zHg_>N%S9QF>yX8Z{B~f?D#~S=K<}=3pbC2^36B%49k6!={l(wWZsWjFylT60oEQ@Q zG-p^e`fLdHIU+}p%YqmX7YkV|$VhfIiWzA1X&-1)xqiD%(M##D){p^tr{Z_wSfLJ_ z$Y}nWU#|f!0DYe0a-Ma*QvbNV4l%H{XT;kDS%0U${)Cw7YDc!-H5n^2_>hdT+M|f3 z2#!4Gt9nB{z4Ks(5TnuoiFN+zwWyCUFVtJpX|A$4886f!(lNut=wxQsS{1M_{=-0r{(| z+>kL`i%7`0H}z=<`n^=Er(?b&er|cdV~{!hp-&n%X6e(CH7dE39DZn4kgOnvryiOaWN)4E z(5*p4N_@x`lq-%j{8WIApW~^9DfGW}Mgz6@(+l#3RDrL6Pb3#_Upz85g#Z<>@=)~3 zH{0ut_U&~eQZYJ4Zs94xT8}YF2ELKa(=+zp+Du(jg&Ls%yO!eA=nQ z-ZDbZyf)By$Nzz>?qNj5BzcH;8cF3wXsYSRq}&@|8F0@`VjKE!SDumIkS)lmJys2k znaj0BqbCDp9V-ysqrPbL zEqrm#cLq71Nggm{PP5*nufr^n><a4;0b9Ipmz0VxDHdLj_u75%R+h(0s>VIq=2vh}H(L6GxbqzD7`XUb zM!dBG_cr35Y4oi{xbqb5n1}C3nxcqQ0a;4F>vi~2kG^+n>>jLzBG%!1EZ(%o?k;~F zJ%?|-B4xh5T)!wn)E@-WvRInskVX7q1LOoh2JC_sxh*JH!7G}hPwqk_UnY+f;#{h& zpl8Uk4e_gefX1RaiSMxP){vax{3r3gRc8Y~#N>St&@sh`MQnQ>UQ+AgxT2+9AtXSy zq;eXa8BO)*>7V;Dyz$7mnTU)#82#m?8UGcB7rN^`16awZQZ!Lmq3gvBpLh;ZrA(E< zDc`7c%K;||cYPFKsWkBk3i}Gg|K-$t+c8ns4Sz#1!BewW;YFrN^IKROR0d_k-gD(^ znV|F-V^UzmZW-Qd2cu^2>uJOFPYMvtAKH^Qg35CrfSiYbAE6DK?C+1RNuz6PC1)QkLq(>SoK99T$l!M@ZZB zQizw#h!AdD2J5&t#K|nZ$oE1X9maD+y3^Jj{=aLF1+kTKf~uwHw}ZgIY-mpG1( z1qYXt(#+HqI}bu4`c^&m9ilU99S;4KdcjYO569X^nrQoU+b3eAFaCwLE^lp$XKc$S zh-=9?k}>Wxf<#97qhz-M86WsAE$sJ5KK$$r89l$4QDASdAQp|pG%@vfGAx~l;>EAY zyUf?{!jB{{#&CiJpJ!M|^)GT#?B+(FN%(0OGJ3;v9x~Ao@*WTpV&73-j+pN88KyF&$;dg?fBborM#pcdPlc>1Wz}UfC{0?1 zyq{$=AGT|rd&IulZk4|WZ1G-zO-*b`_7>K`LLjZLF2zHf2Y@}!i1uz`Qg0*SrZp+v z5_>~^q9e^qI63$t>t%amns?eVUQgf|#bg-ryAjU-Qb}ofMh&i~Hfp?F#Gz~rDdi-m zN6d8fh^ehwBgGkrJ!^daYlYDk=E+`+*L~pdy2F``8V^%nD-1>lFVeT*9Xyxn?lXOf zH`jv0(q=zm&+sz_8ZTY=oOEs3M#%c1Z-#EWJT&AS`t#608X-eCq+q(w;s1Z(e<1dy z0bdSAQ!i;KmjTQ^R7`Trc3i7TWWAI`+_IQOv63mCU8(P-bxR{!R^9b+fZRTbt`z0% z=`!qzR^Xt$A&G34up0R|#t3=Bm%Z;mtF=5rl~VV#od8}L4jE=B1L-Us}LZ%S}jj)_(Nm7qrwz~{-_Klf`q z@76Q*IUNj*6Ewl)MErBKrUv*}v8`195b*x=<7??t38mQI1&8jkYqp-Qf23o!sL-AT zX9&*IrH0l_>B5&1mz};x^6qrd`}6H*h1mgF3gv68x-+8Abw~L=^sxcuqGdAlD328B zy4qkK2R_005KT)@vS)(8 zwd@P|G;~yWkMUDF+F3pl;u(!6ttCxho2>OIZil{ofc(5wkT+!=XFUXV$3qDkj>;i z?&JV93Id3zu{-y{4)8(b5SI2{Yu}l3*?Fgmj_h3fywpYsk zvsbzGeZ6WcBw4bd{-$*?CtgO;?8G?*#9IVhD!dm?lwzbNokf~ajT-tVhZ#$L7k+fc^cT+~HXJ`2$ zJ)~qT)hw7G^OrZL2-!4Nvc)1y6rf{3e7NG*5fcSALdd|y^w#S;vN4~J*jc|3vq|@W z4fDU`AP`0h@j`A!coGUz_G>*vGN=V0{K5b1gV@t_~W z@ns4j5gb2DzD9$--Oe|y73Nh*jlipd7rc;LKx7!F5*nIm?pH87d>3yVjM_p{;Uwr$ zs=0&&Oe^yhf~tc}X85HmEBD^wmxdlEh1+vIT&SslYey668@R8~T~3ie+A4k$HjK!o{e+m9S}8cum)sK~K0;A01)*=SqZwYI^2r{Y&i z_ZVSARi-elUX2!F)hT60v@WJAMm;Ycbo=xeySHi13tg8KP?Z*Jhvm$z#}!*v?{W!f zu`+YJ92)lm%*unXP`C+v#iNV@bR3&A-%6>tQe=W#%_zThXHt*LGqclx?6k5-Dp^0> z)OjXg0pFx&79tCLCNL}Y16x^RD0bz4-9zztV&tSU$w=}1`$6y?N^9)8J4o9#1~rz% zz6PE&eM+VN%7ddC;#%-i6~Dq5KoT_=Z4F#;@}c!4G18#s?fUK8`c&Y|$cGs3*$XM< zZJkRgZ`WWn6MZ4!HLf#(?3~1iQ*|bg%lx`8M=LtHO^7lk?8)r1w zjiA_$1=8j{Y}ajm#7-ta3hf82KM%6&dCY`#*gV?1j|Eg((3UxLM5@TlopT_&ERC%R zDs83mS0+43Tr1FwDY1Ax$f%<5ubThkju${Bx~B`G)J5TKtzekyLc~Zr*3bQ$2zecJ z)QdQ_V}G6sMahT+=(T}vtSR+Ox~5bE-M6l`PjD7uU8T+>xxeny)(k~=fAcdjHM3wi zn@Km;R9yap^-lBA59?2<=4V6PUPhQWuEEZ3heQ{)ElJR@b5Iw3fk26s?pl{8m@`AhkpN?x1K&Q(jMp?w8p#E9( z3r;Wz)mU-d5S99n{5d|r{}*py6)2Jsk6JlXY#5&es{XceXzlUkI(AJTFH?l!0**G8+{4&cAF&?}DCQjws21>%S_LFPuo$FLBvnm~ zU@$@g1T5c-JQ7;0bhAoyf;#fcy`+hHh$y{G(`-<%d^@a6v1Yh!GPen>Rs~EQJVt}^ zY_JQ+HI0r*{xBvVh&nH2VN5!Kzkh?{HH>`@#(qSW)C9Y!;;JXnf(BTXQ=CBYf!58p z4MykoeG=d$*n!XQtDm;~lYnAOOD8M^I+r>>1}}}>>O5LvFhGMuwzN%$tkI-#Pxg(k z;&(h$-(crAfM;k|WA2pNYN2cy=I}1o-LOpJ-m{Ezi_4_$vgI;ZcnwC|`!rse(A1&! ztZ{-DG-%u^Ki)>^ti%dz%8jW;oH7gEZ0>{fb`-Ceg{0A54qhZ(SDz*1f^-z7e*Hvy z8syVxv0)s=SI>T3{|WFI;<97MVGXg8-=!27)`OqUtG`a}OQ<@8owvb$D8Mc?)G>x! z2gcPP8{Pv**W}^yCqb_9|Fy3dE>wRKNH|aTribi_&b{@>pf_OsY3asSLuyGUWDi}9 z(#>eWcGSNZ*k~?np64QxAO{L&vBU_f=IuQ9tDu&OHcZ}hOl)l*h_+oc>W&4F8rMzo zlH9!gM{WuyoI9&6rHMqKp)t$c1=x|RT)dfT)lfH|hW`moW8L%5b_xZ%#QGBKpz7@; zI|n#%AlipKizNIXjh5|ZP(cGxf9&@?$cI`2IhLhjZ~X+_g7TX)P!h8Wx{B^_UE>u< zN6bPYY={P;U&Y@4StES00$J#RfiQ+__nm@R4}J+&*|n|O&123&H)qXh%iMu{NI3)1 zE%=6x3PIj>U~O(aL_Rk_ExbJ_-|RS8;a zz*qW8-Hx#ylJk7JyvbRvZ-T$4J0teaU9or6jdIUeuUXG~R)NFedvn_gwr68LNw_Pf z3H=86Lnl!;YrM=fNIuO}MyUhsq&AZ9UKa;1Y)Ix9mtNJ}RNfsv=TbJiKn>Eex{=2g zxF;19qQ&h`+D0k&movsTtwIT9U3r2WS_nWWc8M_-O1~rPhs)rZDx_|jDY*6;ThMbw zZpUHplMU`p!Q{{O%oL^yhhaz5DVTfY{x(~AFDSuw4tZ5xMqWPp{&+7P)vPuPG@k>I zB+ycyLo2e}n4|JmNRmm$!!dco2A6Tu!pfXpEAT+J@J;lVtH?FdDhCwp3~|ydx7|M8 zo7Gl=a*m1XTL+>(l=UCJsjzXozo&$9gh~TuZKnI}bJh%*R}EcHHP-Mq(fq4&@MZ~! zUpCX7<%TSaa#Kq9zP42h7L01zP-+V?&GC)(zLb&HJZ38$&kgAn(Era3G9=maSpTxu z<CF9^!XWBo7e z%55WI`4w8H7Bofy=y`LFWLvWy(hP7{xgX}Wm|@kxFmr6M-mHY|LNed_Y)~qxu|5;z z*z^kMF=N_G_zGpj=>_R?rLnAEOjoUN-RNH7hmF8nzmC(`WgQ3VIl zM_IKQa`u7fkqa?7`vfXyzh*T@ z!|y-%ILOrTPVCNAl=(64m`3kh#+_rhW0uF?six~6_uj=l?dV&-$DOxuM>l%sW8CQg z{-a!!ETk zsGfv&W?qmZV}V069c>x+$G$HTsvt4^CVJ*-6*Q367<_&8m)A0uK$c5PU%|7ATJeBl zhOIBvkFxdCIu1DDwHM~Up>&VDgYM4AhKXmy0XbcOEtJiKWVMiLUAc^0M+0eft zU$!D8uG@{b3TBYbREiIFgMX(|EV)n2b=8Q5*CnvM>hTk9#$qMY;awWxH+4Ui#Mi1FpG^>Eo~yV5g>-h)?vt5R&nD#!%@= zlKtR-YtA@4J$atKYf7Iln9UaaZax2=XmV8vBi2zPG{I{F&qBWhyiFw_@;gA$Yt`z3 zbqlB+_cd$PMBwgY;zBp}KyOpu{WUHey4NU|qT75N9Dfbfw&&5@YXmf~Le{mexj-}(F@|*(q2HPek&cQ9{IR#xJq;kkS z%&Qz$G$Wr3jxvGokB({ySq4BseRr$Xr!%Q;)KRwtq|;dN6zJj$)uG0kq}kqN6zs_rF_zdxxYxje!ng!fm3gTM}YZjt7`8NS?wkssAYxzh_JPIKbTcaX@n0 zgY}3xdFViZ{qjJ7E1jK*tXPIPcM^vNmqzLYkJ$dIP$(=EO_%11W(_1H@;y$D^0-%s z=J>NgR<=GUVTvm>JixVB-u=08WTuMhs&E6MMQQ52E9blo=u-b{g>DtfY zYx&>&n&v9)36OvIwGCfa|IM%AS%RCs^gP%SW!jgkd(fK z^;#byk|(hTs2NQ!iDAjOe~Brki;nM6aU4kkjCW2tB$Sf3Aj!w*K2wjmAQRfL+pU6i zj{mq0_hGLCy8#u0`e9m+7BJB2<+${#P#+*`!m)D&Yp;#n)^_PenecMe7|MS-5hK8< zcPBPs+(75awcvN~U&&~NBxsjD2}r25nmlcbdY9flb_49uS(3}+KhGv?fP}*fiQh(c z^G0wn5{pS#<{Z(D?RO=3l$7e!&H>fA22|%8F1}f{6)jt?Y@VZETfPC>2_-1-Hc)=* zrxeZdt-Fy=VllKM9U-}NCFr~EaI;JC+;5R3PyXBkA%%3mvpd}68u{)S*Iw+R_rsd7 zq8DGt93hUEdQ;mhur(QqPWdx2J?t|9+g1RRegxZ*`>^MzpW>!Ma9HK03{KIHfF%7&%68N;+-fArL)69M&s6X3c}1X3NlvA(JO&RWU~scyHez+SS- zy1<%L@rNG3zUN!YsWN@Ph4!vMpfnX)On2O29bPKDQmA%gmwpLoZ}}dI#Cn1OVNmW9VY7ZwYkrDO}7YlR+2r6Cn!7WjaD=x9qHfED2@&>?;(P%Dl~-&RpuBik_0 zSrkrS3HW;k{HA0X?M04X1r8Y2->!uXG?K-(hK;a$L}tlWh)p8{Q$T8`*C4Dl}&FguLFe_EVtWho^O48{pFE7y0;jM>5cB|7FW zq;o1La_W`xm#E?E33kXoCeW|8!=8#{V4X5l*FvRYx-P6N_9S2w77T7^{A)(6mx$rY zxe*>9Rah@H3V-hSG{8C3d)L{rdLPgDR8*0dfomrSW?0%52>tK^X-of|sD-6rs&+|6 zn|;0Q%bqH%W(GTo|F5`#DtIGiQ@B-9%uR;#a#K5(HSO-0JtC~gKrgtQm6YO6Ya6vC z{;hrbzUN;HzL~aHA11HT1$|MVXY}0lj zfOrE;(|nO1PnznTlBT;bK7dUlV{Bdam+0MJQ_KpP3ax{S&0k7i#AQ%Fyy`-^|s z&9)VY<+3Lx6-g76g2bzb#}b~gx0dtU`=g3WWu1oQGDvdzqueFFQ?^s{!3nXXo3tdu zLy2j=t(pxy!f(G3@^9sSWw7iqq7Hh)47wXs2tB@gLeS>6GUutXm;@w0Mz7$b#bJk@4) zLE4jyQA+0h?6>X`BkmS0{ujkf70t>B6a1hT0=>bp>B zPmBP2MA#zVSl^Epg2w900Z?>&eS0U2{fb(gQbN5G87t1;r4~^+YOh;l|YfOG3CoODj zr)0Y*rcgtB)gQHS|K@J& z0Ca!qkKT9z-#hY!qIvz%_6rn>D&;>zy(5}ON;|slU}N({X~+KP=g@1v(Jh0|h-YXirQXE3@)reaA0YZY9EAGaodh6>mOz zp4lGvMCL`AwLjW--UUc9bg(8+T)B)19${_P%NLURqvClwKXy4Va4tqjMKvna))e_D z(T=#Jr#}k1u#2Fb)bAj%n%PNh>8NBqAA2jiox!?z^Sr48Sl`5TF`n)}xl$!D2_K7c zxb}98ayaOCFh0gqN4F02Oi~rT+)4FH@VCbtOR!VWk~W;L>evtaG;6q;p}pQU+(OBy z7A2}8v__pS^RmEnx1cJ;0_2C};flw}D`wLf9I2&z-! zH)X_m_qZOB?qU>M{ZI)zf4ZSeu zp5T)SbO*~od#DEoOJEC$Jqgy~;i;mhgQc2*aFw{SgFYX5ViL`;mS7p^s(?B291=eV z39S~mL+YjaQMPMDFVY_^#rWL#03kPq=RqW}5V<81# zd6Y(Ff8`x2frBkbE1~N4d_#s89Pe!$H z43*SUI?jCDrKh|BhAeeLy#u+TIV zojPdSJrI2XMdeGnJIW!Gt;7=odn*?5Cl>Vnew}$J z`uRJ0=i%=#4lTSIq|)EU4tcd=#-V@~R<#e?>1a`X-67CbnMOKp zgRrfROR*+k?3NCXA6<1E{0FHQNbB;dy>y>H8C=;xdja`2`qjFa+K^OGugj+?bvYER zfOPHJx}6koX~t05@rKqch$j-fh#0Kb$IQRh}e$!uwA=$5~(o{Ft-wW_NAHtdSycgi0MK_UD<0Q;dE@tVy zfOaPvqo=5^OPs>c!p_3Kl92Zx|NIpWx@)-Vu|`I{*eR?W-H+W)MUcrSC8b-O*}1SllrfW#Nf!_&l}5c=AS8=5-< zos7NML5#E|1^(1YvY3a9q{oro8cAg}{#wixsLF5{TrdfHTy#&%79{Wp%@(ZTb&$7c zUA4joVkY8&knm)1EvtJ@Bm0WQ$!D;3i$f(ynkVT;M&~ZyX;G&wuVi~M1H96&+sk<6 zPLlsC-(H;Se8jYX(vUnx!cD2`H+@P-l<=+s`Kn>li!7%SN^7naYqWC6c~go!T{|ix zu{NUz4yGriNO>|zsEuibwurt?Npqb3W=)fNIB%?_1~*!I>ZpGqz?k>qz^=^;RDRK<{aZ;oQ$Do zZ<_y#lZC}QV@UP0*zZ^`@2s)&4msorbo~0GvOcu0#_TlN%?^nHHcJld`NI+f&M-L2 z^V(M|%Gy1!{;`si;4ROut@j0#i;n4EhX2z9A+5tFBHkWy51QOQk#oVjO>FS2u z>#mGj>@OmYl(6LSMerV$o~`&bxa53c7r4ZknY@3hu+di5wbag(Tv(_UB{j?xQrHiF zUWRF`i&Ic>*zVSxy&0Bas>d4+IlZwRs-@4Gy3<-1lt_J|)dhJ%78klzGDVcTNls@d z?H)xBgQ$}e*E}thvKb0J=&;U#d zPG5OEa^)Y6H~3!?xKI`MN=PojGh%#(WbY28+{5=U%^OkTfmn$d@GK#QQ;I*_GP?qh zC|_@L_DTmF56lX~!xK=vL?{u*IQE8;M!$PG_MJTT9f3ThQj*FXQLtaju2fYn=p{x; z$j*@_enPi@O+89bNtVw-TrsA;H^$?Zbyd{s?eRW7xlkG`m+V6yCBUq#{YEj_5%2AN z-|OuOMK$42#}TZqJFHeB`>P(06WS52^ONIPU20-@x3a8jCGZ0sJsqxQp1oZ^;s09o zd(rzJ4fozgYsko8%hCHR|G1}~$NGrb5@3w3^>y;M`bzsKMIUGM{=fF#1um*;?H^xz zW`LPtfB}_*fVvSeK)?YN$x9)Z5xfL>J6fhQFoQD+%s4Z6sf^LAW2S{>25N?89yKlO z;?dNgwB9b(0rPaotVSzE@B*enS^*~1=KG%a_y4^A_w)aM&cL&uwVw5?wVw5? z>t45w6ms%7u0t)8$4qc>8@^DQvsYxr9Diye8)(q(gMZSB6y@mkE|wb5MA}wTNb?jD zE#muBY0s|Ca<*@B(wkHdOJ@7uoXlhR6>iNejK8FBA0T)s{bWJ>|Hst_)hz6z-CXq&XH* zSI?f6@>#A)@^?G@r1U=58(K!0A%BCQkp$9AZQBe9H-u|DZj-dmkQB7eP}E{v*3u-y z{Ys=$ZXmw8E@)K_zmbApUyc4l>4(~xmn%JPXKC8LT0fUJwKf(`Eyt*@n|7Y1v7riM zLsswn@#eh@Tk3)_#_NR@6Q({rSG|TM$hES@+PV9*FX1Fbkn1J$KCRBQb?*EqXXH|} zgMMu|_mbFSEo)!=7u}-%i?%E}abEgL*VuxMT2)&nXK4*)epM&V2dw1hMOEqMg;v$h3#oF=>w__ls!G*i z!suDm;bi`J7BU5%87v4-yd0ID=o(NJUZuLmTYGH6tzXwNt+Xd^9rhA%xZhNcr%T7L z38;#ECTu8ygU#oo4Pix6Yf7$HVg(lBj7>#3M~v!6hXea(p&izRK7 z!z8hvO_w&!Yppczp)^mBDfuA20t$Ek%nN!z`l;T!s6l%m33 z-aZ>5)<$gzsOhuz>oegSDHZ8aG-K`1#&$*X`_aP%ZAj~i)=26hKiULELb~LN^1kdf zxl4{ytoz%-&^k}+5wv+Axa1p$pwtVz^R(a%lL)=gPfd{0ybSz0`Gy_Ze$PvhOWe@@ z$fc<2o;C5%1om@pKGYEqQqUf#(#*6@r4?d@YQmYFxVvLF`e~9(8avm?`VZ^sf%T?P zF=qsc6q0S)kCYCr4N^@%{yx&_k2J=0^-$l>X5cIiLkP6aBUQcFHn~R}^vSiZ^yjc< zm6qecyZq~IYRj;$Fqfnr8Wu_ylN?d@SSP&^{6kIdJ9fYaehd8c8w^JNB1(1?!6NItNIco^3hi+N`$YTAfHE1<3j&)J^jD0 zqm}=l9^AqT0AnIW_>;4G4&jgiErlMccI(I2SiZHuIKs_!i^oe}DOhEVsV-QiO!-1`s1 zceX#b^kxj}Pm5&(@t}>*a_&byYEV9IrbQtUTbEJYtqYIVeFhs%t&>{5Y+IW|$z5Ys zl8%dUXf<7-=({2<{!P^Ddd3T}%r#m2HQtIO$o~N94~5>F2X8)82tBxHru=-7@?W^Y zzxlH*9qlX;IYBMX46*#CB7PlW(U2wuIe*vR1(2=<4N{nS2%ky{%$hu*e4)Ice91F< zSM{w{#YcbEy9OhV1oVSi{~D5@TD|4E0(e^l&_Uh;>}Zc}*?eH5^)5 z;@zLAvF}3v!)!KL9+Wt}nch55LnTK#IDc+HRVJt5h5SnGQuDW#wlDDZPo+&MjJ{~( z#iQp}tM!b&hNh%42a316kxLQlsa5B2>7O<2&`P2(I&sl>=>pP7t>=GTLq`6thKzC@ z>F|?u*M%sIn`3D-OLbvq+hi^iQ{Z$v^XUbw?X=aub+Ug!>tv-rV*9R1ij+;ZjPq$9 zJfrRyqzWS=jW<={lK#|V{6DE551##_`e8Xsc?&ItQ>m8rr!U@6zV7Oh=tdyNg#7L9 zd$=3^7-AgGe;!f1v!`@YpZaNfW2{Fmh$>yPPj$?Ar5rIt3HDW*g=Q25I+3N93%;Y?)Gv(-HFZIa#?|u+JuH zooY?O7r0TG^V|4DRFQTQZdIG$3e>K`{*_{!wJ^&xWJtLy}Y*iVT>aH7!LdT}5m&-JkJm=QqF9n(MOe zs&|=t;bynU|FEfwHkM!v$)6f{2t#7V~3zYqV3N617)44HsqDhbPDP4ddY+h`TiX zHs$Uej~nj&Ea+8D35)(Lx3#C2vF z?oRLHSu2rNnUK;$7Yh%VAp_04_vqqra$3B}3Twii9VFiMKv9p^Be41SBa#tw)F9=kjA;#ZAho(=CfK|yf%?e&c)a2{2I3#*tJ5P z3p3LUv)E#Ky=yw{fii94@1!(cY&j@O>F#WB??1>1_fFuAThTZFKwH)9i25zpGQ(i1 zjIJ-hjT8-6?w0h3h%v{uO5{$|R;M;}ug>hu4fIHK6ub6Fo-rg{Jg*OEJlaKj)x2r< zcWr^>bA^+BwK|E9F2ot^E1hcS!tK7B1$*>?y$T`E*FCCD!dXr_S%@7bPFnqn#;n3; z*m;J1thEO^{6Zph@jA@jANL4n{gvZ^bc{_v@&W=Zinzb3lB9QWm6 z9>#wF?oz19LOQU!uP(Y85_$GB^zqcTE1kPqCruM|FP0IyU%#ht#`Uiqy*Y6&f*PeG zyes1XZf;>j_3Iytva{{Ntz~36*4Uq#id{SL%j;#>^Dn_Fi(BLG3ha+B)U_2#FnfqA z^JV?>tV*jyxzZ|8vEYxa^7+2!186_QAIaeEJmLPm42#-sl>u{q^-9Qq%~bt4U2T^i z|Bg9IpANj5;u^Zbn^Jtg@3|bO{t~_wEi28ps%MpP@}8X{U}po>?t{G zqPd~hvXb!jz{$h4AHBvBMt@1GP750SHM_~ty9&@+QX*3 zxy$PV*6$VW)HgTsbH{17%$4WNfbM&?ot{@amnG!o)E3Qatet0ZX-s*Lrq)U8do=6H zBhPkq`PcBemARO!;^deimZMBaV&=O1yBtj|{9{uKM$Z2>&5BME9v z{%yEr`{hLKQuItHq4@qBN;OW@$m(8(498miHnaEuv=dL}D6s;E{mij1&E1NdcV9xP zU&MC_u;P6L>vmNkjnbIIrWBWyZ^jB9V=rTz=ePN=Db^*8!A`^VF)perhfUJ>{#gH_ zoq;56xT|)a-mHuqms?$by4Y_s(pnr)qd{zPtZlhWnUOAC1bT8F^EVU=-8Lghxch3t ztD&yYY$uWQch#Ew;$jw) zYppKNe>&WfU9ObGW{uF=FKexJXwcd#;;vv_o!a{ak<{8>Z&}g1;Wb(O=6bzjpu;~7 zU&D(Fb?Fw@Wd$`CTtyex>Yqt1u5LcQ+TxO=NSbwvUHH10A}-!@gR|J@Iz#%JR%j2< zIX0Y0j?lGdv#JQlymcD`Kq)q3+Jua#4* z)bggSxJ6eUU(u+*u6`=>rHx{JiEfNH)nyeoa+-ME#x71xEAo@vTs)5!tp8%a7%tJ+ z_)TJQGp(v}P4f7{Cc2Lo^`&W|a7$rc;~*2X$ah4t#L*`?+$y$pz5?|LH$gU0nLwB< z(G;qD$o(qeY!=Xvl6y>gHqKP$k(~ z#5TNwvP@|_irMqXoO>}+T!Ee*r+b9mtCd$*zlsw%=U74|z8fly3BsPtK$m|E_D#eD zxC*1=b+!18T&+&Qvlw0{$L>TqtuJ(+Yya2BHVW_9rf6K$kESg2XtXcpPBXVA9_z{X z_NEcemCoq%e>Aq?F}8{K8QWZM`M)3Ababx6y?Fx)Z>HhJIvIK~X;qN+4xGX3DL-Jk zxw{f)%G3IzJ^ftl|LQd8`yzCKRdg!vN@vx1nKt7f?o?uayCp)~l2I3gQ*T!~Uu%(V zn4#@54e|7IJnqC+JJISm(Ob1(4CCqNsLk;9bCT-C<}0{Ov48i;dtMvs>Ek+Z^Zv8~ z#-upErudSJ4b;hE@dd$tieM?e`xvUTjy>{&w3J$%;KoB8(vZIOhw%L>>XDB85HLX& zD{WgPrP+SEp_x<3VteTD_1y;XJX`Ylt`M2_Iouq+7X3&toq7mlCJwy`?h585RkK?^ zwq~}=mQK}vgn4PU^f7!T3Sa+GhNC5&-741wosjOr?n2bxp63f%SFqWwdHUoNQrzw= z>7#MU+uNBlgDL#*jaHXaXk|2c_bu5>VKqBfBCLW|dFm6dX=Y;WG>j!O+^3CpKSsEh zI`B$ody5>mz)5QSIwZ<5t&N;y&AxNe8rJ?Zv$RVk>d34Jid(w&O6QptlKijd^6-su z)*iw_(9iwVDcvE*cRlGW;>|FRw@5dL5`WP0^f@_h4dgxXVIO=u;^WjAnXT{iCqGwk zZ^DvuJ38vPfP{i(1rPlNe$&F?yC?Trp2W{`?xS4$aY{$pOw^LZC5>V2?c9SHZ{LjX zsTPv{KE(7Z`yhU16LIh8_&`FpUZu{Qq>wAP_7Dztz^bz%`Xx?i=2HFe*3Ghb^f6aD zt%7e#+nwj2Z|kTNBrzAmY5ZbwzZs;w(m6{=dxDS_a^Ye-&f#<#|50un$;Qz>kohyY z_DYGuAK!<)lG`f5y>v7` zVh2cazvdqfXt1BWzqSK+i}Z43x8v5actsO8$ge2`Uy#*+{_AC_s~_GOuye%ahp&Zc z1n!@3LjihBUN~cb9i*zf%qz3fRrxC14Wh!`AS&Es$V_yTAyz*PtYe3aM_Bu?d%dGG z_)-Vm(NMpBJYypVGxmxG-}wVp0aHIhW65Q8Z{rj*c9TQaJ4x0gzWK(1G>oic5WBi7`qEQjs3Apl_gl3SW01&WLF_-N=IiFq{wgb+sy`2 zS!Qt&uE3xC+tsb|kg!HcHBMQ_a(yIgaAO`$*%xAud`IW>%PS6U?+EhTQRkPXNAGgc6O$Iy&PobHiACYomnsuffP)I5XirT2=mM7_#n~=NAHTH{m){1wZ*34$ z(t?xvl>6VF3(70FTD~ACKM46AgnSSB!+d}10_A%cH2EFwF{y?wH|H~!os7GSpi2XA zPhi>uiFd&L!rQA>j+wWP&aW>$i(OP721uKjNxoNs_f`t2`4Xp9@Emr`%RwQ3?#}Np zCrj8Ry#J#Nt=@A@Q6|&I<^^3_Q*!gI3U?u4-#$`zNx6q%OqGhg_GBvuP8Cc$4oEk$ zL7k1PTGo-LlGpfc*xeGq&{W|~w|cA``tpwt#h8R^Lc4=8AKj;f{zTAT5aPr;>67h; zJ36B;AZDEscXlxBLzZ<(`19v}&hwTV7V>nRO3UFS&Iat)6yy_bUI<2u*@16N;07n$ zam~s7TtU?db5~@IYs7c+LV;dTcc1)hZ4`$3LPzJBi!-5vO=B4wGYDlMiLoN! z@xWHlDDU@N^T(Nmplhp*bQhE$1MV^Ek9$|#oq9L5G@r)ZrtVJhwlvFx_?p`~I(J=6 zLby$dxO)_E1>it@jfiJeozip5aNrtlXGdqlMGm(b3-?a)fi>cN!z$c3hqSkSr~P9; z+u?`%LqE}Nb?~#y6o%7g9IqZLp0}1GJr7>wG9u~~yc6R&cRy##&_?I?87}AdqX3N6 ze%seQ_%t8ryzpDxAlON6nKn2tcpQsel(VfXPxD}oT(i7u9CrBP+e|pKnAyLhv;PGd z_H`6ot(lLO7Mehh*q-zw?Z|G-LEGi?9)c4OXlH}8%W$(@)!2-^8dHMyUBQeuBb06~ zPn=<~ofY@BP}@xJF5!Y7nt#gM%fnBaR*F(sJ=PSBcc-`jm)}G`7mt>V#bwPSF7JDS zZ#dq#v&Z#Bi=3wv{ewONQ$lz>hZW#jge=mwr{oP^{O z@{4*X`sGZDx$?23J=8hVxVbU#r^neTmLRLY=gK_Y-*Jm+Bl3gx;&P@Z=B^ma zAG!FbCfgCD1xhWuwtK!> z8{eO`uYa53`RjqIuBBY}JqtK%7)&R6dsS(pwI5*)!kt<*mQGCyC#!Mq+v`7iPZ!?o zvzOzXQBTZa5x2OfT3W@ML^<%@#<*R%Q96_r)_xRUkm0K1_i|`w$o}<@>H{3V9H|h` zrbz0&Glw0Wi_WjgM&AG#-EVO*&aON)wG%6&6^-MfBkDsExTaB>Kv!^rv@s|_+B8(- z=gQDXU8)3WGizIldt0ny54|aSm0FE2r}&IdCW_;eB{V+C^|l%%=c$!?`+P@d73S!! zXEC;MAZ8rmalaTKErGEoqXQeqd*Xe!*g7^Cy$Pp;*3L_Un0KIfI|e3-%lHZ(Vzg?IBOnh6{-Ffz++VyN#7SjlBS#WD)?#{0-`n4TJDZ8%obGdQ)PPBFE=oEwmCyPi! z$BjO+`u61A?ds<(q@g6p`fKZnF^nya!x#=SuDJtuKLdNlZzw;wbqEsES%hF8spFg0 zd8A$rjQ*9a^GLlCQm^w!y&PC3NWJ``tnK}7sU03$rw(UOr+Z5vNq)V=CvSZv?;d+D z5+rYI>FC@_XPqE>{Q%q-2f6Bf0`gT`sF zho8P#_FxYBmsVLdA4#`y)0~v=sU6QA>dsFu4~2|Jk!~tma&2&aPn@QrQ)nF4NN~~@ zVb5%3HTZ%7N(b(WK|4t|#&E*7a3uBeOe!($ox3idyj#q3n!|nqd9KGDhfMtDqj1w+ z0K$`31?-rH^$OIqB8)#ZvK_1)Cu*>Qwy?1-tD?~#>mXQ1$F^|1StsEBLlaING_g37 z>j~Vsi?he8dw(fycVbVT)_=%!P0s7|O{A~rr>yrIFyOnn7;;SI7(Zv}5sQlX= zmCA#_X63bJNyg!Jy=gH= z&riP#qqI0N9xm=^SLwZ6oVP#!$@2e#wOYplLuv{)u+48FvC$OQd1;G1f};Vy?3>lrStZHnKlu3=8-OPklK zl?S)I=daBvXq^)LMy~8L>|Nz#;5J9o&E(%V1vhy5akTmRM0UmO{2NYme$x`xUWA2= zHEbPwj%{Givs(5d+s<~f-RxEN8heu!vHfs=>VNp}AbXp=!;Z55U>~thSR?z4ea^mM zr`R{_4Evt7ur_vyb+D_fll{bgL4}lJJAwk+>O#0Mt``@ueu8zz$(4@Ll#E`+$ASK4nep1p6mD$-Y8i{g$0&xImI!W>+u~(Zz1CU-6MT zG34z+h)0Fz0^wQV^K=Mi@o5*#;?pLW#pis%EIzG*S$ygQbGh&=^LdsEX7M>sFpJN* zf?0f;1+(}x31;y*M=*=e62UA!je=Qx8U(ZWEEde-vq&(DPrYCkpQ4=NbGASipR;Z; zi2W$Mtv+4?BcUPFpJMK{n6K=uBHQq05pJPKqBA{zyLrDpf4Z_5CI4W^aQ8?3V=UA z3cy<_`vu|s1n2}@1#|!|0WJVq0WE;DfbRelw+rw!;1u8_pc(Kv-~`|}pb_vX;27W| zzz2Z$0Y?F65Z`;i?*i%phX4lv`v9*4>HvEHy8t@?+X34ETLHCz&45jS4S;IEdcZos zT0j-xDZnbgO27)hGJq5C2;gDBBc?--h!W_dDo{r%%`PdlHVcr7si!dX%zl}|+3yle@4ZZAkM@m@jX_AX$wNj+K z2bn_=S3kb!j7B25ksl&^Md|7XJJZyiW*S`<$0ncd>q#3=X+vB+LM-r?<>HW@P<8F;Fdk{cyD9N< znrvReoJiZ`(_3KP3UdrM`E*QbHs7BE9p)`CZ-tq$$=~+xe=}{E>4V(5EK#me2-9n> z9dazBmgAUH>YHBTAA&UB}ut2-9M23)_&@D_S#>5>;4Apn*!aH9Ex2tup@x6 zp~3FTMZi;l9|j(!7Tt#e6I~uH(yjg7l}^~B2Z-)HfrYNe4 z6h424XrBUXC40O`pP4A~R|8Wx>Oo@oLxGpWK7E+Gas}`P;8nm6r@JewfQyE^E9J|d zb2@;D9(kuo??1v_xej(Ka5eBNBi)sofZqis{`gTM{X1ZySC1Cu+5}AeC+-sM&A=2+ z^xY!85SY?40hs8=Ja!i_$#W=EO#d6e#7CIqKRQjc6DIr5z$C}GKa2c1z@)Do4~zC% zVA5C1BO*PlQq;?FV9Kv!z=D3AB7G4s<%evU7(RPc3||dQbhcci^T4FX>5qx>%mgMm zN`Xo5{No~jCNRnA{EHahB47$9Z-q!-22A0!08=`2`^3<;2prFz`KFB0@neDJ?*Z112_YCKkzHShk!2tHvpTe+?7Yk z4*UUd7w|FQ>1*7Tjle_KigJzuCVIv?kvVD zTYxjRxGOIJKMdRsd=&U9@cymt$}V8pi|)#wf%$FjN+w6Tfn~rGUV@&1RXg34D&S~f zHE`Z8QLcM{iM|e)=sSRW0v`j80RHY}cV#rNb&tru9GK`Qfr;Mmiby{OO!;}qWB z6fl*~6CS#Czet~QKunkXEiqjW1C#viz!csE4}HZ!k=_7I=~5qZSMtE)fCm6C2aX4h zKJ2bc0!{&@^h^ULdZ~xL99RRp>TP%BP~c494B#`sqkzNe#dy`gMArcmeFJbN@WT!6 z${b+XJ7W03z$B*%n9@gdvJVBOcppC^%EOL|@oxG+jJIdA7=9x#h5t1$h5susg`fF_ zyD|@W1@HvmX5d1ypLADF0nYhSjBgY$(U${Lymi3D-{rB(PKn`Uel60~--!HHml#gc zX?Nvx@HYdK{EfgAPQ)3J|KaaMe*Sxr|0po=tIm1S4NUS3_1H%NlRPIp^zT|kJ{K_2 zGtZ0srN9(UH891u37GP0JFp-JFzG?vD#||!n9}tyFom-lnBsK-lmD+h^e$iuN7E+K zQ-H~y=CRKOrhMP$v3~%pf&Hq7UU)(DHyxPh9{>~o(2HVzH3L(At-2)US0gaVc?y{F zOMY3DQwL0PZUQDbbsb`QYk_CNegT-|j=wIZSKTG@uK=d>YoFtm*1g>BgprLQb6wDK zGW*hRXU-M;);WLAFNPB+gd_4;1s-3zZudH6*H_oRarn}G{oao5E4MGd zulc{ryHd2Sb`FWooozVZ6%&DZ>|$a6cM+sWx0zAulj`Bs_5 zdg9CD8;)oe>&C4-x6*Ir5zD17-B$)*`mH(?>&ET)ef{1}PG25h^S`27UwM3W;v0@{ zUi->>Ivs8hz!to!M8O+nIg+`tsZ^jklA*m;ZKV-!$Hi$CvIak8ivp zU97XdbYJuB;_~J3HT%YUJGw8=?aaP@ea*i7x5|IJIwGdgR}Z%{`^NR3n|=Fx$5-atnSK4<%5!U6zIo)!@2e}{Fn!IEy)e;KDD?z%R7e<|Xkk6qQFDxeR;VN zyh>%!gJx^m;8JsuU>Jee;h|h#${U3&F0UvnGTIPsigF4?fPXy{Gl%l~w_XvjJw;hq zYScq;C|pR2gLhc?GJLbiF@m3KH!jrM44LFD#bTS2!t?nhqSz+A)oLVx7MhIZ{9;Q5 zztCtida}xHK>${pWsXf>#xFFPi%oDa+Ig?cJTgG9EVh(cp^I`ylHlKNvQ(5BkgIkf z_emH*K_ogva+n}fg~MdA#oH5<77{~`svt%J!92+*)6WB6Id3c}5kj~ntdUBGxy)F) z7)*$)xVQqv&nW0e)PS8gE`UrGC~b>*sK!8%o6K`eMw@azsAk7vWO|7MiZLSEDJFgS zJUa~IDoV|Wce0?dBtBKc=NOBPLRO?{G{aMr$hySDM1Bl!w;GF4TKIAcBGwmKDyRVc zQ5L4c9}hoDW$q%Y(PlQ57aMtd#hf`tyTdM~U(Z8}WtMWjSPu>JP>VSQVv$cJGM)-J z#40K^B1_9Gw#7WP0Z^q4mB41`PJ>bKfo!oGQMWAR%DEMG2UsYN5tD^4wpr}<Plt6%B!%kFO}F^p+cphSJ3e zLRp~dXSCau;B`=#C{H%8#P-E@hp`O$%lD>Tkf6j;T54H{Iy-`QAYD|LCmLq#!FPb6+I^y*a?ilxC^QiAGG?oje#jTYkRmeEo!7Wp#$V)$AB zK`Fj@5Kzn{Z<0~GkTkuAoGfVPW{J-i{UYBD{6u3Jxn`sz!uW*?7p5R2k&uE|6Hq?K zP<1l$RQO55lrf|SGYX%bFR>YoeEitL35J9egwP!tPhr@-VwF{(BBK-`6jVb?#T=*< zwNR-3Ha;uAV6t6EFIs|R6iM<1ojW^s(xie(tZ>Yv zF%v!JiMd`=&X_4y;|wFvk`#B#ne>~a`H<~2J{jHJH=^vIz4TQ>H!mqj zh=Hd*mAW`_Pyvg+1dS>`af+57$fqW!!M_1HMZM{uG~T|rOsJEnJ>LG;(~I+SP_(V! zO5*QFC@Cp0K9GdEMt!yDFFtN)N@_`5T!PoD6)h)RkvGD?ip)s}$0~Mv=qWJXFnHxG z!T<`{SccY>N)E9yyRp<*jC>V+GKgwKX)K@PF!@l(h+c&B3CTvFeLM;gncL1F3;5l_~pX_!W%p$o^Et%xnePFNcN{c%M(+E9cQhrsP4AY?MI zlFgnf&}UCVJ6~pGgQrd5$YEm|GgOHE1KCn}bh~y73Lo|QB^Biu3!-7O>&+-?sM{a$YfCNqn}n(5)Pk4uVtyoSjmfk9Q@l%~B?mw#lf8 z$YzuaF&N)6fTjW6rjen*7#AU*ONDlsx+WtHBj6L|jf#QQcC)O>CLt9`^qj12N2EH`#rGYOE zd}-iI178~WhJbHKDl=%90Z-J7Al%n2 zf;C&f>bp5s1$Y7QGT==>1E2|T5^x@H9U#s8WAN&sqBqAD0u}@Q0$2@r2Jj+aC*W0p zG?HVXfIk8H0PsZ`_9oyUK#G9Wvp6OJ{s5Lg0Y8lM8$E$TJ#gX<>{Ebw2l^`d1_hRr z8TQdxa1@dG18`&o2eJ_kzz?7arcHB zKlRH=#-50O!~d^!z;sm782ekFcVy)wmnps&m>qO#fvm^8dGGz{wTX{M`W24tyZ@qm zU`YFi{XhSF%i7kr(seukwseW< z_2tQf_YBco+SwYuXWIjTrL|RMX(#Tm{?PdAw7ReI$It&_LR9*H-0<%_(w~3h(`QFl zd=&2-api^QZ(P?N+<&8E`(pRi>vx^bZgYRX;gdrx$&E`cEVMp8w4rRQruTT+=vSt_ zcjwFg%kGGd%8q?+G)uAZ?YFFz=-cg|bk&6&@=|I%*$OT&&If4SqOdt7I?jIY~L|MMQ*!MG=5_pM!j z=C#3t_N=T(2Fg!&S&CzI$R|`uV#? zc3vDgukMFc3+8uDElm6A%)}plo!x%u{g#VM-c9}ZuD?J2x%=ZsAK(9vp&J)BT|7ME z)P1!#nlHIj<{7_yQs(^fDc$h*3k+%N;i*Y4v;KGtwW| zK0Rn`*2;(2%+V$9O#d!(+0@AoWZ%1aWS_W%fu~~H*$YWy`^<{Zn%F!2T48fq(t?e5 zZ=84E$bp~tlCJsqL_prf=alaDX~93$hN>qXZtS^k<1@WuAD`4Gc-r8O1LH4U)0OS% z`lq$@=i~gKGse-aXAj{H)}So+m%g?utIZA6b3Z;Sa0a2h{rxz46zVm(*>&G2)e8XK(B}*0BGt4}G=x#rJjT8|N?Sd|}7^ zZ>;U7tymu!p0;97;18=D$#qMQXy!jwQ?>Gel-1*BbiOQ~lDY50!rZe@-E-we!MH(R zsm5+<_#``K$+Cym>#{2`i)QP(|D6TD1U_yW7e2Q18I4RoAo)Gx`SBY=XHC1W*I%r? zBQ#~r(Zfc+AX&!G^1t7|PvC{9Qz7?me`fgEgOi5b{e0+ME1ZoZRyRI3V8kcW_;1^K zB~Q72B4P2so$q}*()7-s`V2Z&%UVBpsc_HdVG~P_e>`vSHxDnk^yNDrZ~1n?=el#R zw#T+cTs(8B&*7KachwrM+8@8;$D}!%0X{}c@XeU*p0w1!o3)9 zfH3T-z_Wl~1-=2^D8L!OQt;madI9Jp7j>BHLAwMP33v!RyFn`h&wOAC|50Ew@Gih? znB{!aN*6wdD5N(G_P5|R75smL`A5(X!!Ct+HE1!w^?>JK zo(nh$HyiL(;7Onx080Tepq+x>t$-mgHv=Yu&H*liw;$|V;5HNXw_)xD{1xm~a9ai- zolFNU82Ay`r@*`!_+{|OU|tCGF5vHhp9W7);3Bvsfc7GA5$rhNz+QqIjftiLD2@`? zzlA&H;g_Jj1#7h5^6#&KS0{tJL=KxFKhtm5t%oU&w1f;_r5BLd<}v%xzTnB+YM^Lo(D00n?_p#l62=32OA!F(K00P_IQbig(6 z_aSJzVP6Hj9rz;1i(4icYyvW%yj@NM;AaF3L52m8(}sczN+R)L4=C$(=>$4`LfqOgI#hMoMU0;v2+ zhz|1`z@yi;Fss9hcjp!PT%m~-Mj4fAr~lfYE2=7L@hOyLsU0rPO+W_{xR%n zfK8xL{!=_(!;SpE2m7z!F#@RGPXhfu0Oi#V;77o77zN}AAa^&~HNez8sB3@^K|2k2 z9*xa=01bKatS<5K!_u&4VrUv)ghdzwk0lq|kfG^AGVUzKst;|5qD5UhEyZMDp>sGN zZ*n-S_7Q^zdzPP4#1$z!b`caCX#spNwiJ~Xo3I;Tu;{;N*szi`!%$;UiDAgFqLTEX zLof+#C@R*c78RwXW!yPzxJHwao;p0?zZEtuUhzYUhuk@i0(+?YC~NK;azAF3}N zK1{Dk)$7wUh8TwHhZUu!78?+Bck(7om^M*Ni+w?P0@TW60EGvSy=N+$gPmJ^Y6@oA zp(bj8^hSM=nQ_GIM++SbhBJR`RZ6dez$yq!fygPwMP|byuThW;OZ!;oXDL|lHP6=5CNo42iV%#=BFLgI zGZ!No3jz_Di?F6gnM}LQd=f$$OYWAE;?p~@$qS1!Mmv=DFaBs=CIEn<%!Z)&6 zrF^0v&N+7T9Rm-+0Kr9kc=;&*C`<~E=6wh>jz!@N}MUlHVUK*cKc$AI{DVzXwuEhKE#`_WoUcOPoIYuxc#LIP4FK8+mktuyN zpEqR!C+NY;N#PM308n_uHxqm_!M6ft@6Q|W`yh}`i0?b_eFr`@JbK*;lem8ec*DE; z0LQLQgjnQIL_!pZDjD*9`*Vw0h~&!8g=v0rmz>m}K+*R)H_X>j^I!A^h%i;65qz~F@vk(B{5Ex_6#@}rR7 zMsplP9L;b$BjYQL;TQ|HVeB;KEXEaV8}p6r(=K)yAfz&3sPO@n+VWSTF{e?H_} z@(AfdyoClVLBObaglzTSunKbJT!I+i4Zni?BI0BH@@B{*AWQx7bCB;ujRw=#L7qJ4 zhWr}j-yuH)c?^nNt?Ex!0Z z$WOrtll>Vobd-Dx0ai!Thd}<@3pb1~9`fKtyY!apvV~?yNb2L*&&%3vdzve{)dZ=DXoMz%kpugN-!c7Qx>UosdZ>8I51_3v`1bIY&V>t-< zZ4`iZAFbhW$b%OR`wa3!RX6;=H;|9i5CXIDrtgJ3Whd&-`2!>})DQ^Q${%Dr+i--d_ee%@T0Kg9sSB zXbpZnMBX+;-UInT+|MB`RrqJfzk@tD4Bv)*az8&2Naw@*{4$06=~CwoMvj_~3>_5^5kuSJwy_9-L0`Wx zw|Fl)$I~ku6z}DHL&ndNL@<%aA#!pwxLf?e)NRm92hxM4f+m0luhC#~K~t!1!8A^4 zNg9j-#s=_|Re}oqVGDq>K)hcL@*@T6Tj&K(@4aUDaS3pypDzLC`}q`L2&mX+RV>^& z3uCzP=aX5qKXX0Cn@T83oFb$r4i^lG^5DVr1fioC7XL^3S`u6wLxf-5lEX$Y!l7GY zEOdoSjW^Se*?yenM}r@Yek}0g96uKNaiJfJ{aE5hlON0cX!c{d4=tp^AF$q!RzE)J z$E|+c=0}?!clgoa$67zu`EidQ>;1UTj}3l&%Zr#l4)_BO`;j<(Eka!_ZJATpGK_%T ze@GFXbDSbNwv{66`UFLo)me%dBTkAKBW_?6i+u$}3}}%e2KP0J)JXmg#QK#;DMLLc zMOc=KBKk{B5rb$rMOc3{ML3mMiWmhP#Yp%Xif}|)iWu!F6fv506k$=B6yd2@191*T46Q(?}5u>$^;zC09P@IE_k0Si!K8hHV4HPk!-lB+cdVnI_^I?j2W9#;J3m7=ZV>AE* z_(O{KppPlui9V(XzjcBl9PufNccHH--iyAbhyna9#Ujk66lY_pP7zMkO%YE062<#q z0~GIv4N!y+l?wS2!z~T}4Qu$X=e|~byzT1-&*AR|`T799E`WCg@U{ScYXENz;5P*D z6#=~2$6LILO#u0{H9zUKhY?19&cgj}G9~9?OjyD*_@&05A66NaGIR zI|6uT0DmfgZw=r-4B(pwc?+8Tz@R|8Ab_tA;Ohc-M*wdN;I{_w)&PD(0ACTno55QK z``Z){Q5?V*2Ji&|ydi+k4&ZeGyf%R60{G|~yya{44dH7=08avV@p3>H1n?aJyfc75 z6~MO!@E->7&0c<{&+-ohL^K5O^#Occ0Pg@VCBOfUkmsDbfq|}V9}r<=MpDQv;GF{l z10|4WXMCP8|B@xAMjU3y?IKA`m)fv+raIoxHOlm;aefz>P{PW1@6ndR&&Jwiif zGW$Z0a5giZeY$7+{dsl=9Oa|T5>1^14VN>i0*-YsC_Hy9c7p#rA2UZT-#Fb;Swbnh?D zRxwfQ{c-EOaihI)_jL=8=~I=Hos26?LM~YhLW6##>Vvamc1AeIS9=2zrp7Z}!i=d? z*w0*ob!z>v$Btr?0QwX)b2nk>SS3uowTzwT66$VU$R@jl{#&OO#O_|>mPpz~le0uj zByv|6TOy{aC0)7f_?^YZ5|QQZHooDKE22x@=w+mfjdzzk%-57i_{!WTn?iVocjr~* zI+`N*{TrsGGD?-}Db<0dFrKRx8g7eMj;oEW-s2*wP+mBD+nmBT_`^+Ad^+DQRy5bS zl;m*JIes5M*0zb?=VB$}gw45;{Br&cSFqwR@*dAW#E15$R9uK@$ZzS4-EyEQiI1u^ zhzaVT`k6er{8XW^VfwtR0u-BbjN3VO*K4`;O)M|(Wr)0&mCqD8?m$x!|5|Q=$f-5e z^-bIOu$p-y*W51JnuTlAbs?V}!36Rgrqyb)f6DDGjC8^C@Aw1S?fh1Jui!`xG1d5KefMf zhL&ZEyM=8t6WQtA!do+^vMJqyduEJ+beB}ZLMw$~vtDJ?!jV~**`RRYt=TU~F(mT# z&zm!q3BsUgDtny>&&?gn@?Ap1+^B@iE(!OOXBHw3yaq%6H6f#)Bt)=aS5mOSSTTb% zwQt_vH8+Y;2DzsnQt(0UyhHny^T#mDZf|9@SKBxIfx_j+rXN7d@dqc@=?+IJ2!Ij4){k zY$!5j#{6lFljDg-?KG_#&`M5mJmY@p>N4~EOV$e0GQ!m@iyqr>#p=!p=J=mHnH{f~ z$az7#fD0x~)_RPCKN4a7f+MmS*9Hdig@`-eVeh{ve0;}~Z2U!`aG{m``hxJ;!bjLw zE(o*kT+Ob&ARM~$vytV0AmrR0Y;QnaFT-tsroT*tmlus^&-Dl&FIvDJ?h(e^RX{zB z8L+lTc=Ij;TiCPz(p_b2c&M~SQdM~$=cOhaZD^zar}>-Z@YwVOQy5Wb_ogh za<_Ev#yaZvSnPp}yRZhT#d2mnAuj<7K-eRbJ-cYVM+r~fTQR1z%g{KyagAF>I1?GK z<&ShI!re!5`i|><^ys>TVfWpq{?ViDDr}TCawaX*{nRN~?@P2e!ySASAIeL4MI+%j zQ%hq`-!UC_oT*8Lk*x=M2X0rl%UmQlr_ZL-meep$IcpEMF_D<`;Ge}Le|I?=OR@XwfP^XV2-0SD3p>bs1+R%2Sbz`a( zrkBr)Z%hC5Kcb>}zMF)#bdv5CQQ`d2^F-%!{+Z&Z@J)O#>Tc78@`@6&KYN9P|C>l` zQM}wHnq{^E9(OnV=vmOI-hT-7k8PrPqcXxbOVTVs4M#c%TBb!*HPF_HZ6X}4qNF+) zg;bbi4t1lfhHz?=9Gu+CEjmd1DK$E&_~8BmR8`$6sV3Uh=rIyLrYWbdR;Mkdd5mhD ze`!~twwUI^p@jQ%vT7>Hy;6ftUab|XOmUVUJy$xkyssojI@|`iy8s&Y=zM)&uSGtP`=PurRsdFl&qx4eiuCzz$^ zn8ir9vSV}pCzvu6wnT5o?6GvH-<77GY@?0F?0)(@tVg zFj1~PB@*?#SoEQZnfU$bnf$}NoWJJTanUz~3&Eef`22a2BA}2gc@Bki=;%FAuVy$> zJ=vtF_>HiYfALqMaOztA;yKWkeB)Gn0CqCtxT1#S@u|TX~y(I zjBB0TMHCVQJJRGB-SS>(FfWoiYFIj>*QBhOSejk)+<%d1bK2-g{qP{>1^2yT{lN@# z0ncbK!qY!QiVYW~yv}^hQ+Uz*uEZgQ34S6HL$gS%FeZS`4ZD^~Emul5*a>p0wOhpVGUQGQpkM#l>fAl=% z9=ou{9VC0#%dfxi&Uw=GlOW7nzQA&}2MZ^@rBg{%Hk$Cg9w|?>9c{AbTRIstvLkYD z_@_PQMk$nx_y;9#^^k;CWGvrx&GSYN>LMi*74TO<(ht1q_VgTux@@ebl{`Fq8W~62 z#BWzb7<>P(vbuT_F^qMn=((O!4Yh`}1&UVr-eQD&-6Q9>9weN!R_~NJw2jP$QH}Dw z*F0x?gyZ*f#^99trr-oweHtInlX2HPANK@12^YK6I}P z?%CYfriE$G=1N+rN=(|i2Vzw6o(imxk5>`0rAk=zKqkARN7(j2to&3rX-cUQ-gqFE zeGDoeh>;%X{?aCNJuuC(poevsU<^q-6Hmsqz?QCg3VI|?wmu2@&gu#APUlbNj%`|~ zdoq{WskTSrNHZ&9*d}Siy%@>vBiB5SKtZhy?hu4wm2NGT&U(y9x}57mOfR`M<%KbFtb1FL_j?ZzQZ)jPeL>CJ@M!9O zfqk%;jp`Cg9&~HX&tPR*2HO{h*_d=8|4Liw^IP)ko9cR*uxH$I_6_(Yt2>SCU%z@= zaQ3lo^XvEVa%bX9j+eGPYP{+>)XhvMsr_wAPQzdIeB0gLS@zxowfFIgT_IS-CGipC zu6jy(gzODE_JwX?<%V?STUNa3!~-AOV&Rnyi_~+vm)DSq(zAyCBf6^|W4EAsG@d=z zE$ALCP^g;l!ZlvU3)V-u8$$h~>Fi0DaQ4yF>~5DZ=dl`Hp{uOMT~5bosf~Fyv+#~;N=Tu2BOi{ugT zuPhK=u)JzH(y)m?Q}8)Izkhhb2BXp?Rmsgd^EBH%qV%2?@!LA;aazPZ%}VVpFBsh4 zTTQ%4bJbJOxme^TDLGlMN+s)+DrSkXs`>qeT%mD_ZGQh8U?Q*pI38#OCIAhVRW`DZnv6Eiew40E`84z|p{1U<@!CILd}XlW0h4NF#wNU=&aR z908O9hXb#v3yqOL5g1{674P@5Z5HL_#|*=4u}=6v9hpGf<(1hEMS6;vxm9jv_~9ZG zV(5~?TVk5#>dhZ?k~~INZ(^IyqFor>ar{>#JI~;rsS*rmno4c^+;Ha2+zAHv`bxsJ zh^Oi@Y*?#-LO?1|7$_Aavk?m?2crWiKBfrYmylE3nnJ_`mE zV`?=tzquHjp_P?YU(N5Y(6or^hQ%Vo6&a^grEH(yUmm|$WOYgx%OqB13iJEToM#D$v0qQvA&%t0>Hgl`YY z_Q_)*&(Wy;H;;i-pb7R%agdCfAiop~$)HK6lC{V<8qze)Em}yKeklr)RwMIEBOoPcQvK3!NSr3jFAakft5Nx-NJ!C| z5Wf^r6}p}D)mp>*)XZtD9j7(4b*SBi8}Pc#LS7>bQ^+(kSK%NZV)xq3_5J$u7%u@|E&E@(y`o(6XTY zL3#%rlI`fW7V)_4C|`(SN(X3`O`4r;>pVv|>{Ve!DSm6RP}8C&HUUJK-N>y)$@Ti};qcMcmgw+}Hl{ z&)Y!d9WkT4BWB!w%fB{U6v^KV87*dQ3RbaFJgLW8410@u=agz%EPtU8vahaPjIC4b z40D9`rUX}aNbz`US_2&TBF6n!%fWwM+E6%znU)D%6%WZXHu}WmB&r$5YZ6 zWO_N0WecbsZSuPI&Y+jW9POPUT559bVkSC7wrEQAl&X-um8fk?XIO}=-r8Z3D(YL% zGIbr%hA?!Ux}jZs%VKTEO|*Vlj#iO4H}UPANyn0RjB)B6jCqzBXO`SwS+jR>e26)$ zR}sccO*N|>>OHIi?6m3 zL)6~+A5xnLwGZD!txxMP%_o+hHFC^4nV4~+x~+s_|AV>vBIyI z8e8tFKvQEiIm>P+_UpCy-EGVe#iRaTEB5QPjP@$#oTN#y2CqqQW@gaipW5{A_4v^h z5=gb8w+tKYsdCIh{MY)FWjhpFQM5kG-Wo|4T zyp!v$ujv%~H5QHEHv6X6v$hhE8%w9FeZ5k4tamjN4G$qP-)APN54Q?iewS?d_Keyb zuBWT__j&A5)R^$aHQ)a|n?5weGmp(=+zDj4uP!gYMLcV>_9bs_5f4~TdDo`ZJl(BO zWt^rRvAzP#cQdLMtXuRBmM1HVOi)=936+cX>uVIcI5RW-#EKCjGa54v0lH|StGWTt z{CD5yo!%Be%_pJO3~|4ORUTP+?Q8mqTjjsgv;Vl5Sc_?< z*ZL1O?KiCn8q3d@5HI|P)aFC&pMOzp%8kleuzVu!d;UXevy&cg`=z>0yrI;qQ{&ZX z`M+N-6(;5UqS92a(lHpibz5*C&AVD8?r*VL^e@ybH(4zHpRd$xNzyi$73Rm1Se28S z={o__bl_TX(vaG}>@R}lUt28Rm@GLRqU0B6Nu5`DjDMlJy!CqRr>0u|VX1uc z+S9GU;PT*KQJv;hJ<6+k*8Tv+e!Z3(YxJ8d{`!BTIL^DN8uSR%8{A~G0jD%-=*agC zL5m~ZTSDLF@VM>9BC7u1^zF>JqbsC*t5}jk{X6IN@5@ZhZ&D9`Oe|4JxeZ@W!OG6J zhqBO;2iFdGdJoj~>KMHvr_?5Dxm7DWR+8kx*3V}Z9K|6!ss?Kw0F3Yy7yMGFqUfBjZGCv@@_7% z-KxQ6Yf81na%s|D8zvBS1Kp$3U1#do)Q)HJbcarzEzN4Md1=$8+QJ+(6SP>vfM@rC z*9VJ;7gZ=)7uq0Ac8RYj$oy@2Rk%?vQWTuf6u`NhUED!Ewf_E=Gn%{LM z48w3A|9~@NC+;rNJKpC*Yod)zMmr|0+=VZEtFIle(bsqA{71MmQ2h+ z)l9aM{|K|tQ3GB7D64Y1W+`WXrLRrGU38)gypwUiVHFDhprw-+ZtUfKw`SIOZw{M> zTZ!9qxH31)7E+ac`o_GecW5-exlxuKhsq5WWJjgGmYEu2KDUDOhDzzyRiUE;L%-|7 zQvI%!(tjKpIdQV2FD+0{+smh3RYR8@EJ7jxdMep6bzSldkF^|gF7oucu4GbY`s z+Bx6Nh2SMP7vx-9!lViLA2tcREjPPK%~$7MK7+Rr4YT{o)$L-6ZBBn}1S`zzJ3b=V z^--kM^*$?gqGd4h2{|AR+&LF)P~*~iN-S3W|!#2_jg!W=Egpfdlz zF~O5@bR|I&*9N%mrI zxRjZy*6%AK$={rw%OC7z!dt}Q)?c5|?}k;G&j zJvHhbA$K*CNdjY>T!nf^?Bp3^N)>Gfg)!5XhKF9!Sp3LsdPjmLN?&_@rE|S68>nd{ zT8i_jan!j&@FI!Y6<#K#vsXg;jv6#LTavc(-QMBh?VXt^^0Ou41ohMTs`ijxCgibm zH`aM+LgserB%W|C5GN37gLH9)*Ks6AVNGJcpea{;ol-riHhtI0Z>Tf@gBCTbz{BJ_ zy-(@zgf21l`JXMBFoI`%9XK+5&t;~4r?q{5o^V&sAM90!Pdcr4#A*g>7v;Cq?fbn( zf6lvNW5%gVC9t=)6|;=A%N2&`CWhN2mWLicPp3p2i|;Qtc*l17o9N^#ZPXGg;H`bd z(Rx>L^l_N?sa#!ft>15pI%|k`#L>q@^4+psQ}B4{MDr#7ORVqqG)%EnWmMBeQ$#i1 zVcH_Am8N0U>KgFY;W*7OqB_-~Fhy1C9HFL>)nTS+gpI0Bc7&K>z>Th+h}hWbbo`I2 zp5UNwLB~|9OkP-B%OsP%*Osl@d!J4&> zBD^2F&Hrln2M@amK39HY#qFJ6{f{cCOUD_lBVo1yPw7Ewe?OiJ*M^R@-R?2}N$-fe zZa>%u_(#X>m%87$?l^PDFkA@6MocNW!uCbvhSrR2VqL)z`kkYUm0~$sLd}10KFm>- z&z{cX!)(FM5Lm)AY*$p?)UzwTGmVMVl0LiDfzaR`zIfkGAYMcF0%)dKx*r(n zZ=@~zvZk z(DY4*bKaHi9LGhQ=q`hX&>kD?9+GU5eRVI7u+>E(&f#U};J<eUK=(XcE{Z5HXMbHRw5?3Xo zEN9Y{WrC=+s1X#J)Tpm+!`e$DMiVK9K$|!xHb>MFokM|1E^TMKc({RR>BLAMgeTyr zLTWXm+nQ_b8@@@ulfmIC%vMXIjkzUs#!A~R!7NpXS7LOYqVtgi^Auyu^v+Urj-qpy z!Z_KM&S{x!ovj#K<-^#EYcUR~8UEu;b!hXDnW`6+(mHQ8Uu9x!oM@(V7Ww}E%B9F! zi_^Cg)YLOSogdWhYYsYtWo{qvymyGsSfBFgy8>q{()Yt=I$L2|WP66UpQEN&$LlS% zIykw8hNY`Ax057lhIHs0wl??il@lG6XpXxprM(6T-iq8U;zb;cbbsQ1Z7DX`9UL zmgRRP@=|BkaG5(CygcgULR1*EI2=ZNhndEfx;rPr!W)b4G~cIcBm{nDOG+{E0Qs=XRbk zts1v6<9Q4!4yh&_L+{M*8W#W3vgNJ%o#-1rj=yK+2k0Ay)7sYMz3Ivu+jQxhSCeNK ziSg>kje6nr7stgdg8xI>9K*_jyo~BbmtpLL&wTxN=z?D8c`?nR*h$}A-n^8<&eOaH zJi?)u@L5uC8qW0MbEQok&#*EtkEZbHw!TU=(`SSX_Z~{CP=560d!1nn)j<0< zj{p0)Lzl_e4X5e6MUO9%aK-edJB^G}=EC>T+WFXCQ8y8^SK8{EyV8Vs=b-mod-^86 zQ~2vkBXV!%Dc?iy;E4g9zp`KEbvBNlv_tPmyy?>A;NBtbl6uvD<}%Bvkzs!|X~%3H z1%{8)Rt=r4_gQslxpZpX%%mM&GebH#&ba9!f1cJi7WU;^6*~t!CGYxt@!Qs+zIbMU zFHV0xbGyFwmg_s%!G(PM^@aQ|>|W`}N#FJEO_n~s#rh4iAMj`n`kZ~Bt6zC4rJB0= zgS~8c@Mpd?$1^;g@?!BWc#`3}bNbpG3nuMIo|()Qb95aM=KUW^-L|qk*{CerA!^kz ze9^%ur#pZ2X>7D_8=Ot){7H|Eh9D-)ALE-_2V*AHwxbybJjV~w@tFR+);62}d2_ai zx9zK=C8K2;@GPYR-J6gm8?q(wzPGMNKkf6Uf~^ZL|KW4Cv|HHl$}5v(J5{}mN?L8i zI}~~xe5R;rUMyqlM z{_w{c@~2&-X-lEd_s5^?nc+;WRP@xk>?gvRLU0>gcCDI81h>*2yg6Py6mk%|u^w>DEBN-i9uv`P8?8ovNeU?)~@KZ8;3I~3q_B$gVyO(hv+Fs8|k1k3m;_f zz*nn}L+9JT#XtogfnyTn06i0lL&>}f_uSw4yjZCIC`i&q%!h} ziXLO9@^!*FO=&!>qp@=}FwM)=AC&AQ6FjYoYH4qQ3gvRx(?>9w(H_r*i=mgROv=6S zI9p2GQjz64&+nLFe_{laU=cmnIzoF@I1$DuWX@1W(#oy5Gh6HFI7*DcL>%43CMvzh z>x0^oS8(2=ucGIb4y=ikp|5iM8axvdJ=;;=nJC5C4)U%XrTDTnq*{hjC~72*eH}sg zY9R@|?wApzm9;9gpR@*RRc&b94pxUOFfh_YPeljo&@QEwZSDwj;N&0<0JBZu{tdLp zv+-hR!Td`x_M+j;*j$gtio@L=-OVVqCAgs)?>Ksz`>p3$I%fdUZU19?xJzJ6K$ z;HHMq%fDML^|o6@hyBecMt7^nQ{c^KH}XmEIF^rZ_Hk!6C=YZ9L_eL|)}WmEs8MCs zm_w?Vy`ra}gW)CiqLEDG7>`GBaU*WKS+dj)`@E4%6w+L{P=GX>%)=TP%x&r!6*H`F zuR({49=5~2X(V%BJnbZDZy}j~srn(x)6as4JLL!ZRbE9NK6EO2hmB@bEK_C=k70I& zdT=l|Ar~g3Bkp$l!5C%lG(DSxFMaXd^tm`fE`UnM*r$$W7IGd> zUpGxxfOKbjqLJzmqzV~>W1~pb9cO=IG_wtsPJ>>=*D2>6#gh+8b7I(zi z7soO+&^g_k>II}q#>a?n-cE=b>DrNI80c`UJt~gjEFMo`54_qqhNqefdnDD#@Fh%> zBAb5SWC)fvD4H6Mpk%Hxfn5b%{lrqQRXci+a#y97ve^->RiXC!zGQjE5|S~Qjf>oZP(%%#avjWYb|01 zzngrfLCTjFMDk?(1|tq6)t$x>3`Lb3j(R)9d^ZlRi<$eDb zA)yTMuLA!F+5>tKv>UV&t$Xe-DH`Zee=(62!2K@WjegI0mepyknc zz+Vc+1iBAY0$L0z22te;K?^{Ipn0G9e2p<e1K*$9ZO8L-fwy_&vrz@m84ZY>1T@XTGl@OirjEZEtTTA&dqtsAfu z0Hc94y%k8qr@iP4cLQlbF9B(I%F8}k2c-F|2O2G4>irRW{1FLzdpG=X;3xTvCF9B&2*8*va6@TNC3xTx79N+oE-vfG^c+)vwf{j3`;24lL zrMA;|!*L+ZsG`f)lm}eCbQEd0(=T@bsRC=aFWlDSOScV3!@Geree?xiK1QHdVF4Ig z@&!Oz@{PdZNO%|+4eS7V3v|(!Q8AEav<*lL{IoxO50K__)*pV_FMsKmquc`)Defx; z()-rCVSEGub^eHJ{s?KWFMK_a-rxi(fKT=fSX995?*}Yu;6@-V=vE*t=vzQqP}L=0 zK?{Jipz3~KjZ1)3vEz!bqE^*4-wmgLj2$mkGwc-^jQpL{Nz7Wt-l}6%_J(x)(`7Pp z`+Zr6aZYB8j9oW{nek3oHd7XCe<_FIM=o7mwsy^mvPrAUR!v;HynOl6b;~ENP1D;S z%478JzK)oOj2+d2r z{nGbCZXE0XDH?okGaTU&e%coa4+_2*)&U6+KxE_nr6`K{;Cu~D>jtieZhR5FrVtsy zH+sW=0+vI@4==E5So+IO_gE4}VkY?iN0$Ge%Ap&bHnjFw{JbM6WEj=0-rrHn@tHZN zovfRjotZY7D}|w#acfp{Ycn$RnL2$Ex2$~W>Ib+-makp60>Rm-y3};LxrE6`%G9Mz z$tYb~nw7qM*_6zz^t6oZ$y3U7*%`}p%d<;$OG`^9XJt>(>yl{li8IQ}A9;|QvNS6z zExRmBzkJH_?6kDBv7!E`j7(w!h`a+Ig$2eMyW!i>1B3<1;zX#}-HN(S&Wa~ejGUh6=? zAR0!85v5{#4t{{uve6%v3zVYsC~-(f%YangEa*_Mf@u9{bq71xI9O1G4XS!7ARTov zl+NNKy1|R)MK63cNAt5(YyuPb-YJHy63@bQ1Och7)(ch z8fh{UxmrKSee)z<&*Zntj2(^hu$w;)5FeCv33>pI}8eWM35n?hUsDUJ$ z8OY(}KvaCxQl+y$TOrU2Xsh_BoiW%3=!Nho^Zoz(oJl4D+xy+y zd%xfBJNcdLz4mkMwbxpE?Z?^EFs8J~VzEexCsj(75>PGzr(TyLqH-mdWRo(bOQegX zG=wlN@rn${WJMU?M1FY1Giz9i#P=LR4kNz$vJ|QMyT<$OP)Xv;av9GW*CKu`;`usI zAYaBO>c|D0csC)OZz9hBhrleCJw-~qK2*#%5kCp>NPfn{@=?8XJK~e^dlm@sP1J8g znh;*LvtZt=+WE6*iF~!!XU{;;fBCu5lbh$sB~|}x58LO&n~Jx1!kyBmca5LYcH18> z$r^U;+?Ec=Z7ICj;Po62p9$zhD4dG60@904^T@-#Y-FIRKtL0G>Yp4i11H z9RN2CfSU)vw+JCJ8pQV8HOOon9Kx{yaC`v#BQme~F#S&kz&{@V9|7O{HA&h!gyo+n z#X;Y-Ws;PKaKceAo&N%h^eMs#e+<_@8S-Jm=K|mCZ(F1S)W!IM!H_X@+Qnx4HOSxk zvPH5$xEOykVApRf(gZX8Lg3$4W|98ggs%oYy6=;uLKC(EueQAw={ysk@xXuD3l`}k zGyZ(km;ED)q?>Rl(mM`Vq#Moj55n~aC20c6W&MMY-}SUbI%K9FiS+)@EK;V4ZwJz? zv0J24Gkr1eod*1~&Gb`Io&)9GY{EZfe?d{rF!Nslx5h6?zclm9D8B~nMHW%N3+cVH zEYekG`k%vfHAs@%#P@f^cbOzTXr_Mw<#>Tlxd{&fK8}wp(k&)jfb?q?LLZpHSJ`;8UpI!Sc(laL93fG${N#8T^{Uge0L;d%f@kh~b-RR%-CVW5gkH|+N zJPzqld<*dRH%XFe);|;V)jVgB)*znrK9BqfqO1g7grV-G*2R*v+>Bp`de@{`q#uDU zjDH2`+J4%H|DVYpw^$_AjDHufAN(@I%>qPvT(H3d7 z8GjwZr(v+6qGWx`QEuZXi?qUooxo@92a@#l_l)>?1KN8S@qW;sa?kuTz)y|OTcqh` z{-tRDu4gUMDHC1`xEuXXzF_*t5Pkr}rCud`Kj3K(Nzy7aeHG|kQ)!Xrn((6o>aPR7 z**91uh^WXv9qn6tjYWD2=~&(?fDa)5U3LSm1AeV*`r3aC^lfxoq&zc!E9jNoEJ=@; z_^bx(SSCq1X1pJ;zfO|=&5U1%@?1Z$NM19ZeCe%_q;Emlu>MoPZ_P-^JMs~J9_?{p zkeF@eKTLYPWRZ@W`F8-HwJ2|$3EzwSHP>6D+f29_`Tgj>i6;CZ=y_ldHPqLg)IaB-->lilg!p07h0^tea{(hA;gx`0(1%x=<(-cxsa}$n z!ex1#z^ApsBK_EG&sN~mw%a0IYQmjJcR(?0C#HWD>Alk}!k!?ErbykgMXE8&_oBbL zueM0YBFg_R@bIF)67AnZdO;p;Fyrq)eU2aY@mB!wt{?Qt8=5Y;K#w_Q`mX`|!Eb1i zD8G^IsgjI^v6)?S8#U? zm!#7s{a=Q=R+XetX8uoE-c67{Gyf{IXAPKn3GgPp?}1!2er}N-HsjwwepfT}gPH$Z zsL1hwMfxW*{#xMgdd4FC%!H+iikS%2ZuEM~j z!Z&}xyt(tI&nlZ<_dvyrx>>WUs{GRfGpqlv^H%p|eei)HgsK+F8%_R2b9)Ig6yKn%dd(0##Dgg4)@EN(pt$ta*e^U8PypqlLk$st@eSAdr*? zoRq-QAS=&vFkm}@k1R)5}|J#SX!!m;xL^NU2{+6lo2>m(sE zRR*qA2AWj{hE)b~Rp5!4Qk6iaswPOkzy|-(yVK{Qa;Yv*I~Q~d&J$?`$?Dh-eI%@& z0alrP|Gd%jXH^=KR6S$-^am;lmsZZZKTw?r9gWfhmF)jnm7*ziQt6`)PQM-@6$Pvf zv3((Cy7|7@Gy4Js3oz3ec^EJ-3&V=om_!bd9WA+I_PqP&0z*UmD`)v2q?C??1eF!d zo?CfG0Qf#Qb{;5GVNlVOuQOr=1<#C}7!3Tayk>NAW=L)oYNkw8Os}h`PC{Won2}jB z1inr*rcT zt`x!K72ov0^fD;lvqqLZQd3z`2~~Rb=sUr%XNjtNV0I0QJxf$@UJZ0Q^G%)|s4km+ z|Jl-r5kX)niC#-43n+pvC25265;6uQ(dWgean=;znX_;UIZ31^JrcY#6H2$Xbaq{! zf<2p5JG=CgH$gVstRZ4}*+FB-}mP^lU_3(IcuHPE-d<^F ztAX*iiz<>boh5*McxG-RWM(yneyOUivhsoXQdOW5Dl9?pGgJhI$ca@*8aPV|QxOq2;NI@ly5EKIm1+)X)7>QAtDTW9g6m z+^f8iQ)EKonmV(nzJcM)3dOK8utpK+pI!@VAu;r@+=@z=k*Xn3E!Wt5a3j_Cq zrma~Qm^E|wa1)p{mmWOR@m`JBg%_r-l*$0{c%@-h>AFU@!?y%;GmFJ#liI8=x3x+y zIwUE**_CQRGV6KOO(~J9Z9^oNWtg+sR(Mt6ju}Ioz7*-2wsSY7ZNoB;w_xd#Om}CB z!{SV7EOGn2UZ1_>1KW$2q*`D*U%d8eso9-+E~~WJJ|9e6+<3pu06fnv>0!rfFx;&>Cy?A{xIC7c$eYD)J4MdM?A|-w*@ZOFZeuxckGup zye2n(d+)J|DJLGAz4M6^#Xns7dBuarPA_N6N~O*yvw$?8`|e$sx~Wrxe`A8i}+ z)#$O2VOu|#pZDd#*Q&m1I&tY=Z*ly~ocb^BTK{iTChUBB)eZ5`XLC~jwDR%Mn>|-Q zul|6=jT6k;ws>L>Z20=u?boM` z8ajH+Zx6N<>wA7S{yUDk5C8Dn_%+)aZ+r8mMJdm${?@l2ta_zsM(|gUTd}*z(f5yQf9|@I)Z;?C+Pi#ebbvTDa%D z*;8JbxvuB&ytTh|{Y%&P?>X4Bws`Zj#Xr|ZfA`uStXn>~<}T^!N2kmlDv!Ic>dP-) za@%`4mi%+=97pk9d+d|k!J(UL+pd|s_o>twjcfk(#BEQXc>jTyF8<9z`NZyTo&WHW z7lvPY{328Ck32s;dfg*a?rx6w|Mi(C?!Gp-?9YQE`MYj>Ci3#px9)9)fAlylK zuQFlE{lj=K!b^UpoDRo(IbJ>&;!W`T)gr|BhpD@GDBF}b$`v23op61K&pf<$;w{3v z058`)hT*Nj%f~DJ8~?rorvUFryd`*3@g_f+Nx=1{A4^5zp+2FW!7_?;0bc5}#PcLP z3E4d#{)7&@)=WVCfF&EDPp*Tz$P8~Z-M{5fpCmt2@_f!UoZkO+y*@)nCF>m<;?7Ho zrcs^nNP|rcOKClaD~^;_oFz zs_?H&f_2kxhs&{O2HtUa=i*I%AI>!l=XyeoOvF5Eu~jBxF1g0nrpf>rW-Kbg{E6?x{anA zGTmm=Z86~RcK344K(6yPa-EonbT)6Fnl zm+87qH`8?6aHb#)O@EgzgnS!aDCA$!h2r@g+(8hm19YLFzMu=`8l?+HK1dfr(oGiv z@fW)HOHvPAD7aH}DO}%!3n91Cg#xnCg`%_5ZA3rNg(7p(g|Mg7#Q>N=H(iokbgzbv zpo>8zlP(n92)as^ma_K^#^5~+2^Xa1Vy>!v}KDrpJO6Xn!y-yc|ik~i&S{Yp^ z`6+b498>8+$xowO37Mn|g;7lx3Un@A4BRzzb1|mU9RZt>E|gh4-5S`8bTLSU=-!O+ znJ$!J3*84G=XAZ$X>?0*#(^#d!qs%2#5y@$D2x~BV(@vHE)?{ubi-I@rwb$D4Z7u$ zw1MtrIEz8I8teRY$D^O=VsPF@cN+ScE*NST-76&NH+0h^X&>D|=zqF{(f@R<=zqE{ z^grDz(f@R>LjTjn0QeWWFfMxN7NGy>&XdFwe;ox#@!oCj_)owPVpNx62jX~sLTRif zd&hPOm{MEKz*w7r!3a_{|Hak{7zC24U4+*NnBMA4!mR>!6V4{wC}2iagIlFojeyZn zQni=xGyyYdbqQg=fYG5+wV$w8z|2}bg>bfjIl@&>BkU5emvA*=$r=@Gin$0TcD=eT1_GTu=A_VV8g#2}cP# z1RNsVO;{3eGvOY>-G62KTL?oFqx}MIC2S+SOTeoL^SDv0O~B6*PA9xpz^e(n2(J1ZumkGBD_zS{o2{#IuT~ob*aE*Wu5^f_rO~CA`>TQJm0{#o(U4*>? zX4h5kBb+VZQ-lu?b_rO5w>nDLAz&-vZo-m)ZG?LWcb{bYx$|F*Q5WqOu!FFT@Gb#6 z2|Eb42{@f_I^nef&LHd}yhgw-!kL6y1&qye^grQ70cR5CahX_+fJYGa5}pS54&|VY z6q4>~+ER=`Pgk-LuUg&F+Yzh0YrAJlYx2_{YHf{mp-o8%lFK`mmLh3BwX}q~m{$`{Mz3`lRTWCs=nn>P}AoQ>2f6B%**;RjVGjM!Hk|!yS{$ zl`p!LgVPf2XkfjI9GcP%+*F_2rb+leMGM-rG}Jdonp_@lJpc+Q?>Z1+XQ+)~ul9yz zm?`5yXHwb@kV^iBTw8f@t@4gw2Pr5zsPe zH;B94Uml;7he&4Hs!4NF&}2tE=s-Q3!7(OnPRit17LWmU4tf2=i_}uLRr$0b@~KT; zKl#GJJ0hRKGx1x4JB<+M;2mmbB<5)PREkRyBGn#w{elYyf1n|uHAaa3+SB4goJ4k+2{1xN_VYv?+_7QZOZ_O|R^^4@FZD^-Wxk=#$5$gEi>?L>&iH`irC; zA{la5lS95iDxGIYrI0>IZ-1F2Gf;l}q*5z$yFmqYE4n@-9G6$Mg?GzOMQjmWAwj_* zHgKDR*ft)wz)OuO$>HDQzgFsYg}2M0L-2#MLov7pJB=t;cTVz0Up*>V5d^tXS5BG5 zX#psaGO+V;)D-?VlxLd4Mkx~0@@3vUPJ>2ioCvwE|D9LzwGLK^BEB!b?N!+%2Qx>AKcV}oOU<|3MG z;O<~X*NwU|43S-Fy7FB!5#z(V1DCS&4r->`p_V4AI}OF89!Ke5k&8_6pOZ2PG>6EW zS_`dmOJF=lU|cvJIKLM~+vG`c|5W5P^YyX3$?!R3uM7J$1(@6pJz*%xv{43|$l)KN zL26Hen{{O@u#PQ;iIwO~v!DFss4(Dml*UPzC$WR zQhur(WOoC5hZOj3&UVo5sfdZHWjjl9f-bJ|zJ?-~BQ_Wnqkq#$?iln>JX-h{s7N7S zVmxX(*oY}wFaO6a)P?4d6mrvu6C$t>iL{5(wMo9F6EY-7E1(LqYfaUL`k$gsb!RkW z03oeJP;js2ccP`hYwG0k*sn0%13sBrLALt7KJF_0(W{R}EVA!7cpq%AQE>LeZOZY= z4YN?CTpB6aSbpc7cdC1j#nfGq=oOY-+5|TeXUo6rfJBB!43XYdZI!H8MrBv1JELom z6v^cEgCYlP$dj!<6xYX|LLE*(4!ul1t-j%IMqPadMOBBd7Laf-#;v^z`BjYG>@V>aUiRn+9>8Fl7Ei#D2zFHV=X6nBtQY%|eDW_8!omH2 zFS5zQe0Mkq;~!uLVHe?a0jCqre#^zqMS+6opz=k{84jbFh02Mmf?q4At@T%*!2*AR z2$2OYofO@0Nc1ZSrloDf{5Q!UObrbs52%KtM6AKD!6t5bJ?#)JG@!RzTje*mM`AX# z3rUfXp7ZG(4e_RacTaW!Kz(6p<*m8U>s#Ftv)>P{xut2sBL3y?rx7zZ8fYWYW@m+;a?LaC~c>do)mfIEbu*QcZTB& zZ|LJr;v0!X!GiXiSwuv$uF(B))wzPTtM$sMa9nSQH|$6M$XOvbPutR6W4f)T+i1Eq zraR4a{if?R-E7l!nXbchCDZM;8RZ`^-Cd^J1{XBTsFLS5d11KAt1{Ku!k z70p86zAE|j{v&cjD6|cWQ}C<~?SluQ?Mj<1`1{Rsp;ZzzP`iab>D49>ekT-CUeoC~ z#8zJUjKN$^-O6E6I<^l9()HEuZNQjiXf2!Qg$@`I`E&@VmZ^n?fMKNJ)*(phfcm2e zm!GIly8xCh68ezv4Vy@qYa0bQdw3YaoLL>JQ%QyFcsdsS1_2|~kSHHrmtRbcq-?P^ z#W`iG47o6*qm*udF%fK6jr%>}kz0jtj$AGk6Xoas;_#E)Hz_;;b{6h&D zsm)Z0YK!|-5${Aiqx8ab_+B&;W$GnXq*wzeC$6=)g_cE&(P}?Nuek_M5EN|7b!`## zJ+%13_#2{4@J^cq|2CwL?*AHe3jpmh_Xv!$5b8z*qxDhPSRhe7yi>5e*%5M+p}-c> z+pI_*9Y+k8H-KwC8a_ffIivobt_*13Ja$Cv0;ElJyy?OU2TGaMG1$=2`K)=WyA-w0 zLWT?sE?t-Q&)`)Hr z%Ci0^cu=@kv%Y58hYoNrw+?Csn}PCEHS2QAKES#&XE}zCrq5szG$65EbCz2^T<*Ro zFQV>PaE03b@MU=i7F^MMAn&t>FYCIjKYFbTK5yQZci`bq^FCXUqVAH{_n;k9K>*Hh zyf9%SU6=REfm+qv<*N0$g4@&&QCqsF6XKTM@Ced7)c0C}nO(F00K+gMq5rIDSv`SE z!fg%Zo;~_K7N)BIsLRt^CIaj%MzgLZ?yB|qM2Ko%Tg0OE+bo_vBHxs1M8tC?O}A5= zolpWIb$%20-mm9lH5-}g-6h99p&$q)X;t93zzfyL!A3iQCFFl9Ng=Pi3bkv_<%plA zW27u|=jOzb(1+CqBu_L*vwJKNv_2O^%FqqVj*?8%crM=T=n(7xDDOH#ZGjt*E>E-G zjQoDp>KTsC9}bkDT?O^k&PD4|fh|eib%9wyB7is{-!xUmf1kh-Tp)TzUkEAEAF*hq z%V|$e)9n^GxhSR@`oHvY>)%0ewljestuYYwLM!TknLN}A^wLuU?h&KV_is;NA^#D922yp3w&*V2j7jb$qj-g z@MV3(*Y-E?wRJf}`3An!yGghzkyLGyVU=Tj!>(ZD;=gKpIIdD-P=w25^%KlPV*C3s zHL{WI!sKPIymAgwm?e?%&>oZro>!khuGsVVMgZqGJ({I&!kovoHb z@Y5jCbDPzDAf7}}75&;~*92K)1*=RVMrUB-4zbyo-a8N(=% z%-Elv&uIb3eeQFrZ@E=z2SpDejaS_TTBf6zsp`(*^+Fps^+0xR%B3I3rALs$3mpee0U(#|hoVg<`PGwITRi*K<8tZypt@5oJ*MuJOMB$; zyU-CX6y(syS=2qqA(!qziaZc19Y}bQ`M75rkJ=)vXq4rG_aLngAP4VMS|Gpz z-e1u^X-hGUA(UfB2OA^XYGEIRKf;3U%3opW38LD3C8QKN=N1faaW|qrQ(?@ZJ#!J3 zsb#F|x}+cdA>Um#Angam98K@hKx9HSV;vgiSGR%9Xh0S;9j8?+FZm%>OOU*@ag&v^ z1}T8m2E*j~6Y7ngf=LPG23A^wNR(8nTbnm>r(-is%vQ~R>dM3FD!Z6*IIcWAj(!Zl z=g?H=^zUO7o{4-ln!WkTL##;)g_yz<;mEh>-el|ze!?iH*Ty5KueciHm0orstxcE{ zxfeEW$`v>Uuhv3uunY_}>L%es61(bLnpA#)CsMyo(5MWRuX>ya!K{T@yki{Op|!NM zp-G+{i|XQ``&4@vB5?#iTs z$9Z-%ti$BcvmF-837V{?OURqo!T2~nd{0Aps%-~?XYVK)b>3mnogX? zvVOx6PF*1<;kL!sfeRPvxv#ZiLcQnD+T{ReRjK)RD<`jPuw#Ce-5ap=R7nGc!m+34 z79Kw#rbMLv(gfdp#df{>DcH(bUjqAhZy~dRBQwbDSZoBU@)C*bLs)FM5oKgU{_5Rx zvwFDfuKfbYzQsWx^-0dQ{FBSsut~Q^?`5&(ykm@wVxyc+T{N_7J{Qb@384C!+A4Pl zd9zL&k+0=aYIb8jHm|up3SGYAZZ*r1I!$BUT%4$9gubw#DB@->3HpoV?x<53LFzwRddr zFiaJCyHaxEEYDajLJRV$$;ajX=pv)I4OBp)kkn1qW~eRIaFjN#H;u8Y5zIO;PJlt2 zi@%%GmRz4bRa@1h$D-i^7gnU*YlHr3v4)WJEwH<^=d;N1a|Sy#V)aL3*=+|V^x|%eA&n>?v09gF zaxJE~dNH>KO7&tVoEp8DE7xs;gq2|`sd$+7suGq zyCCNx+hVV}C8v#C+4rdJk+06toX^NVX_pJPfrp)%bIEX8LLWeZU-_|xLwdSuf6eRJ z65Nf&k366&ZALBet_vWs)B1`MKE3?Yej(IPYPVi)Q9G4SuXsn0^^fYF$jNiCk#u$b z^Xdm6dw4sf+z}Y0PqKvL!CzrJ;-*9)>Q*JJ&eYBw#qAy;c$>%egFn4jE|Cj=>FVKef=6ISb&X9bQ7}ystiI13&vxQFmiS76uM_#y!$?<%ReTfQU3CKAc6ntn z@vX&3Bd^#5-odCO^j+3AkR{I&(MyMN29_s!AJSQmRiSh)8G-y(O+oHiv$y~IWwaJPjW^)HZRC}oV=+8BOt*Sb;H<1j6{Na5a1mBTl^#p*T((`e zW_R{m2oe?7C4DL2D6ZxLJn%1r)`az<}m z6Hr%%US}q+{{@f-vTjUBGSJTugb@HUWuAv4@gYtKa|_crJ8KUnLKF63ongfga5-yK zw`P5;oV3*qMyl-CUUm;xN4e}yb%Rk^M-xk7pSB;{%|=@e8?-&P%d*eYE{|{5ohv<< zLf3sq-Jiu(0l#ivZs~@nOt&uaY^#%DXroBv&5SKT`KZ;Ub|`=BQ4gsft6Q>8TI$`I zy7N|qW7@GzpAa9;_K1lFm5X&Pj8RTTYjpbx^>j|WRd)C`bjuF=2H8=z5uS{V@~|?5 z49nPn-3NpWvu{*7Y@XA>-+Hjk#+n0{p?I!!@X_q8TK-x!zZJ_-(3`hmKE_=Uuuj$% zB=%yOvjzQ?DNhunA_svO4z(wXE6pyDtM)b)2SVF*d$W21ltE@oJ804^Xd+tgd<)B0 z3YTPLcs0lBBE2&P>YlD*ki^37V`N<3uUu_y$w!W$ys&` z<{%cKlmk6zZotC+!pZ??!}dBY6WG|SttDAKkgxH=T7gSW@J(e2g7>3D>Exd>>*XwU!WR zpl(sOWpyh(gAwHbOJ~a~RUAO_9Fjv9f&G;pDv)fsh5P6FL#I4j>lG!n{aPQqVv zzNr^kF`eTs5SD}&57jf??CP7PqT%V9{qf!$+G8}d(ns0fdU&Wh3jL>Sag2hhTKpv` zr>272?8=r?tlYCze^~4Rp$tdE(;f=Yh{g4Zl}@8bE@~sA7I@*5=RLH;zW6-d_rj^J zF=mY@C>?99z4fcdwfq+Z2G+M8K3}c>!KqQ;Z)h-eXZ`10sjccxW@k;T738+7*}y3S zsj?fMKv*V5n0syVN(FrY*)BnnY4XZ{@4+Sy2UX;(@2w0T&HfBhq-(h=Jl%l{#IT@t z?m2)>6<8ZqP3&1;QQxB0kG@Po&{o z1xp*)f_UQ?j3L^ISM{?KJ;-lv953n34BK{E!j2eA=1xKwr-#7x=;ng((ZJye>Km&F z=#Pu}L+&!9PH%RO^o|;1558+mVFk7@Kke0D(=fgb)qv?hcNnm+hH1d|S;Ntm-y|$y z{T&qCYY(3y2M2A-trzB5hsxnM!Gp_v7h3XsLoITcmu~<{0hEG+2?mr3C{+&Y24n?f zmBS4NbPk|%0hLMoa$Hj5eG3k{O-GXf%e(k%gP>US>wy7;Ota#wbCAU=8aW!r&pn zSqv7`2;RkDJA>`P@eCGZ2^K<*ZHyYqsG-5@m55Dgx8a1-B8TU=dQvXjm$e@&X@xym zC$xK=@pIApHf2i>$RVqLfk`y^j`Nkdi_G(UrS382fj*ea15fnH>jUo5{SWk&x(ky|^ab1nNk{sy zlr{JeFjlu6+b8(?;=Q4d<&wv8P0MafUhH#hXiZ51St5BqMile_kc|8ay0VVwoZcCz;W8j|Y!$39Mw5g4A3#~uQs@yu5`)~BJE zFTkRn=iYQ}Oa{lVi?_)wR{}vaBp0p7*2ZuV(`*Z7QVzd1#^sOu$sVM*SS=1W)$@;K8l_ui*7hvFBm@(>3`=vq0A}2Hzj!Rrf&93KWYm1zcbEMK{ zQ931zWp;JP#UIvhg$A@^Q`gPDzrZl^^3}sopt+V4W)t!}clI@*eg@EYVhl}BUBnYd zY;gHx@RZ5dSi|BnupJi82oS<~0gO_PZllJe!*N^+Qfvb;V9ufpmtGI^wnuLH6ccqy z1iKrP0tgEdL*RgCNst>c83|#H9(o@mP}2F{-UEv-;JznJKXv8wJ3NfEA7jeqmr-8o z>&D{Hr1I#PokHt3#kr^!yhvA8VMDKcj-}d#xr{%WW<*2B&qS?X9iiw+*`PP_Va z4S?CZ*DS>aV(nk6=py&ZMinEsVB z)0^kvduy1_9OG?*GjV|PTzw)Pz#GWi0$)Hum2JViLfVo_ zMBTrJ-(+-QI>)%YB8rQ>247BF>=ihMCh2ca!rpKtw8|&H#eI=jSJobJ>BUpvOV9ZT zI#Gx)h6`KQ&3%0^Ir`xagKLZVAqm&a9mzX9;5aJgIa1eeMJBBni;hVT$RD_eZ9l5X zTCrbw#3=>t8C6`ms9YQCKss&m2$+j0%@*wT#ohDdYVFvS|fsXJPO-V8!4t)~g;1$QW4cViqVo-)m|R z>_tFcwhrB|G=R-k{1m=qWQY%&fG%=CHnjVE+JqAIm>fQeCVSqK_0#AQZIH4MpG<@f z)1R#s_ZJ{}{Y{>3ZDO8^nOpGursL%5z}*Gv#JsK=R;3)b1aH$;QfFaR@-tf`maZO= z*LUae6bI&GJz&xsoa@wQm}0AM&=iX{(XCDPHCu3wbyVskF0l~di; z=n8zDs4mFuD9#hSBWpQYfwf4@DNzfo@d6uqw!p4c__T>7p7&m}$U49M!O||t5-vo| zu`3YJTQ)sxH5oC{Y8t&6yPPg({g{-wKoR4VMqd+hxSZs) z?E;H9wPGv9EsgXDTtZ6S2W!Wm6p(SqVZvQSCig8EYW7kTqaX5i6dQwEu^8NPwqwmh zUKKF~d{XQ%mP3d~*9vt{SBko22&^;tslK^Q-}rKd{_lkT51RV_XrMw{jQy&>6wk1Ma6;FU2MJ~_^V`|@!7wGqWR_}Q9$u8n! z$5x+dEd37oOk;_MaIkJ*k(YHa(6Eg-xfH{5=mq+OkrIHh#i5pF5lxXN5u@g*#jXx7 z?_`!bye|BQV;ByNvxGT8yW*S83w#CBT$0(*Se8iJ=Ne(F4D?Nz7+qwKnV&;|q4JuoEJO9vFsJgFP`a#kB&QL&CQtAXpWG!MipO zIQwqXua#KEHY>tMq_&EKtyoe@LXY}N4qc7p%JG!I5asxg`mbaAVS}=y#)X;Ea<4-U zjX#H@JA=eb+O2t=a%d_7S#J*yJ}|1r4gm{u3>RRtm%c_X`V}Z*sT30_PecxFLwb4T zyQqVWfBo3-pYeJ5RDc zPs_7DRM;>S>LYpo>l2(K*`u7a1b>U!lucVo4nT={SVt*=YuA>NJJg+>e+HC}_pjuiudq!7)3R9G;3`wy494 z-yFd0Q&=68m1dqj!PIjg0d)J#oySG{S2vsO-_fuAJF#@Wiw47QkqWKOozmF_A6v>b zYkU9Ja#$ODgypGI@}Qlv(P$nzuxUk1Jwj8BMmM3+*z^Z}_&$Jbj;KZb+w4sNJ$-7E z-~t@5Vv{$sJ#uIXoU^o>6Ajjkc7pOO>z%=Q;n8xCgyTz4S4h{EnI?NcB0Xx|B7QmIlD!({!y*U{0H@& z)o4v$6L#mc`P_J0v7oxgV-4=Uxkbwl~vys9Y+e&5h-y%yp2=lkdqIL!^jJ=Kz7ua~# zOA(6k_Y=a~gCRi?V<>55^YlV)b&G+d0eR$=kAXzJ0|`oi_7DR}NuD+(A1hw=<|($> z-o!xS;y{v*ETBPV&PQU*?i)aMJPhCT&ZjPXR)*pj0F(WeK8?uE z!0~36tSm;e*_UU-9{AfYFvo*UiSgjQe)#X`!{5MnVdtMgWMZ2KR!xk4y^@G9jAJ}p z>CmCmg+9m5ZmwVtIrI{U-HUHK7PG)gOx&x*1d29j3wJ?M&F)TqQs%KoV3 z_9y1xy+DH~_n~JhVZlLi=-gz~UI1za{cbgILGPP->s;t9Ane)HYU(YT} z@~qlyR^21UvYm#7*sC%HHLU*5uTTRz$~o*z3?%=PO=WMr;hFW z(9e-UUilJ`JDX7Z&nnbzWK`~Fdsy;Xq2jQdt~sB^L82~U$tuT_Y5kyw2WuD7Xq9FO{V1i zU8Kz64LTIoRT+?a)I=&pT`njH)=09f`r94QHaYDET8-cU*4bxU0j=C5v_6b{Wgz7z zQrYATntW%a6xxt3_IG687R-awi5wJ`Aa8EFdkgH)8Zh96>5{<{Th56z7910TJ7V|+4KAx>vnaT^a9v$I(UzTnFrwiQB@U`! z5k*02oGik*9DFI4*^FtD4fm4B>$m6dTQQhvMjgwGk;%a$E4)<0jVL>|c2{mki{XaG zqLhS?gNO4FkKyeF#NunKUCn5iL5&SK_rD(Bw$m=N7kEwtWu$a_I)g*iy|GHnAJv_) zyWyB+V6t=%h0wYL=z2{O>bIw$D&D%o<3w&WFWQ#Q{9C|3^s2=i%qJ-4;6h346d z2%1dUayWztmMtr|Sc6nT5A`oQm1Wax`KGc9zNu_%Rd5jqD{Hdy&qg0);DDtN0nc%H z$!8FdSPRLG&IdWN(Iy^P%FWr`bxqE0){97~>q2%7Apn#kH`8G^kZO=hkwb$I&2eY# zvJ|J+rN)bSQro6JCu~V_N+CrqT`lC8VK>ZWwN@~zx`Y}P!A`YM3^8gkk6*aeVjga? zX-%}tyr^6(czc9}Acwh?gj6%R>pGD6q>^&Olg z0mk6OGKTK zoQNuX9felRC9&GXuOE0g+Zmm23Am|7he^pYFv0BO7Yi-Qv9{4`0t+-t$EF88oths~oP$WzVBGotq-^2s4?ZmC=Q zs_j_%E>iH>x^x?T9ZOrx0PL5kXjzN&`c=(KoXycTqHEK4*I+dKK7v$XK0#&_5(DKG)3 z#79P#8@M2Ad2b1%tdW(z7=AyCT!5lUWFmVlLW~3qiCx;80FarJzE}z(a5{o>S1t_c zD@jRp8JniQNxyNlo!^ZbtE3&vUPfp$UdWGCUG^e<%ih3$aY~*AagCUZn$N)1yj+qG zJ`xRl5sza-Ftmh$qKsRXA=82zH?yp)t?`jK9RMMBM8EnML3^D04%>mEL4@!xP41Gz z$Iv3>9YK6*C^egwXW2krdgKo(fJjP2sy^9zal(2V^?oNtm*4`v%fVCgemyw%1X~FxoB5rwHpsl26LSI@{yF302CDz#GKYI+fKh7E>c<(HQ zsrl}x{0r{o8)wgycZ8$`Mv>?@Ap(Q}t+>oH2pqvsKSKwp*wnwUU;K1%T#VNX7~-K% zw)RPZ`izhO(N2sl;tEQdTvvnM9vobxei?kP94YDNB0MWyx4Xd=08Bik9{A%jFC#L$f00kR= zl&Ou3mBC56&napAykb4%2^%;4^y&7%H9YUSzy&30S#XKAC_@XTWBO{v+yEOLfy3hLaBEw=^dn&^bS%>5`z?G3pvRjM`4m6uOHf6nqt*N zL0(ljMH3sM+Hw|z6*qjHCl1gESb0kniaK7>gj z(K1I^^-%0KFooGYa_Ck79paMH*bU^FM1OFMraU`-#>BCU5T_nJbHA?F-r4y&_z8#K z68VWbIA%nj{n5DD7?MXAtV2OGBI%30%JiV)i*QX9{R4O#Hw#9PLm>d#X3`a-{-e5R zl4nq`rq|fJKwFWl44)RtFk$kYJ<>G%&KfDY@GM1=CZ~SdrxFL;-`P7}z4MwOUqKtF zkk)~P8gg2|1B0)lDZ%ETL?#a1g?BH!vT>t9otus1f;u7{eb}YF#0W<>075}Sj8X_E z#1G%{hwg?{=^F(bV)CRu{xS%rHc`Fmk61Y~<(yePrdeoYgPqm)qw~-jY9$^lP&Nyj z00%~pG*}Dsgo&aWk|;g#z;tLCF7jI$xDen-j*)_rK|6$!L6sE^A^|>&6-kgj z&8+7tL{hLfP^{GrtdO;-8;CV(OlRT8{~38B%62QRYLvq?tDxe>+wq}sk2N?kwg~}j ziScM24pd*hWFUDtnkf+c0|Jmo*+?Q_K6Vah)#XCfil`KO9CGN#ET}id=OAZaclGrX zjDgtG-w+q8V1zL9spwFAMsliRym2E3eO>sDhvhJZ5lSEI zx%;rszn*0#oj3K0^JB2*Uic;D!=*jR`)xJuo8~ng=hR4;!1(xEa7hM-?`13DR~FeM zITRK?p453v_-JzRg9MD;R_)Go+($!)4miup? z6s>;|oWp~u;4u^=hc8EdbO-e*r`fpwl@mjhH;)cIEXU{ft#=p5Xj+Wq&I8^72=*^d+=745naBImVUrx zoJ#sJ%4da}xy01v6luG@m21xH=T{^-V?-2ZDx(V`wW&ffNqoiDPtP)>kZ) z0^}POqdm()%rQ0eAzAcSKL)=DPC4Vep+CVd^M3(;S%ec-f?ue~ayB0ZwwlhYP8o#n2cZ8)F`R!G##+aL>;otZokNQR_c}ux)ba zJ*FcEU@7@;p36}WH~ar{M{i&_t9~wQq1156D!+TiJ(`Bn z9YK3**Bas&xDnq3OvIECs0Q$Xu=h1i&gO8_!s*4F=#nE6%uTa<+jlF zz(d}5urG@96gjxmGwG2xZ&!}j1~Qf7b%6_%;|qeMsR40mG#W z4%m`1VC>sQg@#$q3Zw-0V7?|BIhueWv z-^IX4WGw70`B9?y#p0TA(e}Q40e z?{sNdV!AZvax~H(eWbUdt01ZT@^EtWTSi!n$I;n1p*AijAm-03aqBW7U?KIthlps( z>co6=!1~Wm!RmKXUUIf$i3-9J#Y!&-X9!EzdCBZ|w)?$nSOD%GPKXP}V(fBl6lP5z z6TODJv$>*#zP`^u8`n`IRN01Q1Ku3TyOJZ?P@XXe4l=L&j^6P@VKyb%C%yBTI5znq zjU4db79x5PSl))!MjgyjKFNQ3G|i|76M3uU;x=(pxh-fvwrgu6{%_%rc0*&p43hJZtX3(oe0K0?ok z)iyJQW%3*;`corGY%>|b)Gd9BOpWgdPBM<5YAeM&3&$?QNNlb;S%QygO~%4HSl=GF z2%YJVzezqaSDs)Np+~hQbD8~{6C~zc14}?|1jWTVP;$v491Ix(IavcF@0(?7qG%_6 ze*hXiJ?SIa`+tzE&uJeEJ&dEKPHaN4pK)dU6J#jkmX8nAoXD3cdgGeY@px9ZhV@Mv zw7uW6hy$H5Npd|i{a`qIiQeUSqT z`FpTY*z)`GSWl6!amy)nYx5=Xw8Ug|fITOsBesslsc0>qj>ajbk3w-4`4{KEn-20Y zzaVi%Q^#CB?iBIIsq{ zvpr{rDnc;*UC*zlc-PUOj^a|{qrAfpx>D3n>Td)K>hEZ6r~JbwqYRT_uDGIWo-rg31HwrlS00T&YcOdMzO!&zBI<+@%4YGcmK^5iaUDy|h8K1$ zB{6I)zo>Mp)l#S)(jG1?QXeYSe!w)?U{-}kdz=aN!XCAW9%u=r$5ww!pUTvVM?|{P zn=`Vt1<1dkRC^(jUwE`<68V?Wqx1}F__f-3Z2yM4QTLt$gZHV+m|hjhSo#TD{rCGy zZ*2v$Y7<8^TXPcSi}bjE+{kE@ueA3VB`7CQ{zlp`S)FfJvx?6JGw4h zWu4LnDQPpSHLmzVhmla_e>`;fSy`;X)j6HKGc`tKp;f5R1@jh-@;?!*ss2<$Xf-h;*m2`6-9|3`y{ph@ku!DU2)~J!&Ga;4cwpq)?CO3oPpELi+E>P~wB?3$)ux z!P!Qiv-~=gKNNulDk2mi|0rL0G?7u++GCWUoQ8aMr6Tu6Dxa)FV5)ZYNx`yP)6H5& zyP#k*w9#%j>DuT_IM$BQWk`<=dvWu+`f)GAHEv3q0@Wr3&TVcu9_GH)=dZu26a zW1(ALx{x$FiHkt&IxB^BGKpWa-u?vC>~ZxIjOyX-i)&!g9lzq?Y3h5pvf#i0SmAlN z%6(alaliY@M#Fuk6)r~6zQ?%l{S@zeFW`lr7gx!r+Lee)X+IGBT;1>461cE0F?={A zn#p_7j^SfC-c7`fUfMJ!ni#wFr|W@m&e0q!w&MFjST@+@IG>XL^f1%89cioHfd7u6JkUy{8AA@Fb{2F=7`&{VghO3f(r#zQMurMfi0{}hRJSlNX7 z4Z)UtpU5OM=wff5`u#`f--|%!J)i%N>fc&cai;upEdIyo-!Xru9sdpe%Qct(as2)N zbNIKO9e=~h6U@f5FUn?N$kkuNY0|RoFyoB#NGoZ+;WnoAvhoHm&&NTZk1I7|IbImaUK9DC&kc{z z=V?YFV;n!!XL3Eqf|ac{BQ2-IktohdwkfA=^*3veiVBGf>dUwlaIyMmsU|Yf9uXex zEcId3puHvV=_?)DOJ4tb7X5wAYzy_>f1y3S?HIg;hdOPBUDdxatY;*f@Q=bjF?Z=* z4`@2rhMtXrt$4-G!KX3*Fm4hJx%rz`V*as#o&pY#4rQY;iQpGQSclRdDqDOLx?ESj z1{)?_{R-`x8GooOzK&`#{*Vug33q8&!{UYVxcCecdF@txK?>HUR=kF)^(HqaeBft9 zy2|Is{^+Gh&51DhPj9>iY@Zx?dU;Z0=2QJ6KTVFj7T=^M=X^Igas-YZB}e`=Ir6$^ z`$sNEB+z#QL;QROKMhFNn%Fx0Xv0+?0b5+X5nmfc8~dj;QsH+6xTE(LGDx>*CwlajoT~`6xPON{IdS}ekTMNFX@K7l3gJ3Q9I$v9;l`;&BuYn! zoT;pVrNN)NsWHH{COFLi+f2|8unMWYfUB6?ivX+^)vKMx_z&LjVw|kkj0=Q9nHZm+OA7v1pYeJ&f2HqlV*B?3EZ$()> zUYu&w=h?bwu$iYmhD8gzUW_m9GpJfSVnH~f#+;)>(L|@d4!;|OD~h-Bdg8^Wj_!AOh!5csC7C{wUTQRb$R{V6-Fq)>2muN;a zxUWU95MjvAShIz|Bb`^={{nTuxIE#Kmo&gzCC@|2RdP)mybb6A1au_8klRHfhXgmF zSh5c+%ofqD@T_th9X@}xn~Z=EgF#GU!$HvNy96^dyx~3o(jp*+_f!1*(4SD@Tz590 z9q{3IFA(-Vd@b%ZMnc?rWhAeP3fx?P4pqrjN8lcZdjg@G+-*i;1T@TY`w@H!(W?aJ z0NShMu75{V$lYzEdk=u|t2s#aIZ}Lv6kozWmk3mS1?bg8nNvl1A0p@zB-ms&;Pg%) ziUkh@VLuW7w;~^CMtr(@OgI7<&Fb3Ln<`{BtEwAOL<`w~)*1sXL3xx1a#XRr!$^RH z4I*Uz>jwl4^Q4cfcs9!DFVuz3Zxn4f zy$`@F(&aP}dY99VwgYmw2dm{K4|&=H*?r6bpQmS?{F>a5lCv9Yl=gajc%`ipdI=_n z*TZGY-y903>(kjW9q^l zgrs2r5g{9`ka&ikLg)~z0U4nz6rp(qN}FR`a1#`VQ+r(uSw~TEhP+}uzL>=PZ#UXU zDdJMwmC;Unlakg%^J+#?oy3qtj1UkK>_tqi33y-kqe~b!S_1EA2`(Bffp4?~7mt>}KU#u`qb0~0Ex~1@B?yd`;EK@_1V>A7 z)o2Mqqb2y%XbEyhOYrH@66BAT;IpG8C>SllHKQdc8ZE)+MoUmUT7v6GOHeXef*VFl z5E(5&*=PyMM@vvKT7s(45=2>4^XJgZtg|4x&onzK)mwEe^#y_x>h}f%LP5;l+ ziQWG+RoT?Ah)Cu!o@$K>Y}{iobC)sm`HJv6jRU-}(Mg<|xAhF&-kI6V)XD4bK{mmc zGwbuNz|nEGzgH$hgpPXdzgguvoM>$kk;ZtceASpVzdOx8HqDPBHI;r`n%|q|zbMVm z+aIa)7pM9CY5s|6{+u-bWoiCEn*WM4e=yB|RhmDP=KoZhKR3<)=`??Sn*XzD{(?0B zHEI5$H2>$){KaYh>(l%tY5p71{Ah_&_$f>Cm#6tF()?9v{^@D{>NNk1G=EK+e|DOG zPMW_q%|9>A|AjRF{51c9G=F`X|1QTb%k_~bFx29GeyBby_bB+93U5gt9Qci=n&yoW zJ;gY?=y{(0gEF=XMM}P#!tXU5L0lIB)3qm|DO>gu9O*QCk}?BE$BI89Q~q4323CHu z|6x*(RFWpK7VdWvHQmR<3|dl;$VKUsyZb-x!p*cFS;X2JgBIl0w7e!7j~`X zwOhWYvaEe#j4+zQ{l&kEPA1maw87s-g7yyOlokJH`=Q1++xw}IOY}qj_Rg{Uu`)1^ zN6;0^TB7k6?Yc-H$&tM-c?hQ-1Vs3l!7|cWd7_$NVfps&S)~3fsMex+8$*wgBn67{ zs8@&zR^?LCDfiMs^YpeLX}Ea#gtbAf`;^(|NFM!J_^ZEv7H}^_6GLazo2V1+Q&rwO zVWCm~n}x;~`OiJXcT^PjIXZ)dzhs?E+!0ynvwpshRrNwy1+)Hrk>&Rh!uRdq8*5=6 zlX$=JNhw>FwP;xSX7G{BZ?mSC0^ddnvG64_QjlaE;9J9UzvJTpKC)&PrHM-PYZ8&* zNFRy#wu)~JyQDNC7P2CL5$%Hdh`(XGl)!>rv=J|o;0XQ!{Hyjk7-8915WPIsH7r=+ z749)(!h4OfW8rR;WVA)dXgfMCqUEOHw#4cbiTy&p{oBYlO6PGv znS0!Fr$NMS%`Es11i-7$9@{(1?ijB%x=Js~k~dUahvC}qmQgr+o-y>lWGWN#(}XW$ zNXiM*Mnw&p3XHZfr~=e(tnJWKlRP}I)5RSLom{iYrAzybe{_xO%(@-F_K9u0_Wgaz zH$UaOBjsC=^4*#8)u()4O!@9g`M#9$-JSA%IptfJ^8JJM$->)ctAVT7mDSLH(5kDp zm4ym{0$bapsP~~n4;ZnYl3fq$VNnSeb|HLpLF3L!e1x=>k7xg6yvo6p`si%735*V~ zFYGl4CJP{e$0UdrL}!%!o+veZuHAcuHTfoUvNcXNd&XG>vT0r*8|E(!d}X8(*?3s^ zp{42lqfyICyC3%~ptem0y1bLdk4_DI?5s~32IMnofH|&$cQj~YBsK&l{w7+NmYJ7Y9>Jf-x>oRa?MLA6gNyvL%1g)JnZ=xezcW8M_|wy?>8UW~x#0S; z*lF;0Ley#+V;Z6Vw?v?HiEUQXEJHKWbd%HiDVqKqt(6`7M`p*gEri+ZFg|#{8qPKF z3WdJOsxJ!$#;cI-LJ+J_%KMwDOPdM=LiWpeG9GN zjo|gyWbC4Yp5{R-OgZSkCbq$MNTFs#4lLN_{@LiQKw z9ECAJ4_Y}l0l0&&bod=JV<&qOb!xaBGk&y-Lj2|$VKDXrm-!vVZ>YL5HawPw3&_T% zjS~b?;0~WOUp894$e_a#|2FtX5a?uZbdfFznRe6Qn_x{WGbdVE(wA~eUV$|!wqwYg z6njtbd#O%uzJt;IkJE}va=WaX1OxCV4Ncipt^Wp)w#Ok>?$LTj+MxF#Gcilh&`iakM&v@VFm<;!gTE*J1d3Q-|6why=mb}Gi*&1W5S67jFlt(oum6Z*`ASN*she)%wBcLM&2Q{ zC8`XxCdPJ*(XHXPK0?nllhD|dEwda?dvz>?6e-sDUYCM<-4FS!;eOl|t^NpbmHo|M z2d@LIx&R+8u-#09HX5p*;mk0cC(#fh^4BA9J$#o8pRVYPkAe<<_}Ale;!O_jbPreX z9=x2qmrWW?w-VE2_6lY5IuY^7?aML-(PN;JLDYql8bn*q9Ymd9rMNjtI;6IsG7pff z&});`qPN41b$49>DZZE@M!Lwpr7+xWN7TN6Gi7gTy+)Q8;hyE{tjQ4=d+wsGB4*x5 zC72p-33W)xy0%ziETr2-gwb|mfM{KcT;^A3w0(vc!zmC%`!GL26XLzyJjk1juX=2M znd`K}k`WsxsPP~tjrfQFyWKSeh2>Zq+C_x591~)X^{CpLm&=lbV+g~CiZ#8Z^_NU< zd@n^9aK=DZ48zteF+zUf>7X=$bzRcqdcRgr3vj`K$3WGD(ee;{TWU@tkM)8F!x1kM}&o&qe1MethQ{el9-G z@Z&$v@H6o|!%xn6hM&vMGyDY3GyGg}p5Z5Wp5f=J^9(%ixgeE8|} z3_tnj8Gb%{p5dq9Jj2g5=NW#A&NKXc?mWX!@p*=y>(4X%l$>Yyx#2v+Pvktqk7(kw zzUBPTZB_^CM0@Kbf3;b;1JhM(&53_ml@GyKRNj~?&mhkkYTd4``k=NW!#&olhY zJJ0a*h4TzQ^UpK)RG z0eX8+?!)l2M_wp9l;*zfH#~O9O!H;)x$fVNv%Sx;RVfF6*&+)p&BV9^n~AAvdrWil zOfp*?-%<8(SU;-Eh5$0i)83psR5ge_0M>5S#d2keQED1irr1klDtIT##Xl3}lA#v{ z#%X{gquxu@Rj{4dN0B)P-pC$u9VZ`l78td#?KxGq%>H{9ecJ`Lj1IZCF8#4`iWHpb z^4NLI>&xqQ2;so%*)N;dxq4N3$r9LzKT1KR6@cv5yS(9U^Et|BGCHn$mD}bwDw|Jk z@^a2WZaFm?yFw&mh`aL?PhQfniqpXEGfJ=T&XwCUh9|J&pXs@=tkS``E0ky+a{!St3W^pGE^X_1MgFl z-4fD)Ap$+6SoGqMNCIB%$RR~Se(m_Q!!EW&=4dCRouGE|wUeuzBJC7tr$jr&+9}sg zL_3)BNSRgInWLQ=?abHCJmr+Bdta^T!Pu!RyCqjQ;9Wl1E%`bicD;5>feyT-0!2C? z__bS#b>KA>DA9qVDj-h@fwh-Zpj-!DP=P8P__YdD>p-sx)abx3RbY+|>{5YwI`FIt z%-4Y~6{y#NEh=!g4s2F|MLMui1s3bTlPb`l15Xez*2z1K))xZ(|3h5e|1y}@s&235 z23_sz&;+nn5kN;s2*A<-?tzVU{V_K5clKIE5FMfSDcI71>QI%vR*^602_FC09 z9UC+)w*U87cRJVC601+kX<1c zOyyWJg8fB8AHr8wxMym9&T(0zH7wCw$ygSE_rqJg)-}eaD==-G#^Z*8ST}Dx1~C;g zzvfPqd3bRao~O1Sdd*YUGb5s!X`aLXw3hD@j(G1R@EP z&&gl!xXJb;+t=X4C)*!!!Wutkpe*QoN@6wN30FC8vKNxQ;+Ob-`^vLPLlKCgkNf2t z^s$6fwVFOIGd5*r4+;+Gf3rf-$c*4k=4Bs5BR_{apsK(DdBZG8Asiw^~hzR#=Z@$fX6|J{rJ zMFROM;Ok$YL9om8*qR>fzYemegpn9pbz#O?t(tpwt5ka?{0-Uz&JM(R$58rXM$qJ@ z(CPcsP!ytl=%*Oo#Ho2Ih28nNfq*FSHjQ{+8Sz#i zRZ}jqM*m~t)oI6NrM&lPuV$fMt2PKHpg|ljiJdl#j@R*84lnq)Fwt8*cBxQ=*SbI0 ze@PB8D?N5y(5lptvIt-*>3u>fYp@Yu-q#rUGk1L?nok!}meF=Ug;FmZKyj&a zDxLY)RqE7Ls_MEx*CjK8aKv-!`Yi_7e?eTTAWmmDtmz`BEo2A<6}I`SOe?cEoalSgvgy zK6g2J_y)C{oB$^TA?nmljq;e5mb}x6F5~9YBQDdsQn{;(D$Ep#&=D(!MiRo2FoGSJF_g_+< z+*6rq;u-aQUl{Y>9HkV>OE{}8U_uy3R;Te<__A*~jnU({~ z++fOSR9Rr)7VBamlca2v>c4K9{@1jxwkSm}6-5vWG(LjKiV-;5#-(I6{j?=fqO6hAcDAEwN&EK{;hZ11?j-QnZL!(S(^|580u@*K^lQ()D| z5Y0$UIkN1T}16hHVW^Wa}IUcU8#H5aDWoMd>4pO^lZ z)OXE?*4Kwj@t3tvu~@V=f>~h+UD>-#^+Y!0gFLUFJMCXe`K;-SiO^zU{}+i-tDgQk z`Bv%vqyWcVYZ*ww1xWNhPW1*>O|Vw8l1=B&tOwA(-|prv?AFT!?B!}&cbTV+O~u@i z_BFZ1z$@3h;+RW<5z}>xdAmDN>WOBn@>l(0U|gcqtNlNfmE6q--j2QDQmY6Sft>yU z0=sBACpi}*g!rgYF__qU{?&36Z~oMx@0f>HO)O)*#>MOq`Rg1-MQ+0s>)Sn$F6^wueTzIxqboYTh7NtwNlFzzxo`BK7o zkB8E|=Bf{9;xlPY{E2Sjo3U5Zo5)6q?Ji@XRRCm*)mrH`unFWj4w!j>*|vX`VMVk) z;Z_YN$-U`)@GZn_rw=A@SB}~uM3RYi}%vnM+3gYRM zxT}h#saYB{e$ca2mX;-@iY9oXho{R>YH3&xq@8d>}ATVP&Uxqw2pap^3kw|Mut}l)f>(**b19+JRE_P%(ws4=#p@ISY?P zvJoJc{@-zpT5J^ZNSPr(uKpN^+j5cQM724YM*Z|blc*rn z=ZLAC(lw`~^u|N-T;KOd7VDC|DtQo`*3)AdC>3~Zk%j9DEhg2tr>kavT8c`MEi3a8 zvPH!#>cbqfCZ#l(&Pr+(Pnvq{NHEs@Ct-3~+~=*d20Y6EN#rlTTv74X7?m177^ZBa zr3c9SYyW^Q4qea;T$QB%NkPt#LH3f>JUFhqN)GZ{4Z*e(t1hXiGQ)EDV+$7}i6R(vkY~)M1gyQ@6#nFo6POOY4_!*>ut`uFXu(BwfR4|F9!&ys60$5 zf5RJdB(os&Q(wRnEAp-;|C?6OP9jFZjnN*(=E@D?k zzA{s-qXdu?LxQ%1A^q|*iXl}{Y;f}+lg-mVL4RqlH;yF|?VVW`oY7u?kq)d?feUrO zQ~|FJw5z~)9e79u#_7O=Dv+%MZ7Sf=fmRjB(t(%?jMae_6}UhL)~JA62bxtNQwLV7 zz!)7^r2;M;Sg8UTI?zPGbUz&H8oc@QgZO#kmhlY&19Hhc2-?#D>4v|0LXqUdFwa1Qt24jSe@gndDiXfwW6`pz;#qA+eiKUmf;-m9$&2_X~u**PJ;M zYmTD$`!}fSBl-IWGWTa?AeIGZm<6!+C7%$Oq)R=vyGq%uh`|su=olG*W&MSk$$QN{ z>@Yq7WN^a^teXP^H(L|ZlsJl?yQJyJYlGJPNu}TT>|=Vqsgn6d!IRu;Q#_s0o}B@@ zyktO}sm2FPe0GeyL(=aHRl0mFExS+ISF$9kj*+P1yd zuk9EwLxFpiy|ILQ$#vw5*!O4J9hZDvM#ZK;xP5+@6~X*)qCF5co|+&2(?WB8csSPc zek_r>{N>o|ndZspWwNExF+oaF9hOW#v+<7**V_3ZZ~KNz0rYrMw_nYq68-^h7 zIcwuL1eCUf?Y+S~vUY<8haAysle3AsPtFi{+BX7&y}8Ib+7fX z!r82ZsS4JuQeefl$rpIYwRD30=w<@u@HXL_);Nl}NLPG=I66XjW_!mC;^+wBn?#7C zBZPMnA&!m^{z-&5Izo6T5#s0w;iE)|qa%cu5+RO`5PnL8I66XjDiPx72;r+lh@&Hf zw-OY5uWTJ-X zSO!V%z@1o*33DxF1QcVDC4R%M(keo8J7s&e&_~wBb~Tj>hZoLmyLZ_gV-!CZvyP52 z&O8m5AES6b1_PU~p{y!+TrQljntz|>-ohNMnxHV;mA7inJwm=(zuX6Lkl4{IX(o=e zDq95G+4xd|X&V1lynAPgcYgriruG7n2!wan1l6z?^}**vRlqo&5AF)UoNsE;(*%91 ze5It8eM>U*FUOuu)CdIT^nVj;5XselH884zSh6K13r-`(!+(O&!E2)4wnXE{D7476 zmy3{a?V=fEuO1L<#8%;)0KSu+@Ts2Y z{D7VqJJJ(lM|xsxvM07lPs{|uTo6#rzw`ue0!Q4R(tROqHhaT+cqoKcrS-=8_4J?D zGN7vm+--^IRL7)-EakS_c-XK(7wetH3WM(5cL1RCt&E=u?4bbwI2}9V031j1-vpYvZp$4%(TscIFdG-=zQ{ancWBeU>;Wz zi{Ssj>+*}-BHP*WV7%9?bcp|y-+1_TWU^M98#uQMDQXh)Hn?%O5|0R+6G zs;F(Z8lP%pws&A(0gr1i>=t~5yU8H>Agg+9goiNN|9kTD!(YNjYy6H{V9E2qWPi6D zT=hICzw-BV24ciJEaldT6oHPVb)B$G?kr_xvrbYylL0O=J0?oBsh!w%cjNCzD(+Y- z>7?#sv`K;X@Eg)PUAG7`OAc7$w~FeB8~u2{+WS*R=)+Hw#;$d(**QoTtQnSc=JQMb z6C{Y~Qcnepp0~9tJb+t|Uj!bs>SW4@ttwzESH08$LPMGQ9dqjsZ0XkAg)pp5s+`_F-sy0UHT$|=8PoiV`#{_jotl?QgIv^ICndh(%kCcdq#_P@ zvk*xC*J0k)lTr)=!fQRLiXw|V8re5wGP@Rybqf50z+gP(znvmWVy_!K`~kfOY0B+V zk+G>Hi=zD}c1TO!P%Sx4OWsJfS@PYC&8Q&{CJ(Yfm>#58U$60)eiFO9Jv-yqKahk!k$#h~qOWqLw!MOWM)pcfN zi8Zs>dQ`P+Z{Hv2iEFHw8qT%?%Go&Uovd+I zQDV&~wv_Fcxu@?<2+L=EOXJKxJxO4(qek~p9~K7{#fb+6Vf{M+R4x8+WkT(?B1H;p ze@pk99&=W4&ze;CKH$rUe)-(4U7iN!aU(VfAZ13i+}ta?t2^#7D~o$n??~tK1><_v zD?%F*Rb^I6Ck&}h*kjg}3=~nxSI#PSJ7^v$)|^>#cFF2mYZ)TJ{&~Va;STYo0rd=F z+Ix17L6vbT6?^{x&lXxMeIVTD*!#1%QkT|!n^e3$zwSQ-;%QzqwTY}{Uze9khYI(j za_M47_)vqbE8tS<_3L3Se)*ZdULv{Gc^Owh-#368UuY~j?&0She(rl0B^XaUy~vf$ z>hUQqmp;N(&M)#d*1(%ErXO}TX%6*7X9phS#Bg8Zzl2XkKmCl*NJ^%$irUSS96LdG zQGVLo(jmEMNNIRq<7;U7TSM(WX(Bz_8d||O9AZz5F^7x}nM4_X1?DOCw-93}jryceZUU4L3J9S0qV%>qR0NF(zzF?D$2UL- zwhtfHIk@M zF3VhUY_4K#6@u<5Z(S@zB`}#|;hKQ~ zpMz!d23vP^-zjU0(*{)}^rKS3(P?~v@$jp1!KLh+t@M3fv5D~E|K(ae#@rL( zIkWu6KJFZE9ZNC7L5>P(Nsq)5o+S?eN>KWb<~cO~62o=$!#s93{3|$!dj2^(*3BDiLyeDzDj{JX+W_8W&MbG9J!^ zkq=z)(F}*GVXB`>$Rz{E57^ZVAVzNxqRSAX7`n`1S43tx1Q zg!(3^Z}!#^2rgs8r#SO~CNuERO)T$WzTG1|M1A96Nz~^vy-!t?hM#MEYwEOs9dR}N z+FI$w(m)FBfvotgL{1ThJ{HH3f*8IMl6^=VB@^{jhIA;XoqX-&YNtp$1==amPO)~% zwG+`!wRWnsGe*_q2b#7CB(Fl7p>wIRNFS8Dj z%AZ-6W7g$l)&BEw2 z9Uh`q&tFHb)!ucS9t!Vj+|07XO&37IfDrw7ir_8xH|+9^F;f88O+YeN2g}_ps+wn`rbT z!&oMC@o=McDN3W9#*5m!?egs5WOeZ;FHR)V>Z?iCcc-e)lU5(r6kb=i)yO$hw>>9R z#FH-Z?S56IH7(#8lxSv=n%Y_MA0?yx0;3!>6&Pz~)y99SzIY4wle8$&7_7AsSZm_S z*z#GQWiWYHjWDtJ#Xz@keG0xcZ#4@WMeH~CDL`Q~n>d4@7>zzsinO3a%oQZG8hvdi z8iUkb3_J7)V!%snJfOjoz5F#`*Q#_Q>G-Xgo@-}#udVQGI}VDocNuMuN*Q-}t=l}D z1eoCt-{hXOXB!({38SS+;JC?c-r})W701-UTYp{r9l+&?Na22the*Fg*$R|5IQ(^R z>72y+A~6P-&!J?V_vngVY{w*Gpm3WAj{SKQd1mtR^yEfsJ_+oYM6z>Dd6enL98+0E zSrL!%kKJn$u8ii4*b5oPH@kwn+L_s{iUMQWK~no{k#yw1i?=3jO;B(G!xzm{EJu9y zGxE*V!`oKgjOcBo_qt9wz(8t&S#^RuDlDi;)OguC72JuKCtXVqvb^-y)x>{B`{~#M z+Go`kklZ_9Y@=<7ftidkzjOkH*6|k5vi!udTyhmBmiZIQe2HbD#IhirGb_>PHFw7U zNg*<#Nw?cBv1LU=*4p?{pQbp~&&+z#&y4|dC`r)USRRRj$ve=yO-|?x{6=bx?>3Mx zPMkGg4f6grZAg;*;>%@-c`QqYn8>!4JYgyw$qU0qp59>;x0xs=%SEei5qp?265$Mf&2vJ$H(U?=d*_7iVmH7r#+HWDXBZ*@mVeu~mKsCU0Y9nAj>m1D9-L z^E0tkeg?9(vbszZN)Oul)OHhqj&|gE8%-{t~E(?{dBj zZsr{(zU+jc=pgi*(m`n~Mr}s?;}OonstuRq9BjpqD#Jbsu*~uZ*NTOJeEA~8^P_j{U-YKe>bUfT0 zJDg#(%;mdX?sjsAB)2uqpEf4tu&c^yLQ&MQs5t__{|ru49~-Tg2pE`bAh zhn%@TSBFB{apret?l0Dn&fFi-A!qKd(jiT~$@$%x`{(Iz&fH(GL-Vz>NIQ3HM~#i1 z$YLE*BZfAbF5y$IgKQsw9rJ$7kAh~Y*P0eGOMT|v*iL^>=?aylv?(J(8~62;s^-|S zIdIIH*&sd0B>C7y3KgIR?srvPe7#qN9c9uuM{hoI&p~Z`mCj)f4ZIX@8K0bwYR@F7 zf=i)=MhqpRAGa&~wk37KLfoc16u*@M%%V{IlT@XaKK7S~7C>C*@}t;W1xeyMGEoZj zS#!NsOvs7;^fR%sQwE>#(1{rs>&N~bj|e)Ye!j>{U-4!Sn#=JFNh@)cHPet6JmyOL_AR^}RQ z^3abGCmm`~7zfPo@g@JndvDINi`mpoDs#IP!F0=OEpc1ZJ$WZ5?XqS!p(CVs8kZo9 z1ozX>W5~{zpL*UFpknc^~X@mP2i8XFIt=zoRECtQlCeizTj%Odew)=Xzu!d8c z>?PDDYLf#<<|L|it#HF1+!LzM@r#L>+p1~WECuHEQg%>E5Vp#yt%i4$Wm=m}u0(@O zNk#D|6iqP4HBMs=6ITQ{P~#5I%8wS}ca;K)D0^wS(XxU0d*CXC2BYO+34F{6v`D}s zJqBDdf6|96Vsj~wxa6D_pOVeIiQtzuKb=Wleb|U0{RuVgleCICok2fmrvJW94~csu z&yP}hQulM5nf`v#3qoS2ll*WI!~h|DG(Sw^s8_2R6*HV0DC9(LPT{e_M0U5HO)b$E zc;JLtaKeY76Vn@FP-`aWp9Lqpbk^+JG(NV7G{U~t(`WIQJSp~dljLPrGDqm*cuF`7`!`g()Rr-1!YIl~Z?hc9-e)r#~>(AzQZ(|WHL+YdX9WT$N z@jH9XdZ0U(;W3o06(v@)pex1l?n!5PMGnimi$;#Hyr)zK^=nm@2;(cFzNwYPMq9B| zEbC}J)v2NdHENtMS=av=zNZ-Ohx5O0O20WQa7Bs*-uvgXz;8(bqjJGVCDEB&P*lxs zYrSOua~NTOf?u7<2uq?x!U)%BfKt4$Ih_|SP3MIR|2$qe*$v&HT2hji zIz5mse?2KJTgia%JuT{>DYwc&hXUirNTLV+5GO{YyB`=XSt6lZKhYgTRAfgALj;y# z*3Xn=Hr8xaGA;{RA(foy9ehN`5Mo_Q$?MJT=2uqp*yjJBIOB<-tnRn7c-)lYj32)z z^^~b%Use|Q#5ps;lgg=or>bq6&JTxhq3q$HBK3-{+83ioXmIE{7R* zG#0Z{q{?RJ=q{;8N;-!BP5e>{yGe`RR+}-BOUi$TuRK0_7pWGb|5=UE1R<%NLlyU8 zP%X7B-bd^Dsd11Tysmn05AGjurA*4ZcOULsxWlAjcj_**(h5TAy-Qjo?Ph;#v6TBf z{y6c}s`Byl=w0ZcR9U=kx|sS_W3)hw)ba*jQD)x@1cI%*`pEq%@w9ZY)RKad_}7T% zLDhSY@V`^nu$T_K53@=3)_`jn7<(JIS3ePIh9dZ+n!Aj~FQZv+gWRufOnzD{m{qx6 za14T}JsTD;jlim-X?TeY&p#+kMz*5QCm=Sr@VB+?Iihx9Q2R z(yL!O&8pswwypf4K?P&YLZdi?;_iPJE&YAm=Z3DHy}^N_D$UX4*OPpG5j+kIk>7)Q zZlUPtZisasjqMCV)gJcC14diB>}1Gxj2OE>>(00_+P1Sk?*C7I7<&Hrn#6D-rH^`_ zX;t(?jUI;?`Lq_@JZ${%_#_61$N2Hf=HUZxDt>W%8z^LV{9vSeAd7u~+~|$w8=EFp7(YCe)&1M7_UD^lUu|p}&VH|T|BAx{V;Gck<*1x_ojKiYUPeUM zhrz@2|Gr|cXxz%jF;(BHrfP)piFtkI3^xxxn=?2mG5E*fgjwN5KwWUhj`eBsL)}>d zM1m6#!hbQZS>i723h%XMd(4BEukCfAH`CK2Cv4=C3Tm~L8(Hyxk<8SoG ze>^-aGK?cy=g1$;cZv&&hXmJPx3scS>e-we}MkrZ1`{di{J|B+bLva22luh&V{Q_ZDfI%><+U#6Hy0M{6SFSq0tlFC#&18O+69M3S3YH~-#plz z5Sy7asr9MeChQN=8WdGEaGG!Mny=v{%cAcxepQ(1MkaX+s zSJZNrj&J1{KpiaHKOo0#lrEugci{>4%yt`{U2Qv!)`@P>fKtxV%SOr|`+qk!9g?j5 zKchHaz#~_`SQr?aj%{NFtyKGJo(Z4aOwcuHm(e0`6o=;qjMmwB*taP&et0ZP4w7WG zKim8ogXP`qms`75{ED~iI5<+cUxC_xAK97Ju<$vnWL5n7@X4R6@}DzWK0U@M|4KZ@ zrpt8sgWX57+K)89LHQ@McecK$%74cxJ*}nrVuq$#`l*qYI@mJW)qBVaV}Ue`DW%6* z7<-M%KfD}Kb8F1AE0@B25X@l%cLwG+q{=Dz0C>bASC6i6`i z0j1wS=@tUruDqe}3r5S;1Q8*8cF|<9y~-PeJqLJ*vPIt7q&FgV(M9G9Dmp09=)NVo zT1Dfj${S=+6Ea#}=L2~|+zeU;Go=OsM(oE#ubrT+FZ^b2$RWf1M!Vd+#IfkY{r%sN zGJ(PAYyem2-A4D0kW+epiv~l{(@*hybbq4&LENNpO;fjm7=^<3-9m9`^!C3uo>a#rk-Qm|6<4vdp>#5dA} z=Zw}0N(0&{z!pBH6<`k*5!W3bTY=FQgq#z-6}uFG&SyVqDAQAFqIf^kXR?x=z?@IF6mSNfw&(3?>jGNi;crm% zz`c4X4RRckMkWgPCyD0(eQC7(L@a9&w8Dps)_=io9x^svUMeV5DCRWa2#WW@IJ;>& z7}Z1Qw?ZU(M$8xdkc*{G+iOIFCDfOP@d0K2)M;Lg>9#!*GtHBS4GS9^k@L4uv2NnaZFvp-2!XW4xxRYY&&Jlj&d{W3tlHNX}WidRE87OxylPuz#9An-eb1G>8mX;~1a%9>VufsW$6mRSX5~H}LBS+L@Br$k3YwiS z1%kUdd4q+CtwIjrz2dkg4KMi&a!DR7Gk&-)%iP=jdX{+zNdb_ukCj!?@xA5&DN8MT z2Rwza5Xc5u8KWSigl+{11R#SXXte&8?J4Pav*+Xy_Bb(JzIljC4agClLwrfzF0?%@ zztE{dMPVV%EO?3mLbd7cdLE z`hQOGLa7q$SMM7$nF6)q%qsE@HV)NtUkw8_B$C5J%$;dq-ri-ELYcH6G=*UU6WD1y zbR+ph&}Yy&hz3)UT3QyVt%+|wj(jd6DYLjd3LKHva#TiqbXQ@|wH#X^RB$boWe;Wd zUJG1>`?I^D_Wsw{emqORF7mZrzj;iK-3>+SN1lbpxcB-DcNlFd_neo@dA;)M$KV+w zo=iNM;&J0~i{}D77l>ypp0VP|!jl#2@q|w<`C0hoB}V_Z=#Rn^;g^k=sLMoZi49F& zww&H`+wMZU! zEx1#bfYCGTSyDT&iT9i`J=Qf-ZuN7Bbckd5URNJRU=xPIGu+k;&!q09EDZ-Pw<`RZ zwK<&tKZm>jBVl?Wy9gqM(m%V$?$VxHgeM;xua*j&?qD*dgcn*SritO z6MimwH7;9koY2$(NS5u#(M>gshJwq`io z%uny>GYR=DE%nx2wA`AJ!}Xd_s+ϝA=8v08UV-X6wyqh}zSAG8Fgm)u&|l{v#7 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 literal 74260 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

!jhSfo3U@XBqnfy&L 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 diff --git a/android/lib/x86_64/librnupdate.so b/android/lib/x86_64/librnupdate.so index 3bfc8a66ec95a2e0fb322cd371c510288106fd67..92d65850cb1fee448843b950881fa4f78d7e7d69 100755 GIT binary patch literal 156944 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 delta 35306 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 NDLGoE5aj}*|35XjebfK| diff --git a/package.json b/package.json index 732045e..47cd26c 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "lib/index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "build-lib": "$ANDROID_HOME/ndk-bundle/ndk-build NDK_PROJECT_PATH=android APP_BUILD_SCRIPT=android/jni/Android.mk NDK_LIBS_OUT=android/lib" + "build-lib": "git submodule update --init --recursive && $ANDROID_HOME/ndk/20.1.5948944/ndk-build NDK_PROJECT_PATH=android APP_BUILD_SCRIPT=android/jni/Android.mk NDK_LIBS_OUT=android/lib" }, "repository": { "type": "git", From d9e307659f4faccd7629c31a4fb02716aa668674 Mon Sep 17 00:00:00 2001 From: sunnylqm Date: Thu, 8 Apr 2021 23:46:14 +0800 Subject: [PATCH 13/27] export cInfo --- .gitignore | 1 + lib/index.js | 42 +++++++++++++++++++++++++----------------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index 53e7a79..a9a2055 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,4 @@ npm-debug.log Example/**/update.json yarn-error.log +Example/testHotUpdate/.pushy diff --git a/lib/index.js b/lib/index.js index 26d341f..ac1f606 100644 --- a/lib/index.js +++ b/lib/index.js @@ -67,6 +67,13 @@ There is available update: } */ +export const cInfo = { + pushy: require('../package.json').version, + rn: RNVersion, + os: Platform.OS + ' ' + Platform.Version, + uuid, +}; + function assertRelease() { if (__DEV__) { throw new Error('react-native-update can only run on RELEASE version.'); @@ -98,12 +105,7 @@ export async function checkUpdate(APPKEY, isRetry) { packageVersion, hash: currentVersion, buildTime, - cInfo: { - pushy: require('../package.json').version, - rn: RNVersion, - os: Platform.OS + ' ' + Platform.Version, - uuid, - }, + cInfo, }), }); } catch (e) { @@ -147,11 +149,14 @@ export async function downloadUpdate(options, eventListeners) { if (eventListeners) { if (eventListeners.onDownloadProgress) { const downloadCallback = eventListeners.onDownloadProgress; - progressHandler = eventEmitter.addListener('RCTPushyDownloadProgress', (progressData) => { - if (progressData.hash === options.hash) { - downloadCallback(progressData); - } - }); + progressHandler = eventEmitter.addListener( + 'RCTPushyDownloadProgress', + (progressData) => { + if (progressData.hash === options.hash) { + downloadCallback(progressData); + } + }, + ); } } if (options.diffUrl) { @@ -167,7 +172,7 @@ export async function downloadUpdate(options, eventListeners) { updateUrl: options.pdiffUrl, hash: options.hash, }); - }else if (options.hdiffUrl) { + } else if (options.hdiffUrl) { logger('downloading hdiff'); await Pushy.downloadHPatchFromPpk({ updateUrl: options.hdiffUrl, @@ -208,11 +213,14 @@ export async function downloadAndInstallApk({ url, onDownloadProgress }) { let hash = Date.now().toString(); let progressHandler; if (onDownloadProgress) { - progressHandler = eventEmitter.addListener('RCTPushyDownloadProgress', (progressData) => { - if (progressData.hash === hash) { - onDownloadProgress(progressData); - } - }); + progressHandler = eventEmitter.addListener( + 'RCTPushyDownloadProgress', + (progressData) => { + if (progressData.hash === hash) { + onDownloadProgress(progressData); + } + }, + ); } await Pushy.downloadAndInstallApk({ url, From 736b82aac605a81e0ede7665bc97caeb83312b02 Mon Sep 17 00:00:00 2001 From: sunnylqm Date: Thu, 8 Apr 2021 23:46:29 +0800 Subject: [PATCH 14/27] Refactor demo --- Example/testHotUpdate/src/index.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Example/testHotUpdate/src/index.js b/Example/testHotUpdate/src/index.js index f79743f..f48d091 100644 --- a/Example/testHotUpdate/src/index.js +++ b/Example/testHotUpdate/src/index.js @@ -8,6 +8,7 @@ import { TouchableOpacity, Linking, Image, + NativeModules, } from 'react-native'; import { @@ -21,11 +22,11 @@ import { switchVersionLater, markSuccess, downloadAndInstallApk, + cInfo, } from 'react-native-update'; import _updateConfig from '../update.json'; const {appKey} = _updateConfig[Platform.OS]; - export default class App extends Component { state = { received: 0, @@ -140,7 +141,7 @@ export default class App extends Component { }; render() { - const { received, total } = this.state; + const {received, total} = this.state; return ( 欢迎使用热更新服务 @@ -162,6 +163,16 @@ export default class App extends Component { 点击这里检查更新 + + { + // TODO 调试pushy方法 + }}> + + react-native-update版本:{cInfo.pushy} + + {/* */} ); From 422686597015110e51c588531ac67cdee0b5e954 Mon Sep 17 00:00:00 2001 From: sunnylqm Date: Fri, 9 Apr 2021 18:23:29 +0800 Subject: [PATCH 15/27] Upgrade example to 0.64 --- Example/testHotUpdate/.gitattributes | 4 +- Example/testHotUpdate/.prettierrc.js | 1 + .../testHotUpdate/android/app/build.gradle | 4 +- .../android/app/src/debug/AndroidManifest.xml | 4 +- .../android/app/src/main/AndroidManifest.xml | 1 - .../app/src/main/res/values/styles.xml | 2 +- Example/testHotUpdate/android/build.gradle | 5 +- .../testHotUpdate/android/gradle.properties | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- Example/testHotUpdate/android/gradlew.bat | 190 +- Example/testHotUpdate/ios/Podfile | 15 +- Example/testHotUpdate/ios/Podfile.lock | 609 +-- .../testHotUpdate.xcodeproj/project.pbxproj | 21 + Example/testHotUpdate/metro.config.js | 2 +- Example/testHotUpdate/package.json | 20 +- Example/testHotUpdate/yarn.lock | 4221 ++++++++--------- 16 files changed, 2486 insertions(+), 2617 deletions(-) diff --git a/Example/testHotUpdate/.gitattributes b/Example/testHotUpdate/.gitattributes index d42ff18..59b845b 100644 --- a/Example/testHotUpdate/.gitattributes +++ b/Example/testHotUpdate/.gitattributes @@ -1 +1,3 @@ -*.pbxproj -text +# Windows files should use crlf line endings +# https://help.github.com/articles/dealing-with-line-endings/ +*.bat text eol=crlf \ No newline at end of file diff --git a/Example/testHotUpdate/.prettierrc.js b/Example/testHotUpdate/.prettierrc.js index 5c4de1a..84196d9 100644 --- a/Example/testHotUpdate/.prettierrc.js +++ b/Example/testHotUpdate/.prettierrc.js @@ -3,4 +3,5 @@ module.exports = { jsxBracketSameLine: true, singleQuote: true, trailingComma: 'all', + arrowParens: 'avoid', }; diff --git a/Example/testHotUpdate/android/app/build.gradle b/Example/testHotUpdate/android/app/build.gradle index 7710d68..b4edb1c 100644 --- a/Example/testHotUpdate/android/app/build.gradle +++ b/Example/testHotUpdate/android/app/build.gradle @@ -121,6 +121,7 @@ def jscFlavor = 'org.webkit:android-jsc:+' def enableHermes = project.ext.react.get("enableHermes", false); android { + ndkVersion rootProject.ext.ndkVersion compileSdkVersion rootProject.ext.compileSdkVersion compileOptions { @@ -170,11 +171,12 @@ android { variant.outputs.each { output -> // For each separate APK per architecture, set a unique version code as described here: // https://developer.android.com/studio/build/configure-apk-splits.html + // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc. def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] def abi = output.getFilter(OutputFile.ABI) if (abi != null) { // null for the universal-debug, universal-release variants output.versionCodeOverride = - versionCodes.get(abi) * 1048576 + defaultConfig.versionCode + defaultConfig.versionCode * 1000 + versionCodes.get(abi) } } diff --git a/Example/testHotUpdate/android/app/src/debug/AndroidManifest.xml b/Example/testHotUpdate/android/app/src/debug/AndroidManifest.xml index fa26aa5..51ee62c 100644 --- a/Example/testHotUpdate/android/app/src/debug/AndroidManifest.xml +++ b/Example/testHotUpdate/android/app/src/debug/AndroidManifest.xml @@ -4,5 +4,7 @@ - + + + diff --git a/Example/testHotUpdate/android/app/src/main/AndroidManifest.xml b/Example/testHotUpdate/android/app/src/main/AndroidManifest.xml index 8e8d48b..4340d27 100644 --- a/Example/testHotUpdate/android/app/src/main/AndroidManifest.xml +++ b/Example/testHotUpdate/android/app/src/main/AndroidManifest.xml @@ -22,7 +22,6 @@ - diff --git a/Example/testHotUpdate/android/app/src/main/res/values/styles.xml b/Example/testHotUpdate/android/app/src/main/res/values/styles.xml index 62fe59f..9fab0be 100644 --- a/Example/testHotUpdate/android/app/src/main/res/values/styles.xml +++ b/Example/testHotUpdate/android/app/src/main/res/values/styles.xml @@ -1,7 +1,7 @@ - diff --git a/Example/testHotUpdate/android/build.gradle b/Example/testHotUpdate/android/build.gradle index 6724fa3..238d796 100644 --- a/Example/testHotUpdate/android/build.gradle +++ b/Example/testHotUpdate/android/build.gradle @@ -2,17 +2,18 @@ buildscript { ext { - buildToolsVersion = "29.0.2" + buildToolsVersion = "29.0.3" minSdkVersion = 21 compileSdkVersion = 29 targetSdkVersion = 29 + ndkVersion = "20.1.5948944" } repositories { google() jcenter() } dependencies { - classpath('com.android.tools.build:gradle:3.5.3') + classpath('com.android.tools.build:gradle:4.1.0') // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/Example/testHotUpdate/android/gradle.properties b/Example/testHotUpdate/android/gradle.properties index 2ea8f45..7f4acb7 100644 --- a/Example/testHotUpdate/android/gradle.properties +++ b/Example/testHotUpdate/android/gradle.properties @@ -25,4 +25,4 @@ android.useAndroidX=true android.enableJetifier=true # Version of flipper SDK to use with React Native -FLIPPER_VERSION=0.54.0 \ No newline at end of file +FLIPPER_VERSION=0.84.0 \ No newline at end of file diff --git a/Example/testHotUpdate/android/gradle/wrapper/gradle-wrapper.properties b/Example/testHotUpdate/android/gradle/wrapper/gradle-wrapper.properties index bca17f3..14e30f7 100644 --- a/Example/testHotUpdate/android/gradle/wrapper/gradle-wrapper.properties +++ b/Example/testHotUpdate/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/Example/testHotUpdate/android/gradlew.bat b/Example/testHotUpdate/android/gradlew.bat index 8d8accd..477c896 100644 --- a/Example/testHotUpdate/android/gradlew.bat +++ b/Example/testHotUpdate/android/gradlew.bat @@ -1,103 +1,89 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + :omega \ No newline at end of file diff --git a/Example/testHotUpdate/ios/Podfile b/Example/testHotUpdate/ios/Podfile index 0eb8bc7..d3c28aa 100644 --- a/Example/testHotUpdate/ios/Podfile +++ b/Example/testHotUpdate/ios/Podfile @@ -6,15 +6,20 @@ platform :ios, '10.0' target 'testHotUpdate' do config = use_native_modules! - use_react_native!(:path => config["reactNativePath"]) + use_react_native!( + :path => config[:reactNativePath], + # to enable hermes on iOS, change `false` to `true` and then install pods + :hermes_enabled => false + ) - # Enables Flipper. + # Enables Flipper. # # Note that if you have use_frameworks! enabled, Flipper will not work and - # you should disable these next few lines. - use_flipper!('Flipper' => '0.54.0') + # you should disable the next line. + use_flipper!({'Flipper' => '0.84.0'}) + post_install do |installer| - flipper_post_install(installer) + react_native_post_install(installer) end end diff --git a/Example/testHotUpdate/ios/Podfile.lock b/Example/testHotUpdate/ios/Podfile.lock index 7fcc70f..94eebcf 100644 --- a/Example/testHotUpdate/ios/Podfile.lock +++ b/Example/testHotUpdate/ios/Podfile.lock @@ -1,314 +1,345 @@ PODS: - boost-for-react-native (1.63.0) - - CocoaAsyncSocket (7.6.4) - - CocoaLibEvent (1.0.0) + - CocoaAsyncSocket (7.6.5) - DoubleConversion (1.1.6) - - FBLazyVector (0.63.3) - - FBReactNativeSpec (0.63.3): - - Folly (= 2020.01.13.00) - - RCTRequired (= 0.63.3) - - RCTTypeSafety (= 0.63.3) - - React-Core (= 0.63.3) - - React-jsi (= 0.63.3) - - ReactCommon/turbomodule/core (= 0.63.3) - - Flipper (0.54.0): - - Flipper-Folly (~> 2.2) - - Flipper-RSocket (~> 1.1) + - FBLazyVector (0.64.0) + - FBReactNativeSpec (0.64.0): + - RCT-Folly (= 2020.01.13.00) + - RCTRequired (= 0.64.0) + - RCTTypeSafety (= 0.64.0) + - React-Core (= 0.64.0) + - React-jsi (= 0.64.0) + - ReactCommon/turbomodule/core (= 0.64.0) + - Flipper (0.84.0): + - Flipper-Folly (~> 2.5) + - Flipper-RSocket (~> 1.3) - Flipper-DoubleConversion (1.1.7) - - Flipper-Folly (2.2.0): + - Flipper-Folly (2.5.1): - boost-for-react-native - - CocoaLibEvent (~> 1.0) - Flipper-DoubleConversion - Flipper-Glog - - OpenSSL-Universal (= 1.0.2.19) + - libevent (~> 2.1.12) + - OpenSSL-Universal (= 1.1.180) - Flipper-Glog (0.3.6) - Flipper-PeerTalk (0.0.4) - - Flipper-RSocket (1.1.0): - - Flipper-Folly (~> 2.2) - - FlipperKit (0.54.0): - - FlipperKit/Core (= 0.54.0) - - FlipperKit/Core (0.54.0): - - Flipper (~> 0.54.0) + - Flipper-RSocket (1.3.1): + - Flipper-Folly (~> 2.5) + - FlipperKit (0.84.0): + - FlipperKit/Core (= 0.84.0) + - FlipperKit/Core (0.84.0): + - Flipper (~> 0.84.0) - FlipperKit/CppBridge - FlipperKit/FBCxxFollyDynamicConvert - FlipperKit/FBDefines - FlipperKit/FKPortForwarding - - FlipperKit/CppBridge (0.54.0): - - Flipper (~> 0.54.0) - - FlipperKit/FBCxxFollyDynamicConvert (0.54.0): - - Flipper-Folly (~> 2.2) - - FlipperKit/FBDefines (0.54.0) - - FlipperKit/FKPortForwarding (0.54.0): + - FlipperKit/CppBridge (0.84.0): + - Flipper (~> 0.84.0) + - FlipperKit/FBCxxFollyDynamicConvert (0.84.0): + - Flipper-Folly (~> 2.5) + - FlipperKit/FBDefines (0.84.0) + - FlipperKit/FKPortForwarding (0.84.0): - CocoaAsyncSocket (~> 7.6) - Flipper-PeerTalk (~> 0.0.4) - - FlipperKit/FlipperKitHighlightOverlay (0.54.0) - - FlipperKit/FlipperKitLayoutPlugin (0.54.0): + - FlipperKit/FlipperKitHighlightOverlay (0.84.0) + - FlipperKit/FlipperKitLayoutHelpers (0.84.0): - FlipperKit/Core - FlipperKit/FlipperKitHighlightOverlay - FlipperKit/FlipperKitLayoutTextSearchable + - FlipperKit/FlipperKitLayoutIOSDescriptors (0.84.0): + - FlipperKit/Core + - FlipperKit/FlipperKitHighlightOverlay + - FlipperKit/FlipperKitLayoutHelpers - YogaKit (~> 1.18) - - FlipperKit/FlipperKitLayoutTextSearchable (0.54.0) - - FlipperKit/FlipperKitNetworkPlugin (0.54.0): + - FlipperKit/FlipperKitLayoutPlugin (0.84.0): - FlipperKit/Core - - FlipperKit/FlipperKitReactPlugin (0.54.0): + - FlipperKit/FlipperKitHighlightOverlay + - FlipperKit/FlipperKitLayoutHelpers + - FlipperKit/FlipperKitLayoutIOSDescriptors + - FlipperKit/FlipperKitLayoutTextSearchable + - YogaKit (~> 1.18) + - FlipperKit/FlipperKitLayoutTextSearchable (0.84.0) + - FlipperKit/FlipperKitNetworkPlugin (0.84.0): - FlipperKit/Core - - FlipperKit/FlipperKitUserDefaultsPlugin (0.54.0): + - FlipperKit/FlipperKitReactPlugin (0.84.0): - FlipperKit/Core - - FlipperKit/SKIOSNetworkPlugin (0.54.0): + - FlipperKit/FlipperKitUserDefaultsPlugin (0.84.0): + - FlipperKit/Core + - FlipperKit/SKIOSNetworkPlugin (0.84.0): - FlipperKit/Core - FlipperKit/FlipperKitNetworkPlugin - - Folly (2020.01.13.00): - - boost-for-react-native - - DoubleConversion - - Folly/Default (= 2020.01.13.00) - - glog - - Folly/Default (2020.01.13.00): - - boost-for-react-native - - DoubleConversion - - glog - glog (0.3.5) - - OpenSSL-Universal (1.0.2.19): - - OpenSSL-Universal/Static (= 1.0.2.19) - - OpenSSL-Universal/Static (1.0.2.19) - - RCTRequired (0.63.3) - - RCTTypeSafety (0.63.3): - - FBLazyVector (= 0.63.3) - - Folly (= 2020.01.13.00) - - RCTRequired (= 0.63.3) - - React-Core (= 0.63.3) - - React (0.63.3): - - React-Core (= 0.63.3) - - React-Core/DevSupport (= 0.63.3) - - React-Core/RCTWebSocket (= 0.63.3) - - React-RCTActionSheet (= 0.63.3) - - React-RCTAnimation (= 0.63.3) - - React-RCTBlob (= 0.63.3) - - React-RCTImage (= 0.63.3) - - React-RCTLinking (= 0.63.3) - - React-RCTNetwork (= 0.63.3) - - React-RCTSettings (= 0.63.3) - - React-RCTText (= 0.63.3) - - React-RCTVibration (= 0.63.3) - - React-callinvoker (0.63.3) - - React-Core (0.63.3): - - Folly (= 2020.01.13.00) + - libevent (2.1.12) + - OpenSSL-Universal (1.1.180) + - RCT-Folly (2020.01.13.00): + - boost-for-react-native + - DoubleConversion - glog - - React-Core/Default (= 0.63.3) - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) + - RCT-Folly/Default (= 2020.01.13.00) + - RCT-Folly/Default (2020.01.13.00): + - boost-for-react-native + - DoubleConversion + - glog + - RCTRequired (0.64.0) + - RCTTypeSafety (0.64.0): + - FBLazyVector (= 0.64.0) + - RCT-Folly (= 2020.01.13.00) + - RCTRequired (= 0.64.0) + - React-Core (= 0.64.0) + - React (0.64.0): + - React-Core (= 0.64.0) + - React-Core/DevSupport (= 0.64.0) + - React-Core/RCTWebSocket (= 0.64.0) + - React-RCTActionSheet (= 0.64.0) + - React-RCTAnimation (= 0.64.0) + - React-RCTBlob (= 0.64.0) + - React-RCTImage (= 0.64.0) + - React-RCTLinking (= 0.64.0) + - React-RCTNetwork (= 0.64.0) + - React-RCTSettings (= 0.64.0) + - React-RCTText (= 0.64.0) + - React-RCTVibration (= 0.64.0) + - React-callinvoker (0.64.0) + - React-Core (0.64.0): + - glog + - RCT-Folly (= 2020.01.13.00) + - React-Core/Default (= 0.64.0) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/CoreModulesHeaders (0.63.3): - - Folly (= 2020.01.13.00) + - React-Core/CoreModulesHeaders (0.64.0): - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/Default (0.63.3): - - Folly (= 2020.01.13.00) + - React-Core/Default (0.64.0): - glog - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) + - RCT-Folly (= 2020.01.13.00) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/DevSupport (0.63.3): - - Folly (= 2020.01.13.00) + - React-Core/DevSupport (0.64.0): - glog - - React-Core/Default (= 0.63.3) - - React-Core/RCTWebSocket (= 0.63.3) - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) - - React-jsinspector (= 0.63.3) + - RCT-Folly (= 2020.01.13.00) + - React-Core/Default (= 0.64.0) + - React-Core/RCTWebSocket (= 0.64.0) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-jsinspector (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTActionSheetHeaders (0.63.3): - - Folly (= 2020.01.13.00) + - React-Core/RCTActionSheetHeaders (0.64.0): - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTAnimationHeaders (0.63.3): - - Folly (= 2020.01.13.00) + - React-Core/RCTAnimationHeaders (0.64.0): - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTBlobHeaders (0.63.3): - - Folly (= 2020.01.13.00) + - React-Core/RCTBlobHeaders (0.64.0): - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTImageHeaders (0.63.3): - - Folly (= 2020.01.13.00) + - React-Core/RCTImageHeaders (0.64.0): - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTLinkingHeaders (0.63.3): - - Folly (= 2020.01.13.00) + - React-Core/RCTLinkingHeaders (0.64.0): - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTNetworkHeaders (0.63.3): - - Folly (= 2020.01.13.00) + - React-Core/RCTNetworkHeaders (0.64.0): - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTSettingsHeaders (0.63.3): - - Folly (= 2020.01.13.00) + - React-Core/RCTSettingsHeaders (0.64.0): - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTTextHeaders (0.63.3): - - Folly (= 2020.01.13.00) + - React-Core/RCTTextHeaders (0.64.0): - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTVibrationHeaders (0.63.3): - - Folly (= 2020.01.13.00) + - React-Core/RCTVibrationHeaders (0.64.0): - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTWebSocket (0.63.3): - - Folly (= 2020.01.13.00) + - React-Core/RCTWebSocket (0.64.0): - glog - - React-Core/Default (= 0.63.3) - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) + - RCT-Folly (= 2020.01.13.00) + - React-Core/Default (= 0.64.0) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-CoreModules (0.63.3): - - FBReactNativeSpec (= 0.63.3) - - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.3) - - React-Core/CoreModulesHeaders (= 0.63.3) - - React-jsi (= 0.63.3) - - React-RCTImage (= 0.63.3) - - ReactCommon/turbomodule/core (= 0.63.3) - - React-cxxreact (0.63.3): + - React-CoreModules (0.64.0): + - FBReactNativeSpec (= 0.64.0) + - RCT-Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.64.0) + - React-Core/CoreModulesHeaders (= 0.64.0) + - React-jsi (= 0.64.0) + - React-RCTImage (= 0.64.0) + - ReactCommon/turbomodule/core (= 0.64.0) + - React-cxxreact (0.64.0): - boost-for-react-native (= 1.63.0) - DoubleConversion - - Folly (= 2020.01.13.00) - glog - - React-callinvoker (= 0.63.3) - - React-jsinspector (= 0.63.3) - - React-jsi (0.63.3): + - RCT-Folly (= 2020.01.13.00) + - React-callinvoker (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsinspector (= 0.64.0) + - React-perflogger (= 0.64.0) + - React-runtimeexecutor (= 0.64.0) + - React-jsi (0.64.0): - boost-for-react-native (= 1.63.0) - DoubleConversion - - Folly (= 2020.01.13.00) - glog - - React-jsi/Default (= 0.63.3) - - React-jsi/Default (0.63.3): + - RCT-Folly (= 2020.01.13.00) + - React-jsi/Default (= 0.64.0) + - React-jsi/Default (0.64.0): - boost-for-react-native (= 1.63.0) - DoubleConversion - - Folly (= 2020.01.13.00) - glog - - React-jsiexecutor (0.63.3): + - RCT-Folly (= 2020.01.13.00) + - React-jsiexecutor (0.64.0): - DoubleConversion - - Folly (= 2020.01.13.00) - glog - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsinspector (0.63.3) - - react-native-update (5.9.1): + - RCT-Folly (= 2020.01.13.00) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-perflogger (= 0.64.0) + - React-jsinspector (0.64.0) + - react-native-update (5.11.0-beta2): - React - - react-native-update/BSDiff (= 5.9.1) - - react-native-update/RCTPushy (= 5.9.1) + - react-native-update/BSDiff (= 5.11.0-beta2) + - react-native-update/RCTPushy (= 5.11.0-beta2) - SSZipArchive - - react-native-update/BSDiff (5.9.1): + - react-native-update/BSDiff (5.11.0-beta2): - React - SSZipArchive - - react-native-update/RCTPushy (5.9.1): + - react-native-update/RCTPushy (5.11.0-beta2): - React - SSZipArchive - react-native-webview (10.9.2): - React-Core - - React-RCTActionSheet (0.63.3): - - React-Core/RCTActionSheetHeaders (= 0.63.3) - - React-RCTAnimation (0.63.3): - - FBReactNativeSpec (= 0.63.3) - - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.3) - - React-Core/RCTAnimationHeaders (= 0.63.3) - - React-jsi (= 0.63.3) - - ReactCommon/turbomodule/core (= 0.63.3) - - React-RCTBlob (0.63.3): - - FBReactNativeSpec (= 0.63.3) - - Folly (= 2020.01.13.00) - - React-Core/RCTBlobHeaders (= 0.63.3) - - React-Core/RCTWebSocket (= 0.63.3) - - React-jsi (= 0.63.3) - - React-RCTNetwork (= 0.63.3) - - ReactCommon/turbomodule/core (= 0.63.3) - - React-RCTImage (0.63.3): - - FBReactNativeSpec (= 0.63.3) - - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.3) - - React-Core/RCTImageHeaders (= 0.63.3) - - React-jsi (= 0.63.3) - - React-RCTNetwork (= 0.63.3) - - ReactCommon/turbomodule/core (= 0.63.3) - - React-RCTLinking (0.63.3): - - FBReactNativeSpec (= 0.63.3) - - React-Core/RCTLinkingHeaders (= 0.63.3) - - React-jsi (= 0.63.3) - - ReactCommon/turbomodule/core (= 0.63.3) - - React-RCTNetwork (0.63.3): - - FBReactNativeSpec (= 0.63.3) - - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.3) - - React-Core/RCTNetworkHeaders (= 0.63.3) - - React-jsi (= 0.63.3) - - ReactCommon/turbomodule/core (= 0.63.3) - - React-RCTSettings (0.63.3): - - FBReactNativeSpec (= 0.63.3) - - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.3) - - React-Core/RCTSettingsHeaders (= 0.63.3) - - React-jsi (= 0.63.3) - - ReactCommon/turbomodule/core (= 0.63.3) - - React-RCTText (0.63.3): - - React-Core/RCTTextHeaders (= 0.63.3) - - React-RCTVibration (0.63.3): - - FBReactNativeSpec (= 0.63.3) - - Folly (= 2020.01.13.00) - - React-Core/RCTVibrationHeaders (= 0.63.3) - - React-jsi (= 0.63.3) - - ReactCommon/turbomodule/core (= 0.63.3) - - ReactCommon/turbomodule/core (0.63.3): + - React-perflogger (0.64.0) + - React-RCTActionSheet (0.64.0): + - React-Core/RCTActionSheetHeaders (= 0.64.0) + - React-RCTAnimation (0.64.0): + - FBReactNativeSpec (= 0.64.0) + - RCT-Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.64.0) + - React-Core/RCTAnimationHeaders (= 0.64.0) + - React-jsi (= 0.64.0) + - ReactCommon/turbomodule/core (= 0.64.0) + - React-RCTBlob (0.64.0): + - FBReactNativeSpec (= 0.64.0) + - RCT-Folly (= 2020.01.13.00) + - React-Core/RCTBlobHeaders (= 0.64.0) + - React-Core/RCTWebSocket (= 0.64.0) + - React-jsi (= 0.64.0) + - React-RCTNetwork (= 0.64.0) + - ReactCommon/turbomodule/core (= 0.64.0) + - React-RCTImage (0.64.0): + - FBReactNativeSpec (= 0.64.0) + - RCT-Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.64.0) + - React-Core/RCTImageHeaders (= 0.64.0) + - React-jsi (= 0.64.0) + - React-RCTNetwork (= 0.64.0) + - ReactCommon/turbomodule/core (= 0.64.0) + - React-RCTLinking (0.64.0): + - FBReactNativeSpec (= 0.64.0) + - React-Core/RCTLinkingHeaders (= 0.64.0) + - React-jsi (= 0.64.0) + - ReactCommon/turbomodule/core (= 0.64.0) + - React-RCTNetwork (0.64.0): + - FBReactNativeSpec (= 0.64.0) + - RCT-Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.64.0) + - React-Core/RCTNetworkHeaders (= 0.64.0) + - React-jsi (= 0.64.0) + - ReactCommon/turbomodule/core (= 0.64.0) + - React-RCTSettings (0.64.0): + - FBReactNativeSpec (= 0.64.0) + - RCT-Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.64.0) + - React-Core/RCTSettingsHeaders (= 0.64.0) + - React-jsi (= 0.64.0) + - ReactCommon/turbomodule/core (= 0.64.0) + - React-RCTText (0.64.0): + - React-Core/RCTTextHeaders (= 0.64.0) + - React-RCTVibration (0.64.0): + - FBReactNativeSpec (= 0.64.0) + - RCT-Folly (= 2020.01.13.00) + - React-Core/RCTVibrationHeaders (= 0.64.0) + - React-jsi (= 0.64.0) + - ReactCommon/turbomodule/core (= 0.64.0) + - React-runtimeexecutor (0.64.0): + - React-jsi (= 0.64.0) + - ReactCommon/turbomodule/core (0.64.0): - DoubleConversion - - Folly (= 2020.01.13.00) - glog - - React-callinvoker (= 0.63.3) - - React-Core (= 0.63.3) - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) + - RCT-Folly (= 2020.01.13.00) + - React-callinvoker (= 0.64.0) + - React-Core (= 0.64.0) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-perflogger (= 0.64.0) - SSZipArchive (2.2.3) - Yoga (1.14.0) - YogaKit (1.18.1): @@ -317,28 +348,28 @@ PODS: DEPENDENCIES: - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - - FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`) - - Flipper (= 0.54.0) + - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) + - Flipper (= 0.84.0) - Flipper-DoubleConversion (= 1.1.7) - - Flipper-Folly (~> 2.2) + - Flipper-Folly (~> 2.5) - Flipper-Glog (= 0.3.6) - Flipper-PeerTalk (~> 0.0.4) - - Flipper-RSocket (~> 1.1) - - FlipperKit (= 0.54.0) - - FlipperKit/Core (= 0.54.0) - - FlipperKit/CppBridge (= 0.54.0) - - FlipperKit/FBCxxFollyDynamicConvert (= 0.54.0) - - FlipperKit/FBDefines (= 0.54.0) - - FlipperKit/FKPortForwarding (= 0.54.0) - - FlipperKit/FlipperKitHighlightOverlay (= 0.54.0) - - FlipperKit/FlipperKitLayoutPlugin (= 0.54.0) - - FlipperKit/FlipperKitLayoutTextSearchable (= 0.54.0) - - FlipperKit/FlipperKitNetworkPlugin (= 0.54.0) - - FlipperKit/FlipperKitReactPlugin (= 0.54.0) - - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.54.0) - - FlipperKit/SKIOSNetworkPlugin (= 0.54.0) - - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) + - Flipper-RSocket (~> 1.3) + - FlipperKit (= 0.84.0) + - FlipperKit/Core (= 0.84.0) + - FlipperKit/CppBridge (= 0.84.0) + - FlipperKit/FBCxxFollyDynamicConvert (= 0.84.0) + - FlipperKit/FBDefines (= 0.84.0) + - FlipperKit/FKPortForwarding (= 0.84.0) + - FlipperKit/FlipperKitHighlightOverlay (= 0.84.0) + - FlipperKit/FlipperKitLayoutPlugin (= 0.84.0) + - FlipperKit/FlipperKitLayoutTextSearchable (= 0.84.0) + - FlipperKit/FlipperKitNetworkPlugin (= 0.84.0) + - FlipperKit/FlipperKitReactPlugin (= 0.84.0) + - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.84.0) + - FlipperKit/SKIOSNetworkPlugin (= 0.84.0) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) + - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - React (from `../node_modules/react-native/`) @@ -353,6 +384,7 @@ DEPENDENCIES: - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) - react-native-update (from `../../..`) - react-native-webview (from `../node_modules/react-native-webview`) + - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) @@ -362,6 +394,7 @@ DEPENDENCIES: - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) - React-RCTText (from `../node_modules/react-native/Libraries/Text`) - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) + - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) @@ -369,7 +402,6 @@ SPEC REPOS: trunk: - boost-for-react-native - CocoaAsyncSocket - - CocoaLibEvent - Flipper - Flipper-DoubleConversion - Flipper-Folly @@ -377,6 +409,7 @@ SPEC REPOS: - Flipper-PeerTalk - Flipper-RSocket - FlipperKit + - libevent - OpenSSL-Universal - SSZipArchive - YogaKit @@ -387,11 +420,11 @@ EXTERNAL SOURCES: FBLazyVector: :path: "../node_modules/react-native/Libraries/FBLazyVector" FBReactNativeSpec: - :path: "../node_modules/react-native/Libraries/FBReactNativeSpec" - Folly: - :podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec" + :path: "../node_modules/react-native/React/FBReactNativeSpec" glog: :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" + RCT-Folly: + :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" RCTRequired: :path: "../node_modules/react-native/Libraries/RCTRequired" RCTTypeSafety: @@ -416,6 +449,8 @@ EXTERNAL SOURCES: :path: "../../.." react-native-webview: :path: "../node_modules/react-native-webview" + React-perflogger: + :path: "../node_modules/react-native/ReactCommon/reactperflogger" React-RCTActionSheet: :path: "../node_modules/react-native/Libraries/ActionSheetIOS" React-RCTAnimation: @@ -434,6 +469,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/Text" React-RCTVibration: :path: "../node_modules/react-native/Libraries/Vibration" + React-runtimeexecutor: + :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" ReactCommon: :path: "../node_modules/react-native/ReactCommon" Yoga: @@ -441,47 +478,49 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c - CocoaAsyncSocket: 694058e7c0ed05a9e217d1b3c7ded962f4180845 - CocoaLibEvent: 2fab71b8bd46dd33ddb959f7928ec5909f838e3f - DoubleConversion: cde416483dac037923206447da6e1454df403714 - FBLazyVector: 878b59e31113e289e275165efbe4b54fa614d43d - FBReactNativeSpec: 7da9338acfb98d4ef9e5536805a0704572d33c2f - Flipper: be611d4b742d8c87fbae2ca5f44603a02539e365 + CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 + DoubleConversion: cf9b38bf0b2d048436d9a82ad2abe1404f11e7de + FBLazyVector: 49cbe4b43e445b06bf29199b6ad2057649e4c8f5 + FBReactNativeSpec: 32175a51766279e1b9831f98bfa746c187822ddf + Flipper: 1e9b42d953eb33b2367f372ae25e64f6b86f4361 Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41 - Flipper-Folly: c12092ea368353b58e992843a990a3225d4533c3 + Flipper-Folly: f7a3caafbd74bda4827954fd7a6e000e36355489 Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6 Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 - Flipper-RSocket: 64e7431a55835eb953b0bf984ef3b90ae9fdddd7 - FlipperKit: ab353d41aea8aae2ea6daaf813e67496642f3d7d - Folly: b73c3869541e86821df3c387eb0af5f65addfab4 - glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3 - OpenSSL-Universal: 8b48cc0d10c1b2923617dfe5c178aa9ed2689355 - RCTRequired: 48884c74035a0b5b76dbb7a998bd93bcfc5f2047 - RCTTypeSafety: edf4b618033c2f1c5b7bc3d90d8e085ed95ba2ab - React: f36e90f3ceb976546e97df3403e37d226f79d0e3 - React-callinvoker: 18874f621eb96625df7a24a7dc8d6e07391affcd - React-Core: ac3d816b8e3493970153f4aaf0cff18af0bb95e6 - React-CoreModules: 4016d3a4e518bcfc4f5a51252b5a05692ca6f0e1 - React-cxxreact: ffc9129013b87cb36cf3f30a86695a3c397b0f99 - React-jsi: df07aa95b39c5be3e41199921509bfa929ed2b9d - React-jsiexecutor: b56c03e61c0dd5f5801255f2160a815f4a53d451 - React-jsinspector: 8e68ffbfe23880d3ee9bafa8be2777f60b25cbe2 - react-native-update: 74ae0ad726a7cd5194b377361b7a3e921a65201c + Flipper-RSocket: 127954abe8b162fcaf68d2134d34dc2bd7076154 + FlipperKit: 3970c0e7566160eda3defc580980c55f4ad585e8 + glog: 73c2498ac6884b13ede40eda8228cb1eee9d9d62 + libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 + OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b + RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c + RCTRequired: 2f8cb5b7533219bf4218a045f92768129cf7050a + RCTTypeSafety: 512728b73549e72ad7330b92f3d42936f2a4de5b + React: 98eac01574128a790f0bbbafe2d1a8607291ac24 + React-callinvoker: def3f7fae16192df68d9b69fd4bbb59092ee36bc + React-Core: 70a52aa5dbe9b83befae82038451a7df9fd54c5a + React-CoreModules: 052edef46117862e2570eb3a0f06d81c61d2c4b8 + React-cxxreact: c1dc71b30653cfb4770efdafcbdc0ad6d388baab + React-jsi: 74341196d9547cbcbcfa4b3bbbf03af56431d5a1 + React-jsiexecutor: 06a9c77b56902ae7ffcdd7a4905f664adc5d237b + React-jsinspector: 0ae35a37b20d5e031eb020a69cc5afdbd6406301 + react-native-update: 57368bcb714d347147b87e520f596ca44ab1de52 react-native-webview: 4e96d493f9f90ba4f03b28933f30b2964df07e39 - React-RCTActionSheet: 53ea72699698b0b47a6421cb1c8b4ab215a774aa - React-RCTAnimation: 1befece0b5183c22ae01b966f5583f42e69a83c2 - React-RCTBlob: 0b284339cbe4b15705a05e2313a51c6d8b51fa40 - React-RCTImage: d1756599ebd4dc2cb19d1682fe67c6b976658387 - React-RCTLinking: 9af0a51c6d6a4dd1674daadafffc6d03033a6d18 - React-RCTNetwork: 332c83929cc5eae0b3bbca4add1d668e1fc18bda - React-RCTSettings: d6953772cfd55f2c68ad72b7ef29efc7ec49f773 - React-RCTText: 65a6de06a7389098ce24340d1d3556015c38f746 - React-RCTVibration: 8e9fb25724a0805107fc1acc9075e26f814df454 - ReactCommon: 4167844018c9ed375cc01a843e9ee564399e53c3 + React-perflogger: 9c547d8f06b9bf00cb447f2b75e8d7f19b7e02af + React-RCTActionSheet: 3080b6e12e0e1a5b313c8c0050699b5c794a1b11 + React-RCTAnimation: 3f96f21a497ae7dabf4d2f150ee43f906aaf516f + React-RCTBlob: 283b8e5025e7f954176bc48164f846909002f3ed + React-RCTImage: 5088a484faac78f2d877e1b79125d3bb1ea94a16 + React-RCTLinking: 5e8fbb3e9a8bc2e4e3eb15b1eb8bda5fcac27b8c + React-RCTNetwork: 38ec277217b1e841d5e6a1fa78da65b9212ccb28 + React-RCTSettings: 242d6e692108c3de4f3bb74b7586a8799e9ab070 + React-RCTText: 8746736ac8eb5a4a74719aa695b7a236a93a83d2 + React-RCTVibration: 0fd6b21751a33cb72fce1a4a33ab9678416d307a + React-runtimeexecutor: cad74a1eaa53ee6e7a3620231939d8fe2c6afcf0 + ReactCommon: cfe2b7fd20e0dbd2d1185cd7d8f99633fbc5ff05 SSZipArchive: 62d4947b08730e4cda640473b0066d209ff033c9 - Yoga: 7d13633d129fd179e01b8953d38d47be90db185a + Yoga: 8c8436d4171c87504c648ae23b1d81242bdf3bbf YogaKit: f782866e155069a2cca2517aafea43200b01fd5a -PODFILE CHECKSUM: 449e295f5242b426c8459fd24a8812cc985916d0 +PODFILE CHECKSUM: 519089f4194b2734ec99f1355a2d6fa8ed4aefbd -COCOAPODS: 1.9.3 +COCOAPODS: 1.10.1 diff --git a/Example/testHotUpdate/ios/testHotUpdate.xcodeproj/project.pbxproj b/Example/testHotUpdate/ios/testHotUpdate.xcodeproj/project.pbxproj index 488d955..e5b0a46 100644 --- a/Example/testHotUpdate/ios/testHotUpdate.xcodeproj/project.pbxproj +++ b/Example/testHotUpdate/ios/testHotUpdate.xcodeproj/project.pbxproj @@ -141,6 +141,7 @@ 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, 1CD78CE8A2E7B88FAE48FCEE /* [CP] Copy Pods Resources */, + F9FE0A60F5C1B623C43151B4 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -254,6 +255,24 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; + F9FE0A60F5C1B623C43151B4 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-testHotUpdate/Pods-testHotUpdate-frameworks.sh", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-testHotUpdate/Pods-testHotUpdate-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; FD10A7F022414F080027D42C /* Start Packager */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -380,6 +399,7 @@ COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 "; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -433,6 +453,7 @@ COPY_PHASE_STRIP = YES; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 "; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; diff --git a/Example/testHotUpdate/metro.config.js b/Example/testHotUpdate/metro.config.js index 50ef05d..472fcef 100644 --- a/Example/testHotUpdate/metro.config.js +++ b/Example/testHotUpdate/metro.config.js @@ -12,7 +12,7 @@ module.exports = { getTransformOptions: async () => ({ transform: { experimentalImportSupport: false, - inlineRequires: false, + inlineRequires: true, }, }), }, diff --git a/Example/testHotUpdate/package.json b/Example/testHotUpdate/package.json index 17f02fa..c1b4f6b 100644 --- a/Example/testHotUpdate/package.json +++ b/Example/testHotUpdate/package.json @@ -11,20 +11,20 @@ "apk": "(cd android && ./gradlew aR)" }, "dependencies": { - "react": "16.13.1", - "react-native": "0.63.3", + "react": "17.0.1", + "react-native": "0.64.0", "react-native-update": "link:../..", "react-native-webview": "^10.9.2" }, "devDependencies": { - "@babel/core": "^7.8.4", - "@babel/runtime": "^7.8.4", - "@react-native-community/eslint-config": "^1.1.0", - "babel-jest": "^25.1.0", - "eslint": "^6.5.1", - "jest": "^25.1.0", - "metro-react-native-babel-preset": "^0.59.0", - "react-test-renderer": "16.13.1" + "@babel/core": "^7.12.9", + "@babel/runtime": "^7.12.5", + "@react-native-community/eslint-config": "^2.0.0", + "babel-jest": "^26.6.3", + "eslint": "7.14.0", + "jest": "^26.6.3", + "metro-react-native-babel-preset": "^0.64.0", + "react-test-renderer": "17.0.1" }, "jest": { "preset": "react-native" diff --git a/Example/testHotUpdate/yarn.lock b/Example/testHotUpdate/yarn.lock index ec7d721..7e14579 100644 --- a/Example/testHotUpdate/yarn.lock +++ b/Example/testHotUpdate/yarn.lock @@ -16,6 +16,18 @@ dependencies: "@babel/highlight" "^7.10.4" +"@babel/code-frame@^7.12.13": + version "7.12.13" + resolved "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.13.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" + integrity sha1-3PyCa+72XnXFDiHTg319lXmN1lg= + dependencies: + "@babel/highlight" "^7.12.13" + +"@babel/compat-data@^7.13.12": + version "7.13.15" + resolved "https://registry.npm.taobao.org/@babel/compat-data/download/@babel/compat-data-7.13.15.tgz#7e8eea42d0b64fda2b375b22d06c605222e848f4" + integrity sha1-fo7qQtC2T9orN1si0GxgUiLoSPQ= + "@babel/core@^7.0.0", "@babel/core@^7.1.0": version "7.7.2" resolved "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.7.2.tgz#ea5b99693bcfc058116f42fa1dd54da412b29d91" @@ -36,7 +48,28 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.7.5", "@babel/core@^7.8.4": +"@babel/core@^7.1.6", "@babel/core@^7.12.9": + version "7.13.15" + resolved "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.13.15.tgz?cache=0&sync_timestamp=1617898078163&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcore%2Fdownload%2F%40babel%2Fcore-7.13.15.tgz#a6d40917df027487b54312202a06812c4f7792d0" + integrity sha1-ptQJF98CdIe1QxIgKgaBLE93ktA= + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.9" + "@babel/helper-compilation-targets" "^7.13.13" + "@babel/helper-module-transforms" "^7.13.14" + "@babel/helpers" "^7.13.10" + "@babel/parser" "^7.13.15" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.15" + "@babel/types" "^7.13.14" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/core@^7.7.5": version "7.11.6" resolved "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.11.6.tgz#3a9455dc7387ff1bac45770650bc13ba04a15651" integrity sha1-OpRV3HOH/xusRXcGULwTugShVlE= @@ -76,6 +109,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.13.9": + version "7.13.9" + resolved "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39" + integrity sha1-Onqpb577jivkLTjYDizrTGTY3jk= + dependencies: + "@babel/types" "^7.13.0" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/generator@^7.7.2": version "7.7.2" resolved "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.7.2.tgz?cache=0&sync_timestamp=1573082874917&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.7.2.tgz#2f4852d04131a5e17ea4f6645488b5da66ebf3af" @@ -118,6 +160,16 @@ "@babel/traverse" "^7.7.0" "@babel/types" "^7.7.0" +"@babel/helper-compilation-targets@^7.13.13": + version "7.13.13" + resolved "https://registry.npm.taobao.org/@babel/helper-compilation-targets/download/@babel/helper-compilation-targets-7.13.13.tgz#2b2972a0926474853f41e4adbc69338f520600e5" + integrity sha1-KylyoJJkdIU/QeStvGkzj1IGAOU= + dependencies: + "@babel/compat-data" "^7.13.12" + "@babel/helper-validator-option" "^7.12.17" + browserslist "^4.14.5" + semver "^6.3.0" + "@babel/helper-create-class-features-plugin@^7.10.5": version "7.10.5" resolved "https://registry.npm.taobao.org/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.10.5.tgz?cache=0&sync_timestamp=1594749605928&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-create-class-features-plugin%2Fdownload%2F%40babel%2Fhelper-create-class-features-plugin-7.10.5.tgz#9f61446ba80e8240b0a5c85c6fdac8459d6f259d" @@ -130,6 +182,17 @@ "@babel/helper-replace-supers" "^7.10.4" "@babel/helper-split-export-declaration" "^7.10.4" +"@babel/helper-create-class-features-plugin@^7.13.0": + version "7.13.11" + resolved "https://registry.npm.taobao.org/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.13.11.tgz#30d30a005bca2c953f5653fc25091a492177f4f6" + integrity sha1-MNMKAFvKLJU/VlP8JQkaSSF39PY= + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-member-expression-to-functions" "^7.13.0" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-replace-supers" "^7.13.0" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-create-class-features-plugin@^7.7.0": version "7.7.0" resolved "https://registry.npm.taobao.org/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.7.0.tgz#bcdc223abbfdd386f94196ae2544987f8df775e8" @@ -176,6 +239,15 @@ "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-function-name@^7.12.13": + version "7.12.13" + resolved "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.12.13.tgz?cache=0&sync_timestamp=1612314853969&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-function-name%2Fdownload%2F%40babel%2Fhelper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" + integrity sha1-k61lbbPDwiMlWf17LD29y+DrN3o= + dependencies: + "@babel/helper-get-function-arity" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/types" "^7.12.13" + "@babel/helper-function-name@^7.7.0": version "7.7.0" resolved "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.7.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-function-name%2Fdownload%2F%40babel%2Fhelper-function-name-7.7.0.tgz#44a5ad151cfff8ed2599c91682dda2ec2c8430a3" @@ -199,6 +271,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-get-function-arity@^7.12.13": + version "7.12.13" + resolved "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.13.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-get-function-arity%2Fdownload%2F%40babel%2Fhelper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" + integrity sha1-vGNFHUA6OzCCuX4diz/lvUCR5YM= + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-hoist-variables@^7.7.0": version "7.7.0" resolved "https://registry.npm.taobao.org/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.7.0.tgz#b4552e4cfe5577d7de7b183e193e84e4ec538c81" @@ -213,6 +292,13 @@ dependencies: "@babel/types" "^7.11.0" +"@babel/helper-member-expression-to-functions@^7.13.0", "@babel/helper-member-expression-to-functions@^7.13.12": + version "7.13.12" + resolved "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72" + integrity sha1-3+No8m1CagcpnY1lE4IXaCFubXI= + dependencies: + "@babel/types" "^7.13.12" + "@babel/helper-member-expression-to-functions@^7.7.0": version "7.7.0" resolved "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.7.0.tgz#472b93003a57071f95a541ea6c2b098398bcad8a" @@ -234,6 +320,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-module-imports@^7.13.12": + version "7.13.12" + resolved "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977" + integrity sha1-xqNppvNiHLJdoBQHhoTakZa2GXc= + dependencies: + "@babel/types" "^7.13.12" + "@babel/helper-module-transforms@^7.11.0": version "7.11.0" resolved "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" @@ -247,6 +340,20 @@ "@babel/types" "^7.11.0" lodash "^4.17.19" +"@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.13.14": + version "7.13.14" + resolved "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.13.14.tgz#e600652ba48ccb1641775413cb32cfa4e8b495ef" + integrity sha1-5gBlK6SMyxZBd1QTyzLPpOi0le8= + dependencies: + "@babel/helper-module-imports" "^7.13.12" + "@babel/helper-replace-supers" "^7.13.12" + "@babel/helper-simple-access" "^7.13.12" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-validator-identifier" "^7.12.11" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.13" + "@babel/types" "^7.13.14" + "@babel/helper-module-transforms@^7.7.0": version "7.7.0" resolved "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.7.0.tgz?cache=0&sync_timestamp=1572951248340&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-module-transforms%2Fdownload%2F%40babel%2Fhelper-module-transforms-7.7.0.tgz#154a69f0c5b8fd4d39e49750ff7ac4faa3f36786" @@ -266,6 +373,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-optimise-call-expression@^7.12.13": + version "7.12.13" + resolved "https://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.12.13.tgz?cache=0&sync_timestamp=1612314843013&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-optimise-call-expression%2Fdownload%2F%40babel%2Fhelper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" + integrity sha1-XALRcbTIYVsecWP4iMHIHDCiquo= + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-optimise-call-expression@^7.7.0": version "7.7.0" resolved "https://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.7.0.tgz#4f66a216116a66164135dc618c5d8b7a959f9365" @@ -283,6 +397,11 @@ resolved "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521033258&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha1-L3WoMSadT2d95JmG3/WZJ1M883U= +"@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0": + version "7.13.0" + resolved "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz?cache=0&sync_timestamp=1614034505144&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" + integrity sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68= + "@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": version "7.5.5" resolved "https://registry.npm.taobao.org/@babel/helper-regex/download/@babel/helper-regex-7.5.5.tgz#0aa6824f7100a2e0e89c1527c23936c152cab351" @@ -290,17 +409,6 @@ dependencies: lodash "^4.17.13" -"@babel/helper-remap-async-to-generator@^7.7.0": - version "7.7.0" - resolved "https://registry.npm.taobao.org/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.7.0.tgz#4d69ec653e8bff5bce62f5d33fc1508f223c75a7" - integrity sha1-TWnsZT6L/1vOYvXTP8FQjyI8dac= - dependencies: - "@babel/helper-annotate-as-pure" "^7.7.0" - "@babel/helper-wrap-function" "^7.7.0" - "@babel/template" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - "@babel/helper-replace-supers@^7.10.4": version "7.10.4" resolved "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" @@ -311,6 +419,16 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-replace-supers@^7.13.0", "@babel/helper-replace-supers@^7.13.12": + version "7.13.12" + resolved "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.13.12.tgz#6442f4c1ad912502481a564a7386de0c77ff3804" + integrity sha1-ZEL0wa2RJQJIGlZKc4beDHf/OAQ= + dependencies: + "@babel/helper-member-expression-to-functions" "^7.13.12" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.12" + "@babel/helper-replace-supers@^7.5.5", "@babel/helper-replace-supers@^7.7.0": version "7.7.0" resolved "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.7.0.tgz?cache=0&sync_timestamp=1572951254145&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-replace-supers%2Fdownload%2F%40babel%2Fhelper-replace-supers-7.7.0.tgz#d5365c8667fe7cbd13b8ddddceb9bd7f2b387512" @@ -329,6 +447,13 @@ "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-simple-access@^7.12.13", "@babel/helper-simple-access@^7.13.12": + version "7.13.12" + resolved "https://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.13.12.tgz?cache=0&sync_timestamp=1616428053399&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-simple-access%2Fdownload%2F%40babel%2Fhelper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6" + integrity sha1-3WxTivthgZ0gWgEsMXkqOcel6vY= + dependencies: + "@babel/types" "^7.13.12" + "@babel/helper-simple-access@^7.7.0": version "7.7.0" resolved "https://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.7.0.tgz#97a8b6c52105d76031b86237dc1852b44837243d" @@ -337,6 +462,13 @@ "@babel/template" "^7.7.0" "@babel/types" "^7.7.0" +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://registry.npm.taobao.org/@babel/helper-skip-transparent-expression-wrappers/download/@babel/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha1-Ri3GOn5DWt6EaDhcY9K4TM5LPL8= + dependencies: + "@babel/types" "^7.12.1" + "@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": version "7.11.0" resolved "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" @@ -344,6 +476,13 @@ dependencies: "@babel/types" "^7.11.0" +"@babel/helper-split-export-declaration@^7.12.13": + version "7.12.13" + resolved "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.12.13.tgz?cache=0&sync_timestamp=1612314842036&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-split-export-declaration%2Fdownload%2F%40babel%2Fhelper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" + integrity sha1-6UML4AuvPoiw4T5vnU6vITY3KwU= + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-split-export-declaration@^7.7.0": version "7.7.0" resolved "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.7.0.tgz#1365e74ea6c614deeb56ebffabd71006a0eb2300" @@ -356,15 +495,15 @@ resolved "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.10.4.tgz?cache=0&sync_timestamp=1593522928192&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" integrity sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI= -"@babel/helper-wrap-function@^7.7.0": - version "7.7.0" - resolved "https://registry.npm.taobao.org/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.7.0.tgz?cache=0&sync_timestamp=1572951253233&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-wrap-function%2Fdownload%2F%40babel%2Fhelper-wrap-function-7.7.0.tgz#15af3d3e98f8417a60554acbb6c14e75e0b33b74" - integrity sha1-Fa89Ppj4QXpgVUrLtsFOdeCzO3Q= - dependencies: - "@babel/helper-function-name" "^7.7.0" - "@babel/template" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" +"@babel/helper-validator-identifier@^7.12.11": + version "7.12.11" + resolved "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha1-yaHwIZF9y1zPDU5FPjmQIpgfye0= + +"@babel/helper-validator-option@^7.12.17": + version "7.12.17" + resolved "https://registry.npm.taobao.org/@babel/helper-validator-option/download/@babel/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" + integrity sha1-0fvwEuGnm37rv9xtJwuq+NnrmDE= "@babel/helpers@^7.10.4": version "7.10.4" @@ -375,6 +514,15 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helpers@^7.13.10": + version "7.13.10" + resolved "https://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.13.10.tgz?cache=0&sync_timestamp=1615245016823&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelpers%2Fdownload%2F%40babel%2Fhelpers-7.13.10.tgz#fd8e2ba7488533cdeac45cc158e9ebca5e3c7df8" + integrity sha1-/Y4rp0iFM83qxFzBWOnryl48ffg= + dependencies: + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.0" + "@babel/helpers@^7.7.0": version "7.7.0" resolved "https://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.7.0.tgz#359bb5ac3b4726f7c1fde0ec75f64b3f4275d60b" @@ -402,23 +550,30 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.12.13": + version "7.13.10" + resolved "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" + integrity sha1-qLKmYUj1sn1maxXYF3Q0enMdUtE= + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.7.0", "@babel/parser@^7.7.2": version "7.7.3" resolved "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.7.3.tgz#5fad457c2529de476a248f75b0f090b3060af043" integrity sha1-X61FfCUp3kdqJI91sPCQswYK8EM= +"@babel/parser@^7.1.6", "@babel/parser@^7.12.13", "@babel/parser@^7.13.15": + version "7.13.15" + resolved "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.13.15.tgz?cache=0&sync_timestamp=1617898091422&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.13.15.tgz#8e66775fb523599acb6a289e12929fa5ab0954d8" + integrity sha1-jmZ3X7UjWZrLaiieEpKfpasJVNg= + "@babel/parser@^7.10.4", "@babel/parser@^7.11.5": version "7.11.5" resolved "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" integrity sha1-x/9jA99xCA7HpPW4wAPFjxz1EDc= -"@babel/plugin-external-helpers@^7.0.0": - version "7.2.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-external-helpers/download/@babel/plugin-external-helpers-7.2.0.tgz#7f4cb7dee651cd380d2034847d914288467a6be4" - integrity sha1-f0y33uZRzTgNIDSEfZFCiEZ6a+Q= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-class-properties@^7.0.0": version "7.7.0" resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.7.0.tgz#ac54e728ecf81d90e8f4d2a9c05a890457107917" @@ -427,6 +582,14 @@ "@babel/helper-create-class-features-plugin" "^7.7.0" "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-proposal-class-properties@^7.1.0": + version "7.13.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.13.0.tgz?cache=0&sync_timestamp=1614034297846&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-class-properties%2Fdownload%2F%40babel%2Fplugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37" + integrity sha1-FGN2AAuU79AB5XpAqIpSWvqrnzc= + dependencies: + "@babel/helper-create-class-features-plugin" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-proposal-export-default-from@^7.0.0": version "7.5.2" resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-export-default-from/download/@babel/plugin-proposal-export-default-from-7.5.2.tgz#2c0ac2dcc36e3b2443fead2c3c5fc796fb1b5145" @@ -443,6 +606,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.2.0" +"@babel/plugin-proposal-nullish-coalescing-operator@^7.1.0": + version "7.13.8" + resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-nullish-coalescing-operator/download/@babel/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz?cache=0&sync_timestamp=1614383017449&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-nullish-coalescing-operator%2Fdownload%2F%40babel%2Fplugin-proposal-nullish-coalescing-operator-7.13.8.tgz#3730a31dafd3c10d8ccd10648ed80a2ac5472ef3" + integrity sha1-NzCjHa/TwQ2MzRBkjtgKKsVHLvM= + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread@^7.0.0": version "7.6.2" resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.6.2.tgz?cache=0&sync_timestamp=1569275095376&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-object-rest-spread%2Fdownload%2F%40babel%2Fplugin-proposal-object-rest-spread-7.6.2.tgz#8ffccc8f3a6545e9f78988b6bf4fe881b88e8096" @@ -467,6 +638,15 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-optional-chaining" "^7.2.0" +"@babel/plugin-proposal-optional-chaining@^7.1.0": + version "7.13.12" + resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-chaining/download/@babel/plugin-proposal-optional-chaining-7.13.12.tgz?cache=0&sync_timestamp=1616428043026&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-optional-chaining%2Fdownload%2F%40babel%2Fplugin-proposal-optional-chaining-7.13.12.tgz#ba9feb601d422e0adea6760c2bd6bbb7bfec4866" + integrity sha1-up/rYB1CLgrepnYMK9a7t7/sSGY= + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-async-generators/download/@babel/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -516,6 +696,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-syntax-flow@^7.12.13": + version "7.12.13" + resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-flow/download/@babel/plugin-syntax-flow-7.12.13.tgz#5df9962503c0a9c918381c929d51d4d6949e7e86" + integrity sha1-XfmWJQPAqckYOBySnVHU1pSefoY= + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-import-meta/download/@babel/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" @@ -614,6 +801,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.12.13" + resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-top-level-await/download/@babel/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" + integrity sha1-xfD6biSfW3OXJ/kjVAz3qAYTAXg= + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-typescript@^7.10.4": version "7.10.4" resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-typescript/download/@babel/plugin-syntax-typescript-7.10.4.tgz#2f55e770d3501e83af217d782cb7517d7bb34d25" @@ -621,6 +815,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-typescript@^7.12.13": + version "7.12.13" + resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-typescript/download/@babel/plugin-syntax-typescript-7.12.13.tgz?cache=0&sync_timestamp=1612325334606&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-typescript%2Fdownload%2F%40babel%2Fplugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474" + integrity sha1-nf8RHKZBVM7w9NxSz4Q9nxLORHQ= + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-arrow-functions@^7.0.0": version "7.2.0" resolved "https://registry.npm.taobao.org/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" @@ -628,15 +829,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-async-to-generator@^7.0.0": - version "7.7.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.7.0.tgz#e2b84f11952cf5913fe3438b7d2585042772f492" - integrity sha1-4rhPEZUs9ZE/40OLfSWFBCdy9JI= - dependencies: - "@babel/helper-module-imports" "^7.7.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.7.0" - "@babel/plugin-transform-block-scoped-functions@^7.0.0": version "7.2.0" resolved "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" @@ -696,6 +888,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-flow" "^7.2.0" +"@babel/plugin-transform-flow-strip-types@^7.13.0": + version "7.13.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-flow-strip-types/download/@babel/plugin-transform-flow-strip-types-7.13.0.tgz?cache=0&sync_timestamp=1614042406342&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-flow-strip-types%2Fdownload%2F%40babel%2Fplugin-transform-flow-strip-types-7.13.0.tgz#58177a48c209971e8234e99906cb6bd1122addd3" + integrity sha1-WBd6SMIJlx6CNOmZBstr0RIq3dM= + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-flow" "^7.12.13" + "@babel/plugin-transform-for-of@^7.0.0": version "7.4.4" resolved "https://registry.npm.taobao.org/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" @@ -735,6 +935,16 @@ "@babel/helper-simple-access" "^7.7.0" babel-plugin-dynamic-import-node "^2.3.0" +"@babel/plugin-transform-modules-commonjs@^7.1.0": + version "7.13.8" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.13.8.tgz?cache=0&sync_timestamp=1614383017561&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-commonjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-commonjs-7.13.8.tgz#7b01ad7c2dcf2275b06fa1781e00d13d420b3e1b" + integrity sha1-ewGtfC3PInWwb6F4HgDRPUILPhs= + dependencies: + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-simple-access" "^7.12.13" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-object-assign@^7.0.0": version "7.2.0" resolved "https://registry.npm.taobao.org/@babel/plugin-transform-object-assign/download/@babel/plugin-transform-object-assign-7.2.0.tgz#6fdeea42be17040f119e38e23ea0f49f31968bde" @@ -845,6 +1055,15 @@ "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-typescript@^7.13.0": + version "7.13.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-typescript/download/@babel/plugin-transform-typescript-7.13.0.tgz#4a498e1f3600342d2a9e61f60131018f55774853" + integrity sha1-SkmOHzYANC0qnmH2ATEBj1V3SFM= + dependencies: + "@babel/helper-create-class-features-plugin" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-typescript" "^7.12.13" + "@babel/plugin-transform-typescript@^7.5.0": version "7.11.0" resolved "https://registry.npm.taobao.org/@babel/plugin-transform-typescript/download/@babel/plugin-transform-typescript-7.11.0.tgz?cache=0&sync_timestamp=1596154779430&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-typescript%2Fdownload%2F%40babel%2Fplugin-transform-typescript-7.11.0.tgz#2b4879676af37342ebb278216dd090ac67f13abb" @@ -862,6 +1081,24 @@ "@babel/helper-create-regexp-features-plugin" "^7.7.0" "@babel/helper-plugin-utils" "^7.0.0" +"@babel/preset-flow@^7.0.0": + version "7.13.13" + resolved "https://registry.npm.taobao.org/@babel/preset-flow/download/@babel/preset-flow-7.13.13.tgz#a61a1c149b3f77589d795287744393444d5cdd9e" + integrity sha1-phocFJs/d1ideVKHdEOTRE1c3Z4= + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-transform-flow-strip-types" "^7.13.0" + +"@babel/preset-typescript@^7.1.0": + version "7.13.0" + resolved "https://registry.npm.taobao.org/@babel/preset-typescript/download/@babel/preset-typescript-7.13.0.tgz?cache=0&sync_timestamp=1614042413878&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fpreset-typescript%2Fdownload%2F%40babel%2Fpreset-typescript-7.13.0.tgz#ab107e5f050609d806fbb039bec553b33462c60a" + integrity sha1-qxB+XwUGCdgG+7A5vsVTszRixgo= + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-transform-typescript" "^7.13.0" + "@babel/register@^7.0.0": version "7.7.0" resolved "https://registry.npm.taobao.org/@babel/register/download/@babel/register-7.7.0.tgz#4e23ecf840296ef79c605baaa5c89e1a2426314b" @@ -873,25 +1110,10 @@ pirates "^4.0.0" source-map-support "^0.5.16" -"@babel/runtime-corejs3@^7.8.3": - version "7.11.2" - resolved "https://registry.npm.taobao.org/@babel/runtime-corejs3/download/@babel/runtime-corejs3-7.11.2.tgz#02c3029743150188edeb66541195f54600278419" - integrity sha1-AsMCl0MVAYjt62ZUEZX1RgAnhBk= - dependencies: - core-js-pure "^3.0.0" - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.0.0": - version "7.7.2" - resolved "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.7.2.tgz#111a78002a5c25fc8e3361bedc9529c696b85a6a" - integrity sha1-ERp4ACpcJfyOM2G+3JUpxpa4Wmo= - dependencies: - regenerator-runtime "^0.13.2" - -"@babel/runtime@^7.8.4": - version "7.11.2" - resolved "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.11.2.tgz?cache=0&sync_timestamp=1596638737543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fruntime%2Fdownload%2F%40babel%2Fruntime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" - integrity sha1-9UnBPHVMxAuHZEufqfCaapX+BzY= +"@babel/runtime@^7.12.5": + version "7.13.10" + resolved "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d" + integrity sha1-R9QqV7YJX0Ro2kQDiP262L6/DX0= dependencies: regenerator-runtime "^0.13.4" @@ -913,6 +1135,15 @@ "@babel/parser" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/template@^7.12.13": + version "7.12.13" + resolved "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" + integrity sha1-UwJlvooliduzdSOETFvLVZR/syc= + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/parser" "^7.12.13" + "@babel/types" "^7.12.13" + "@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": version "7.7.2" resolved "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.7.2.tgz?cache=0&sync_timestamp=1573082879821&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.7.2.tgz#ef0a65e07a2f3c550967366b3d9b62a2dcbeae09" @@ -943,6 +1174,20 @@ globals "^11.1.0" lodash "^4.17.19" +"@babel/traverse@^7.13.0", "@babel/traverse@^7.13.13", "@babel/traverse@^7.13.15", "@babel/traverse@^7.7.4": + version "7.13.15" + resolved "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.13.15.tgz?cache=0&sync_timestamp=1617898077779&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.13.15.tgz#c38bf7679334ddd4028e8e1f7b3aa5019f0dada7" + integrity sha1-w4v3Z5M03dQCjo4fezqlAZ8Nrac= + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.9" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/parser" "^7.13.15" + "@babel/types" "^7.13.14" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.7.0", "@babel/types@^7.7.2": version "7.7.2" resolved "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.7.2.tgz#550b82e5571dcd174af576e23f0adba7ffc683f7" @@ -961,6 +1206,15 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.14": + version "7.13.14" + resolved "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.13.14.tgz?cache=0&sync_timestamp=1617027540856&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.13.14.tgz#c35a4abb15c7cd45a2746d78ab328e362cbace0d" + integrity sha1-w1pKuxXHzUWidG14qzKONiy6zg0= + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.npm.taobao.org/@bcoe/v8-coverage/download/@bcoe/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -974,37 +1228,33 @@ exec-sh "^0.3.2" minimist "^1.2.0" -"@hapi/address@2.x.x": - version "2.1.2" - resolved "https://registry.npm.taobao.org/@hapi/address/download/@hapi/address-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Faddress%2Fdownload%2F%40hapi%2Faddress-2.1.2.tgz#1c794cd6dbf2354d1eb1ef10e0303f573e1c7222" - integrity sha1-HHlM1tvyNU0ese8Q4DA/Vz4cciI= - -"@hapi/bourne@1.x.x": - version "1.3.2" - resolved "https://registry.npm.taobao.org/@hapi/bourne/download/@hapi/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" - integrity sha1-CnCVreoGckPOMoPhtWuKj0U7JCo= - -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": - version "8.5.0" - resolved "https://registry.npm.taobao.org/@hapi/hoek/download/@hapi/hoek-8.5.0.tgz#2f9ce301c8898e1c3248b0a8564696b24d1a9a5a" - integrity sha1-L5zjAciJjhwySLCoVkaWsk0amlo= - -"@hapi/joi@^15.0.3": - version "15.1.1" - resolved "https://registry.npm.taobao.org/@hapi/joi/download/@hapi/joi-15.1.1.tgz?cache=0&sync_timestamp=1570297261669&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fjoi%2Fdownload%2F%40hapi%2Fjoi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" - integrity sha1-xnW4pxKW8Cgz+NbSQ7NMV7jOGdc= +"@eslint/eslintrc@^0.2.1": + version "0.2.2" + resolved "https://registry.npm.taobao.org/@eslint/eslintrc/download/@eslint/eslintrc-0.2.2.tgz#d01fc791e2fc33e88a29d6f3dc7e93d0cd784b76" + integrity sha1-0B/HkeL8M+iKKdbz3H6T0M14S3Y= dependencies: - "@hapi/address" "2.x.x" - "@hapi/bourne" "1.x.x" - "@hapi/hoek" "8.x.x" - "@hapi/topo" "3.x.x" + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + lodash "^4.17.19" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" -"@hapi/topo@3.x.x": - version "3.1.6" - resolved "https://registry.npm.taobao.org/@hapi/topo/download/@hapi/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" - integrity sha1-aNk1+j6uf91asNf5U/MgXYsr/Ck= +"@hapi/hoek@^9.0.0": + version "9.1.1" + resolved "https://registry.npm.taobao.org/@hapi/hoek/download/@hapi/hoek-9.1.1.tgz?cache=0&sync_timestamp=1609087042424&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fhoek%2Fdownload%2F%40hapi%2Fhoek-9.1.1.tgz#9daf5745156fd84b8e9889a2dc721f0c58e894aa" + integrity sha1-na9XRRVv2EuOmImi3HIfDFjolKo= + +"@hapi/topo@^5.0.0": + version "5.0.0" + resolved "https://registry.npm.taobao.org/@hapi/topo/download/@hapi/topo-5.0.0.tgz#c19af8577fa393a06e9c77b60995af959be721e7" + integrity sha1-wZr4V3+jk6BunHe2CZWvlZvnIec= dependencies: - "@hapi/hoek" "^8.3.0" + "@hapi/hoek" "^9.0.0" "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -1022,243 +1272,208 @@ resolved "https://registry.npm.taobao.org/@istanbuljs/schema/download/@istanbuljs/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha1-JlIL8Jq+SlZEzVQU43ElqJVCQd0= -"@jest/console@^24.9.0": - version "24.9.0" - resolved "https://registry.npm.taobao.org/@jest/console/download/@jest/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" - integrity sha1-ebG8Bvt0qM+wHL3t+UVYSxuXB/A= +"@jest/console@^26.6.2": + version "26.6.2" + resolved "https://registry.npm.taobao.org/@jest/console/download/@jest/console-26.6.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Fconsole%2Fdownload%2F%40jest%2Fconsole-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + integrity sha1-TgS8RkAUNYsDq0k3gF7jagrrmPI= dependencies: - "@jest/source-map" "^24.9.0" - chalk "^2.0.1" - slash "^2.0.0" - -"@jest/console@^25.5.0": - version "25.5.0" - resolved "https://registry.npm.taobao.org/@jest/console/download/@jest/console-25.5.0.tgz#770800799d510f37329c508a9edd0b7b447d9abb" - integrity sha1-dwgAeZ1RDzcynFCKnt0Le0R9mrs= - dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" - jest-message-util "^25.5.0" - jest-util "^25.5.0" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^26.6.2" + jest-util "^26.6.2" slash "^3.0.0" -"@jest/core@^25.5.4": - version "25.5.4" - resolved "https://registry.npm.taobao.org/@jest/core/download/@jest/core-25.5.4.tgz#3ef7412f7339210f003cdf36646bbca786efe7b4" - integrity sha1-PvdBL3M5IQ8APN82ZGu8p4bv57Q= +"@jest/core@^26.6.3": + version "26.6.3" + resolved "https://registry.npm.taobao.org/@jest/core/download/@jest/core-26.6.3.tgz?cache=0&sync_timestamp=1617371668352&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Fcore%2Fdownload%2F%40jest%2Fcore-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + integrity sha1-djn8s4M9dIpGVq2lS94ZMFHkX60= dependencies: - "@jest/console" "^25.5.0" - "@jest/reporters" "^25.5.1" - "@jest/test-result" "^25.5.0" - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" + "@jest/console" "^26.6.2" + "@jest/reporters" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" ansi-escapes "^4.2.1" - chalk "^3.0.0" + chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" - jest-changed-files "^25.5.0" - jest-config "^25.5.4" - jest-haste-map "^25.5.1" - jest-message-util "^25.5.0" - jest-regex-util "^25.2.6" - jest-resolve "^25.5.1" - jest-resolve-dependencies "^25.5.4" - jest-runner "^25.5.4" - jest-runtime "^25.5.4" - jest-snapshot "^25.5.1" - jest-util "^25.5.0" - jest-validate "^25.5.0" - jest-watcher "^25.5.0" + jest-changed-files "^26.6.2" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-resolve-dependencies "^26.6.3" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + jest-watcher "^26.6.2" micromatch "^4.0.2" p-each-series "^2.1.0" - realpath-native "^2.0.0" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^25.5.0": - version "25.5.0" - resolved "https://registry.npm.taobao.org/@jest/environment/download/@jest/environment-25.5.0.tgz#aa33b0c21a716c65686638e7ef816c0e3a0c7b37" - integrity sha1-qjOwwhpxbGVoZjjn74FsDjoMezc= +"@jest/create-cache-key-function@^26.5.0": + version "26.6.2" + resolved "https://registry.npm.taobao.org/@jest/create-cache-key-function/download/@jest/create-cache-key-function-26.6.2.tgz#04cf439207a4fd12418d8aee551cddc86f9ac5f5" + integrity sha1-BM9Dkgek/RJBjYruVRzdyG+axfU= dependencies: - "@jest/fake-timers" "^25.5.0" - "@jest/types" "^25.5.0" - jest-mock "^25.5.0" + "@jest/types" "^26.6.2" -"@jest/fake-timers@^24.9.0": - version "24.9.0" - resolved "https://registry.npm.taobao.org/@jest/fake-timers/download/@jest/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" - integrity sha1-uj5r8O7NCaY2BJiWQ00wZjZUDJM= +"@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://registry.npm.taobao.org/@jest/environment/download/@jest/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha1-ujZMxy4iHnnMjwqZVVv111d8+Sw= dependencies: - "@jest/types" "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" -"@jest/fake-timers@^25.5.0": - version "25.5.0" - resolved "https://registry.npm.taobao.org/@jest/fake-timers/download/@jest/fake-timers-25.5.0.tgz#46352e00533c024c90c2bc2ad9f2959f7f114185" - integrity sha1-RjUuAFM8AkyQwrwq2fKVn38RQYU= +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://registry.npm.taobao.org/@jest/fake-timers/download/@jest/fake-timers-26.6.2.tgz?cache=0&sync_timestamp=1617381031662&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Ffake-timers%2Fdownload%2F%40jest%2Ffake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha1-RZwym89wzuSvTX4/PmeEgSNTWq0= dependencies: - "@jest/types" "^25.5.0" - jest-message-util "^25.5.0" - jest-mock "^25.5.0" - jest-util "^25.5.0" - lolex "^5.0.0" + "@jest/types" "^26.6.2" + "@sinonjs/fake-timers" "^6.0.1" + "@types/node" "*" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" -"@jest/globals@^25.5.2": - version "25.5.2" - resolved "https://registry.npm.taobao.org/@jest/globals/download/@jest/globals-25.5.2.tgz#5e45e9de8d228716af3257eeb3991cc2e162ca88" - integrity sha1-XkXp3o0ihxavMlfus5kcwuFiyog= +"@jest/globals@^26.6.2": + version "26.6.2" + resolved "https://registry.npm.taobao.org/@jest/globals/download/@jest/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + integrity sha1-W2E7eKGqJlWukI66Y4zJaiDfcgo= dependencies: - "@jest/environment" "^25.5.0" - "@jest/types" "^25.5.0" - expect "^25.5.0" + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" -"@jest/reporters@^25.5.1": - version "25.5.1" - resolved "https://registry.npm.taobao.org/@jest/reporters/download/@jest/reporters-25.5.1.tgz?cache=0&sync_timestamp=1597913218689&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Freporters%2Fdownload%2F%40jest%2Freporters-25.5.1.tgz#cb686bcc680f664c2dbaf7ed873e93aa6811538b" - integrity sha1-y2hrzGgPZkwtuvfthz6TqmgRU4s= +"@jest/reporters@^26.6.2": + version "26.6.2" + resolved "https://registry.npm.taobao.org/@jest/reporters/download/@jest/reporters-26.6.2.tgz?cache=0&sync_timestamp=1617375989305&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Freporters%2Fdownload%2F%40jest%2Freporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + integrity sha1-H1GLmWN6Xxgwe9Ps+SdfaIKmZ/Y= dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/console" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" graceful-fs "^4.2.4" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.0" + istanbul-lib-instrument "^4.0.3" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" - jest-haste-map "^25.5.1" - jest-resolve "^25.5.1" - jest-util "^25.5.0" - jest-worker "^25.5.0" + jest-haste-map "^26.6.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" slash "^3.0.0" source-map "^0.6.0" - string-length "^3.1.0" + string-length "^4.0.1" terminal-link "^2.0.0" - v8-to-istanbul "^4.1.3" + v8-to-istanbul "^7.0.0" optionalDependencies: - node-notifier "^6.0.0" + node-notifier "^8.0.0" -"@jest/source-map@^24.9.0": - version "24.9.0" - resolved "https://registry.npm.taobao.org/@jest/source-map/download/@jest/source-map-24.9.0.tgz?cache=0&sync_timestamp=1566444482834&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Fsource-map%2Fdownload%2F%40jest%2Fsource-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" - integrity sha1-DiY6lEML5LQdpoPMwea//ioZFxQ= - dependencies: - callsites "^3.0.0" - graceful-fs "^4.1.15" - source-map "^0.6.0" - -"@jest/source-map@^25.5.0": - version "25.5.0" - resolved "https://registry.npm.taobao.org/@jest/source-map/download/@jest/source-map-25.5.0.tgz#df5c20d6050aa292c2c6d3f0d2c7606af315bd1b" - integrity sha1-31wg1gUKopLCxtPw0sdgavMVvRs= +"@jest/source-map@^26.6.2": + version "26.6.2" + resolved "https://registry.npm.taobao.org/@jest/source-map/download/@jest/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + integrity sha1-Ka9eHi4yTK/MyTbyGDCfVKtp1TU= dependencies: callsites "^3.0.0" graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^24.9.0": - version "24.9.0" - resolved "https://registry.npm.taobao.org/@jest/test-result/download/@jest/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" - integrity sha1-EXluiqnb+I6gJXV7MVJZWtBroMo= +"@jest/test-result@^26.6.2": + version "26.6.2" + resolved "https://registry.npm.taobao.org/@jest/test-result/download/@jest/test-result-26.6.2.tgz?cache=0&sync_timestamp=1617375991441&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Ftest-result%2Fdownload%2F%40jest%2Ftest-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + integrity sha1-VdpYti3xNFdsyVR276X3lJ4/Xxg= dependencies: - "@jest/console" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/istanbul-lib-coverage" "^2.0.0" - -"@jest/test-result@^25.5.0": - version "25.5.0" - resolved "https://registry.npm.taobao.org/@jest/test-result/download/@jest/test-result-25.5.0.tgz#139a043230cdeffe9ba2d8341b27f2efc77ce87c" - integrity sha1-E5oEMjDN7/6botg0Gyfy78d86Hw= - dependencies: - "@jest/console" "^25.5.0" - "@jest/types" "^25.5.0" + "@jest/console" "^26.6.2" + "@jest/types" "^26.6.2" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^25.5.4": - version "25.5.4" - resolved "https://registry.npm.taobao.org/@jest/test-sequencer/download/@jest/test-sequencer-25.5.4.tgz#9b4e685b36954c38d0f052e596d28161bdc8b737" - integrity sha1-m05oWzaVTDjQ8FLlltKBYb3Itzc= +"@jest/test-sequencer@^26.6.3": + version "26.6.3" + resolved "https://registry.npm.taobao.org/@jest/test-sequencer/download/@jest/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + integrity sha1-mOikUQCGOIbQdCBej/3Fp+tYKxc= dependencies: - "@jest/test-result" "^25.5.0" + "@jest/test-result" "^26.6.2" graceful-fs "^4.2.4" - jest-haste-map "^25.5.1" - jest-runner "^25.5.4" - jest-runtime "^25.5.4" + jest-haste-map "^26.6.2" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" -"@jest/transform@^25.5.1": - version "25.5.1" - resolved "https://registry.npm.taobao.org/@jest/transform/download/@jest/transform-25.5.1.tgz#0469ddc17699dd2bf985db55fa0fb9309f5c2db3" - integrity sha1-BGndwXaZ3Sv5hdtV+g+5MJ9cLbM= +"@jest/transform@^26.6.2": + version "26.6.2" + resolved "https://registry.npm.taobao.org/@jest/transform/download/@jest/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + integrity sha1-WsV8X6GtF7Kq6D5z5FgTiU3PLks= dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^25.5.0" + "@jest/types" "^26.6.2" babel-plugin-istanbul "^6.0.0" - chalk "^3.0.0" + chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.4" - jest-haste-map "^25.5.1" - jest-regex-util "^25.2.6" - jest-util "^25.5.0" + jest-haste-map "^26.6.2" + jest-regex-util "^26.0.0" + jest-util "^26.6.2" micromatch "^4.0.2" pirates "^4.0.1" - realpath-native "^2.0.0" slash "^3.0.0" source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/types@^24.9.0": - version "24.9.0" - resolved "https://registry.npm.taobao.org/@jest/types/download/@jest/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" - integrity sha1-Y8smy3UA0Gnlo4lEGnxqtekJ/Fk= +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.npm.taobao.org/@jest/types/download/@jest/types-26.6.2.tgz?cache=0&sync_timestamp=1617381030069&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Ftypes%2Fdownload%2F%40jest%2Ftypes-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha1-vvWlMgMOHYii9abZM/hOlyJu1I4= dependencies: "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^13.0.0" - -"@jest/types@^25.5.0": - version "25.5.0" - resolved "https://registry.npm.taobao.org/@jest/types/download/@jest/types-25.5.0.tgz?cache=0&sync_timestamp=1597057407866&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Ftypes%2Fdownload%2F%40jest%2Ftypes-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" - integrity sha1-TWpHk/e5WZ/DaAh3uFapfbzPKp0= - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" "@types/yargs" "^15.0.0" - chalk "^3.0.0" + chalk "^4.0.0" -"@react-native-community/cli-debugger-ui@^4.9.0": - version "4.9.0" - resolved "https://registry.npm.taobao.org/@react-native-community/cli-debugger-ui/download/@react-native-community/cli-debugger-ui-4.9.0.tgz#4177764ba69243c97aa26829d59d9501acb2bd71" - integrity sha1-QXd2S6aSQ8l6omgp1Z2VAayyvXE= +"@react-native-community/cli-debugger-ui@^5.0.1-alpha.1": + version "5.0.1-alpha.1" + resolved "https://registry.npm.taobao.org/@react-native-community/cli-debugger-ui/download/@react-native-community/cli-debugger-ui-5.0.1-alpha.1.tgz#09a856ccd2954cf16eea59b14dd26ae66720e4e6" + integrity sha1-CahWzNKVTPFu6lmxTdJq5mcg5OY= dependencies: serve-static "^1.13.1" -"@react-native-community/cli-hermes@^4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-4.13.0.tgz#6243ed9c709dad5e523f1ccd7d21066b32f2899d" - integrity sha512-oG+w0Uby6rSGsUkJGLvMQctZ5eVRLLfhf84lLyz942OEDxFRa9U19YJxOe9FmgCKtotbYiM3P/XhK+SVCuerPQ== +"@react-native-community/cli-hermes@^5.0.1-alpha.1": + version "5.0.1-alpha.1" + resolved "https://registry.npm.taobao.org/@react-native-community/cli-hermes/download/@react-native-community/cli-hermes-5.0.1-alpha.1.tgz#3c3836d6e537baa7615618262f8da1686052667f" + integrity sha1-PDg21uU3uqdhVhgmL42haGBSZn8= dependencies: - "@react-native-community/cli-platform-android" "^4.13.0" - "@react-native-community/cli-tools" "^4.13.0" + "@react-native-community/cli-platform-android" "^5.0.1-alpha.1" + "@react-native-community/cli-tools" "^5.0.1-alpha.1" chalk "^3.0.0" hermes-profile-transformer "^0.0.6" ip "^1.1.5" -"@react-native-community/cli-platform-android@^4.10.0", "@react-native-community/cli-platform-android@^4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-4.13.0.tgz#922681ec82ee1aadd993598b814df1152118be02" - integrity sha512-3i8sX8GklEytUZwPnojuoFbCjIRzMugCdzDIdZ9UNmi/OhD4/8mLGO0dgXfT4sMWjZwu3qjy45sFfk2zOAgHbA== +"@react-native-community/cli-platform-android@^5.0.1-alpha.0", "@react-native-community/cli-platform-android@^5.0.1-alpha.1": + version "5.0.1-alpha.1" + resolved "https://registry.npm.taobao.org/@react-native-community/cli-platform-android/download/@react-native-community/cli-platform-android-5.0.1-alpha.1.tgz#343ea5b469ac696268ecc1961ee44b91d1367cd1" + integrity sha1-ND6ltGmsaWJo7MGWHuRLkdE2fNE= dependencies: - "@react-native-community/cli-tools" "^4.13.0" + "@react-native-community/cli-tools" "^5.0.1-alpha.1" chalk "^3.0.0" execa "^1.0.0" fs-extra "^8.1.0" @@ -1269,12 +1484,12 @@ slash "^3.0.0" xmldoc "^1.1.2" -"@react-native-community/cli-platform-ios@^4.10.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-4.13.0.tgz#a738915c68cac86df54e578b59a1311ea62b1aef" - integrity sha512-6THlTu8zp62efkzimfGr3VIuQJ2514o+vScZERJCV1xgEi8XtV7mb/ZKt9o6Y9WGxKKkc0E0b/aVAtgy+L27CA== +"@react-native-community/cli-platform-ios@^5.0.1-alpha.0": + version "5.0.1-alpha.2" + resolved "https://registry.npm.taobao.org/@react-native-community/cli-platform-ios/download/@react-native-community/cli-platform-ios-5.0.1-alpha.2.tgz#58ab0641355cbe68a0d1737dde8c7d66eb0c0e39" + integrity sha1-WKsGQTVcvmig0XN93ox9ZusMDjk= dependencies: - "@react-native-community/cli-tools" "^4.13.0" + "@react-native-community/cli-tools" "^5.0.1-alpha.1" chalk "^3.0.0" glob "^7.1.3" js-yaml "^3.13.1" @@ -1282,24 +1497,25 @@ plist "^3.0.1" xcode "^2.0.0" -"@react-native-community/cli-server-api@^4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-4.13.0.tgz#ef0e53fe0edc7356d62bca725ca47cb368f748a5" - integrity sha512-ER138ChLc1YYX7j9yE6fDm4DdNdsHThr+pla/B6iZoKje1r7TwymDdKaUvOsYalG7sWG9glW3bofcCq+Yh0Dvw== +"@react-native-community/cli-server-api@^5.0.1-alpha.2": + version "5.0.1-alpha.2" + resolved "https://registry.npm.taobao.org/@react-native-community/cli-server-api/download/@react-native-community/cli-server-api-5.0.1-alpha.2.tgz#a82557273bad99d188682169892aaa4b283ba149" + integrity sha1-qCVXJzutmdGIaCFpiSqqSyg7oUk= dependencies: - "@react-native-community/cli-debugger-ui" "^4.9.0" - "@react-native-community/cli-tools" "^4.13.0" + "@react-native-community/cli-debugger-ui" "^5.0.1-alpha.1" + "@react-native-community/cli-tools" "^5.0.1-alpha.1" compression "^1.7.1" connect "^3.6.5" errorhandler "^1.5.0" - pretty-format "^25.1.0" + nocache "^2.1.0" + pretty-format "^26.6.2" serve-static "^1.13.1" ws "^1.1.0" -"@react-native-community/cli-tools@^4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-4.13.0.tgz#b406463d33af16cedc4305a9a9257ed32845cf1b" - integrity sha512-s4f489h5+EJksn4CfheLgv5PGOM0CDmK1UEBLw2t/ncWs3cW2VI7vXzndcd/WJHTv3GntJhXDcJMuL+Z2IAOgg== +"@react-native-community/cli-tools@^5.0.1-alpha.1": + version "5.0.1-alpha.1" + resolved "https://registry.npm.taobao.org/@react-native-community/cli-tools/download/@react-native-community/cli-tools-5.0.1-alpha.1.tgz#b8ceed3ee5f1c2c7d860518da3dd919dc5953870" + integrity sha1-uM7tPuXxwsfYYFGNo92RncWVOHA= dependencies: chalk "^3.0.0" lodash "^4.17.15" @@ -1308,22 +1524,24 @@ open "^6.2.0" shell-quote "1.6.1" -"@react-native-community/cli-types@^4.10.1": - version "4.10.1" - resolved "https://registry.npm.taobao.org/@react-native-community/cli-types/download/@react-native-community/cli-types-4.10.1.tgz#d68a2dcd1649d3b3774823c64e5e9ce55bfbe1c9" - integrity sha1-1ootzRZJ07N3SCPGTl6c5Vv74ck= - -"@react-native-community/cli@^4.10.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-4.13.0.tgz#04d5032f9b2b423c61ceef6be83b1bcc8a37db75" - integrity sha512-R+1VehIQ6VTLf+e7YOwzJk0F9tstfeSC4xy7oT6GSgB3FnXbTJGHFUp4siyO68Ae/gzGqt8SiUO145teWkP+ZA== +"@react-native-community/cli-types@^5.0.1-alpha.1": + version "5.0.1-alpha.1" + resolved "https://registry.npm.taobao.org/@react-native-community/cli-types/download/@react-native-community/cli-types-5.0.1-alpha.1.tgz#e8cf69966cf4e0fb5dda9bc708a52980ed1f8896" + integrity sha1-6M9plmz04Ptd2pvHCKUpgO0fiJY= dependencies: - "@hapi/joi" "^15.0.3" - "@react-native-community/cli-debugger-ui" "^4.9.0" - "@react-native-community/cli-hermes" "^4.13.0" - "@react-native-community/cli-server-api" "^4.13.0" - "@react-native-community/cli-tools" "^4.13.0" - "@react-native-community/cli-types" "^4.10.1" + ora "^3.4.0" + +"@react-native-community/cli@^5.0.1-alpha.0": + version "5.0.1-alpha.2" + resolved "https://registry.npm.taobao.org/@react-native-community/cli/download/@react-native-community/cli-5.0.1-alpha.2.tgz#7e78378120fd4e264e4b577cbcf5e52b5beaa53b" + integrity sha1-fng3gSD9TiZOS1d8vPXlK1vqpTs= + dependencies: + "@react-native-community/cli-debugger-ui" "^5.0.1-alpha.1" + "@react-native-community/cli-hermes" "^5.0.1-alpha.1" + "@react-native-community/cli-server-api" "^5.0.1-alpha.2" + "@react-native-community/cli-tools" "^5.0.1-alpha.1" + "@react-native-community/cli-types" "^5.0.1-alpha.1" + appdirsjs "^1.2.4" chalk "^3.0.0" command-exists "^1.2.8" commander "^2.19.0" @@ -1335,42 +1553,44 @@ fs-extra "^8.1.0" glob "^7.1.3" graceful-fs "^4.1.3" - inquirer "^3.0.6" + joi "^17.2.1" leven "^3.1.0" lodash "^4.17.15" - metro "^0.58.0" - metro-config "^0.58.0" - metro-core "^0.58.0" - metro-react-native-babel-transformer "^0.58.0" - metro-resolver "^0.58.0" + metro "^0.64.0" + metro-config "^0.64.0" + metro-core "^0.64.0" + metro-react-native-babel-transformer "^0.64.0" + metro-resolver "^0.64.0" + metro-runtime "^0.64.0" minimist "^1.2.0" mkdirp "^0.5.1" node-stream-zip "^1.9.1" ora "^3.4.0" - pretty-format "^25.2.0" + pretty-format "^26.6.2" + prompts "^2.4.0" semver "^6.3.0" serve-static "^1.13.1" strip-ansi "^5.2.0" sudo-prompt "^9.0.0" wcwidth "^1.0.1" -"@react-native-community/eslint-config@^1.1.0": - version "1.1.0" - resolved "https://registry.npm.taobao.org/@react-native-community/eslint-config/download/@react-native-community/eslint-config-1.1.0.tgz#2dacad06dd44d13e778510864473fc6091f080c0" - integrity sha1-LaytBt1E0T53hRCGRHP8YJHwgMA= +"@react-native-community/eslint-config@^2.0.0": + version "2.0.0" + resolved "https://registry.npm.taobao.org/@react-native-community/eslint-config/download/@react-native-community/eslint-config-2.0.0.tgz#35dcc529a274803fc4e0a6b3d6c274551fb91774" + integrity sha1-NdzFKaJ0gD/E4Kaz1sJ0VR+5F3Q= dependencies: "@react-native-community/eslint-plugin" "^1.1.0" - "@typescript-eslint/eslint-plugin" "^2.25.0" - "@typescript-eslint/parser" "^2.25.0" - babel-eslint "10.1.0" + "@typescript-eslint/eslint-plugin" "^3.1.0" + "@typescript-eslint/parser" "^3.1.0" + babel-eslint "^10.1.0" eslint-config-prettier "^6.10.1" eslint-plugin-eslint-comments "^3.1.2" eslint-plugin-flowtype "2.50.3" eslint-plugin-jest "22.4.1" eslint-plugin-prettier "3.1.2" - eslint-plugin-react "7.19.0" - eslint-plugin-react-hooks "^3.0.0" - eslint-plugin-react-native "3.8.1" + eslint-plugin-react "^7.20.0" + eslint-plugin-react-hooks "^4.0.4" + eslint-plugin-react-native "^3.8.1" prettier "^2.0.2" "@react-native-community/eslint-plugin@^1.1.0": @@ -1378,6 +1598,38 @@ resolved "https://registry.npm.taobao.org/@react-native-community/eslint-plugin/download/@react-native-community/eslint-plugin-1.1.0.tgz#e42b1bef12d2415411519fd528e64b593b1363dc" integrity sha1-5Csb7xLSQVQRUZ/VKOZLWTsTY9w= +"@react-native/assets@1.0.0": + version "1.0.0" + resolved "https://registry.npm.taobao.org/@react-native/assets/download/@react-native/assets-1.0.0.tgz#c6f9bf63d274bafc8e970628de24986b30a55c8e" + integrity sha1-xvm/Y9J0uvyOlwYo3iSYazClXI4= + +"@react-native/normalize-color@1.0.0": + version "1.0.0" + resolved "https://registry.npm.taobao.org/@react-native/normalize-color/download/@react-native/normalize-color-1.0.0.tgz#c52a99d4fe01049102d47dc45d40cbde4f720ab6" + integrity sha1-xSqZ1P4BBJEC1H3EXUDL3k9yCrY= + +"@react-native/polyfills@1.0.0": + version "1.0.0" + resolved "https://registry.npm.taobao.org/@react-native/polyfills/download/@react-native/polyfills-1.0.0.tgz#05bb0031533598f9458cf65a502b8df0eecae780" + integrity sha1-BbsAMVM1mPlFjPZaUCuN8O7K54A= + +"@sideway/address@^4.1.0": + version "4.1.1" + resolved "https://registry.npm.taobao.org/@sideway/address/download/@sideway/address-4.1.1.tgz#9e321e74310963fdf8eebfbee09c7bd69972de4d" + integrity sha1-njIedDEJY/347r++4Jx71ply3k0= + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.0": + version "3.0.0" + resolved "https://registry.npm.taobao.org/@sideway/formula/download/@sideway/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" + integrity sha1-/hWK7jLmvV3oUES+YVvAhHigoTw= + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.npm.taobao.org/@sideway/pinpoint/download/@sideway/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha1-z/j/rcNyrSn9P3gneusp5jLMcN8= + "@sinonjs/commons@^1.7.0": version "1.8.1" resolved "https://registry.npm.taobao.org/@sinonjs/commons/download/@sinonjs/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" @@ -1385,6 +1637,24 @@ dependencies: type-detect "4.0.8" +"@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.npm.taobao.org/@sinonjs/fake-timers/download/@sinonjs/fake-timers-6.0.1.tgz?cache=0&sync_timestamp=1617871922644&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40sinonjs%2Ffake-timers%2Fdownload%2F%40sinonjs%2Ffake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha1-KTZ0/MsyYqx4LHqt/eyoaxDHXEA= + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@types/babel__core@^7.0.0": + version "7.1.14" + resolved "https://registry.npm.taobao.org/@types/babel__core/download/@types/babel__core-7.1.14.tgz?cache=0&sync_timestamp=1616202295706&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fbabel__core%2Fdownload%2F%40types%2Fbabel__core-7.1.14.tgz#faaeefc4185ec71c389f4501ee5ec84b170cc402" + integrity sha1-+q7vxBhexxw4n0UB7l7ISxcMxAI= + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + "@types/babel__core@^7.1.7": version "7.1.9" resolved "https://registry.npm.taobao.org/@types/babel__core/download/@types/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" @@ -1418,6 +1688,13 @@ dependencies: "@babel/types" "^7.3.0" +"@types/babel__traverse@^7.0.4": + version "7.11.1" + resolved "https://registry.npm.taobao.org/@types/babel__traverse/download/@types/babel__traverse-7.11.1.tgz#654f6c4f67568e24c23b367e947098c6206fa639" + integrity sha1-ZU9sT2dWjiTCOzZ+lHCYxiBvpjk= + dependencies: + "@babel/types" "^7.3.0" + "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.npm.taobao.org/@types/color-name/download/@types/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" @@ -1452,12 +1729,11 @@ dependencies: "@types/istanbul-lib-coverage" "*" -"@types/istanbul-reports@^1.1.1": - version "1.1.1" - resolved "https://registry.npm.taobao.org/@types/istanbul-reports/download/@types/istanbul-reports-1.1.1.tgz?cache=0&sync_timestamp=1572462171599&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fistanbul-reports%2Fdownload%2F%40types%2Fistanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" - integrity sha1-eoy/akBvNsit2HFiWyeOrwsNJVo= +"@types/istanbul-reports@^3.0.0": + version "3.0.0" + resolved "https://registry.npm.taobao.org/@types/istanbul-reports/download/@types/istanbul-reports-3.0.0.tgz?cache=0&sync_timestamp=1613379558147&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fistanbul-reports%2Fdownload%2F%40types%2Fistanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + integrity sha1-UIsTqjRPpJdiNOdd3cw0klc32CE= dependencies: - "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" "@types/json-schema@^7.0.3": @@ -1475,28 +1751,21 @@ resolved "https://registry.npm.taobao.org/@types/normalize-package-data/download/@types/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" integrity sha1-5IbQ2XOW15vu3QpuM/RTT/a0lz4= -"@types/prettier@^1.19.0": - version "1.19.1" - resolved "https://registry.npm.taobao.org/@types/prettier/download/@types/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" - integrity sha1-M1CYSfjmeeSt0ViVn9sIZEDpVT8= +"@types/prettier@^2.0.0": + version "2.2.3" + resolved "https://registry.npm.taobao.org/@types/prettier/download/@types/prettier-2.2.3.tgz#ef65165aea2924c9359205bf748865b8881753c0" + integrity sha1-72UWWuopJMk1kgW/dIhluIgXU8A= -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.npm.taobao.org/@types/stack-utils/download/@types/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha1-CoUdO9lkmPolwzq3J47TvWXwbD4= +"@types/stack-utils@^2.0.0": + version "2.0.0" + resolved "https://registry.npm.taobao.org/@types/stack-utils/download/@types/stack-utils-2.0.0.tgz?cache=0&sync_timestamp=1613384992957&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fstack-utils%2Fdownload%2F%40types%2Fstack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" + integrity sha1-cDZkC04hzC8lmugmzoQ9J32tjP8= "@types/yargs-parser@*": version "13.1.0" resolved "https://registry.npm.taobao.org/@types/yargs-parser/download/@types/yargs-parser-13.1.0.tgz?cache=0&sync_timestamp=1572465732763&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fyargs-parser%2Fdownload%2F%40types%2Fyargs-parser-13.1.0.tgz#c563aa192f39350a1d18da36c5a8da382bbd8228" integrity sha1-xWOqGS85NQodGNo2xajaOCu9gig= -"@types/yargs@^13.0.0": - version "13.0.3" - resolved "https://registry.npm.taobao.org/@types/yargs/download/@types/yargs-13.0.3.tgz?cache=0&sync_timestamp=1572465731466&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fyargs%2Fdownload%2F%40types%2Fyargs-13.0.3.tgz#76482af3981d4412d65371a318f992d33464a380" - integrity sha1-dkgq85gdRBLWU3GjGPmS0zRko4A= - dependencies: - "@types/yargs-parser" "*" - "@types/yargs@^15.0.0": version "15.0.5" resolved "https://registry.npm.taobao.org/@types/yargs/download/@types/yargs-15.0.5.tgz?cache=0&sync_timestamp=1596842547242&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fyargs%2Fdownload%2F%40types%2Fyargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79" @@ -1504,58 +1773,70 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^2.25.0": - version "2.34.0" - resolved "https://registry.npm.taobao.org/@typescript-eslint/eslint-plugin/download/@typescript-eslint/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" - integrity sha1-b4zopGx96kpvHRcdK7j7rm2sK+k= +"@typescript-eslint/eslint-plugin@^3.1.0": + version "3.10.1" + resolved "https://registry.npm.taobao.org/@typescript-eslint/eslint-plugin/download/@typescript-eslint/eslint-plugin-3.10.1.tgz?cache=0&sync_timestamp=1617693881822&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40typescript-eslint%2Feslint-plugin%2Fdownload%2F%40typescript-eslint%2Feslint-plugin-3.10.1.tgz#7e061338a1383f59edc204c605899f93dc2e2c8f" + integrity sha1-fgYTOKE4P1ntwgTGBYmfk9wuLI8= dependencies: - "@typescript-eslint/experimental-utils" "2.34.0" + "@typescript-eslint/experimental-utils" "3.10.1" + debug "^4.1.1" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" + semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.34.0": - version "2.34.0" - resolved "https://registry.npm.taobao.org/@typescript-eslint/experimental-utils/download/@typescript-eslint/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" - integrity sha1-01JLZEzbQO687KZ/jPPkzJyPmA8= +"@typescript-eslint/experimental-utils@3.10.1": + version "3.10.1" + resolved "https://registry.npm.taobao.org/@typescript-eslint/experimental-utils/download/@typescript-eslint/experimental-utils-3.10.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40typescript-eslint%2Fexperimental-utils%2Fdownload%2F%40typescript-eslint%2Fexperimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686" + integrity sha1-4Xn/yBqA68ri6gTgMy+LJRNFpoY= dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.34.0" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@^2.25.0": - version "2.34.0" - resolved "https://registry.npm.taobao.org/@typescript-eslint/parser/download/@typescript-eslint/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8" - integrity sha1-UCUmMMoxloVCDpo5ygX+GFola8g= +"@typescript-eslint/parser@^3.1.0": + version "3.10.1" + resolved "https://registry.npm.taobao.org/@typescript-eslint/parser/download/@typescript-eslint/parser-3.10.1.tgz?cache=0&sync_timestamp=1617696439855&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40typescript-eslint%2Fparser%2Fdownload%2F%40typescript-eslint%2Fparser-3.10.1.tgz#1883858e83e8b442627e1ac6f408925211155467" + integrity sha1-GIOFjoPotEJifhrG9AiSUhEVVGc= dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.34.0" - "@typescript-eslint/typescript-estree" "2.34.0" + "@typescript-eslint/experimental-utils" "3.10.1" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.34.0": - version "2.34.0" - resolved "https://registry.npm.taobao.org/@typescript-eslint/typescript-estree/download/@typescript-eslint/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" - integrity sha1-FK62NTs57wcyzH8bgoUpSTfPN9U= +"@typescript-eslint/types@3.10.1": + version "3.10.1" + resolved "https://registry.npm.taobao.org/@typescript-eslint/types/download/@typescript-eslint/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" + integrity sha1-HXRj+nwy2KI6tQioA8ov4m51hyc= + +"@typescript-eslint/typescript-estree@3.10.1": + version "3.10.1" + resolved "https://registry.npm.taobao.org/@typescript-eslint/typescript-estree/download/@typescript-eslint/typescript-estree-3.10.1.tgz?cache=0&sync_timestamp=1617696449609&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40typescript-eslint%2Ftypescript-estree%2Fdownload%2F%40typescript-eslint%2Ftypescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" + integrity sha1-/QBhzDit1PrUUTbWVECFafNluFM= dependencies: + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/visitor-keys" "3.10.1" debug "^4.1.1" - eslint-visitor-keys "^1.1.0" glob "^7.1.6" is-glob "^4.0.1" lodash "^4.17.15" semver "^7.3.2" tsutils "^3.17.1" -abab@^2.0.0: - version "2.0.3" - resolved "https://registry.npm.taobao.org/abab/download/abab-2.0.3.tgz?cache=0&sync_timestamp=1573609736055&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fabab%2Fdownload%2Fabab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" - integrity sha1-Yj4gdeAustPyR15J+ZyRhGRnkHo= +"@typescript-eslint/visitor-keys@3.10.1": + version "3.10.1" + resolved "https://registry.npm.taobao.org/@typescript-eslint/visitor-keys/download/@typescript-eslint/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" + integrity sha1-zUJ0dz4+tjsuhwrGAidEh+zR6TE= + dependencies: + eslint-visitor-keys "^1.1.0" -abbrev@1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/abbrev/download/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg= +abab@^2.0.3, abab@^2.0.5: + version "2.0.5" + resolved "https://registry.npm.taobao.org/abab/download/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha1-wLZ4+zLWD8EhnHhNaoJv44Wut5o= abort-controller@^3.0.0: version "3.0.0" @@ -1569,7 +1850,7 @@ absolute-path@^0.0.0: resolved "https://registry.npm.taobao.org/absolute-path/download/absolute-path-0.0.0.tgz#a78762fbdadfb5297be99b15d35a785b2f095bf7" integrity sha1-p4di+9rftSl76ZsV01p4Wy8JW/c= -accepts@~1.3.5, accepts@~1.3.7: +accepts@^1.3.7, accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" integrity sha1-UxvHJlF6OytB+FACHGzBXqq1B80= @@ -1577,33 +1858,33 @@ accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-globals@^4.3.2: - version "4.3.4" - resolved "https://registry.npm.taobao.org/acorn-globals/download/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha1-n6GSat3BHJcwjE5m163Q1Awycuc= +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.npm.taobao.org/acorn-globals/download/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha1-Rs3Tnw+P8IqHZhm1X1rIptx3C0U= dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" + acorn "^7.1.1" + acorn-walk "^7.1.1" -acorn-jsx@^5.1.0: - version "5.1.0" - resolved "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.1.0.tgz?cache=0&sync_timestamp=1570991888898&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-jsx%2Fdownload%2Facorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" - integrity sha1-KUrbcbVzmLBoABXwo4xWPuHbU4Q= +acorn-jsx@^5.3.1: + version "5.3.1" + resolved "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.3.1.tgz?cache=0&sync_timestamp=1599499235340&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-jsx%2Fdownload%2Facorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha1-/IZh4Rt6wVOcR9v+oucrOvNNJns= -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.npm.taobao.org/acorn-walk/download/acorn-walk-6.2.0.tgz?cache=0&sync_timestamp=1565683319229&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-walk%2Fdownload%2Facorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha1-Ejy487hMIXHx9/slJhWxx4prGow= +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.npm.taobao.org/acorn-walk/download/acorn-walk-7.2.0.tgz?cache=0&sync_timestamp=1611560672540&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-walk%2Fdownload%2Facorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha1-DeiJpgEgOQmw++B7iTjcIdLpZ7w= -acorn@^6.0.1: - version "6.3.0" - resolved "https://registry.npm.taobao.org/acorn/download/acorn-6.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" - integrity sha1-AIdQkRn/pPwKAEHR6TpBfmjLhW4= +acorn@^7.1.1, acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.npm.taobao.org/acorn/download/acorn-7.4.1.tgz?cache=0&sync_timestamp=1615305995106&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo= -acorn@^7.1.0: - version "7.1.0" - resolved "https://registry.npm.taobao.org/acorn/download/acorn-7.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" - integrity sha1-lJ028sKSU12mAig1hsJHfFfrLWw= +acorn@^8.1.0: + version "8.1.0" + resolved "https://registry.npm.taobao.org/acorn/download/acorn-8.1.0.tgz?cache=0&sync_timestamp=1615305995106&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-8.1.0.tgz#52311fd7037ae119cbb134309e901aa46295b3fe" + integrity sha1-UjEf1wN64RnLsTQwnpAapGKVs/4= ajv@^6.10.0, ajv@^6.10.2: version "6.10.2" @@ -1625,29 +1906,25 @@ ajv@^6.12.3: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.npm.taobao.org/ajv/download/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ= + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + anser@^1.4.9: version "1.4.10" resolved "https://registry.npm.taobao.org/anser/download/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b" integrity sha1-vvo+3fKCaEvQO2Pc2jknrvjC41s= -ansi-colors@^1.0.1: - version "1.1.0" - resolved "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" - integrity sha1-Y3S03V1HGP884npnGjscrQdxMqk= - dependencies: - ansi-wrap "^0.1.0" - -ansi-cyan@^0.1.1: - version "0.1.1" - resolved "https://registry.npm.taobao.org/ansi-cyan/download/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" - integrity sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM= - dependencies: - ansi-wrap "0.1.0" - -ansi-escapes@^3.0.0: - version "3.2.0" - resolved "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-3.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-escapes%2Fdownload%2Fansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha1-h4C5j/nb9WOBUtHx/lwde0RCl2s= +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha1-y7muJWv3UK8eqzRPIpqif+lLo0g= ansi-escapes@^4.2.1: version "4.2.1" @@ -1665,31 +1942,7 @@ ansi-fragments@^0.2.1: slice-ansi "^2.0.0" strip-ansi "^5.0.0" -ansi-gray@^0.1.1: - version "0.1.1" - resolved "https://registry.npm.taobao.org/ansi-gray/download/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" - integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= - dependencies: - ansi-wrap "0.1.0" - -ansi-red@^0.1.1: - version "0.1.1" - resolved "https://registry.npm.taobao.org/ansi-red/download/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" - integrity sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw= - dependencies: - ansi-wrap "0.1.0" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.0.0, ansi-regex@^4.1.0: +ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc= @@ -1714,11 +1967,6 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" -ansi-wrap@0.1.0, ansi-wrap@^0.1.0: - version "0.1.0" - resolved "https://registry.npm.taobao.org/ansi-wrap/download/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" - integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= - anymatch@^2.0.0: version "2.0.0" resolved "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz?cache=0&sync_timestamp=1569897514051&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fanymatch%2Fdownload%2Fanymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -1735,18 +1983,10 @@ anymatch@^3.0.3: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.npm.taobao.org/aproba/download/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha1-aALmJk79GMeQobDVF/DyYnvyyUo= - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.npm.taobao.org/are-we-there-yet/download/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha1-SzXClE8GKov82mZBB2A1D+nd/CE= - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" +appdirsjs@^1.2.4: + version "1.2.4" + resolved "https://registry.npm.taobao.org/appdirsjs/download/appdirsjs-1.2.4.tgz#3ab582acc9fdfaaa0c1f81b3a25422ad4d95f9d4" + integrity sha1-OrWCrMn9+qoMH4GzolQirU2V+dQ= argparse@^1.0.7: version "1.0.10" @@ -1755,51 +1995,35 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -arr-diff@^1.0.1: - version "1.1.0" - resolved "https://registry.npm.taobao.org/arr-diff/download/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" - integrity sha1-aHwydYFjWI/vfeezb6vklesaOZo= - dependencies: - arr-flatten "^1.0.1" - array-slice "^0.2.3" - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-flatten@^1.0.1, arr-flatten@^1.1.0: +arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha1-NgSLv/TntH4TZkQxbJlmnqWukfE= -arr-union@^2.0.1: - version "2.1.0" - resolved "https://registry.npm.taobao.org/arr-union/download/arr-union-2.1.0.tgz#20f9eab5ec70f5c7d215b1077b1c39161d292c7d" - integrity sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0= - arr-union@^3.1.0: version "3.1.0" resolved "https://registry.npm.taobao.org/arr-union/download/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/array-equal/download/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - array-filter@~0.0.0: version "0.0.1" resolved "https://registry.npm.taobao.org/array-filter/download/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= -array-includes@^3.1.1: - version "3.1.1" - resolved "https://registry.npm.taobao.org/array-includes/download/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" - integrity sha1-zdZ+aFK9+cEhVGB4ZzIlXtJFk0g= +array-includes@^3.1.2, array-includes@^3.1.3: + version "3.1.3" + resolved "https://registry.npm.taobao.org/array-includes/download/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" + integrity sha1-x/YZs4KtKvr1Mmzd/cCvxhr3aQo= dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0" + es-abstract "^1.18.0-next.2" + get-intrinsic "^1.1.1" is-string "^1.0.5" array-map@~0.0.0: @@ -1812,17 +2036,22 @@ array-reduce@~0.0.0: resolved "https://registry.npm.taobao.org/array-reduce/download/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= -array-slice@^0.2.3: - version "0.2.3" - resolved "https://registry.npm.taobao.org/array-slice/download/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" - integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -asap@~2.0.3, asap@~2.0.6: +array.prototype.flatmap@^1.2.4: + version "1.2.4" + resolved "https://registry.npm.taobao.org/array.prototype.flatmap/download/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" + integrity sha1-lM/UfMFVbsB0fZf3x3OMWBIgBMk= + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + function-bind "^1.1.1" + +asap@~2.0.6: version "2.0.6" resolved "https://registry.npm.taobao.org/asap/download/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= @@ -1844,11 +2073,23 @@ assign-symbols@^1.0.0: resolved "https://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +ast-types@0.14.2: + version "0.14.2" + resolved "https://registry.npm.taobao.org/ast-types/download/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" + integrity sha1-YAuILfhYPjzU8t9fog+oN1nUvf0= + dependencies: + tslib "^2.0.1" + astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.npm.taobao.org/astral-regex/download/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k= +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha1-3TeelPDbgxCwgpH51kwyCXZmF/0= + async@^2.4.0: version "2.6.3" resolved "https://registry.npm.taobao.org/async/download/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" @@ -1876,9 +2117,14 @@ aws4@^1.8.0: resolved "https://registry.npm.taobao.org/aws4/download/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha1-8OAD2cqef1nHpQiUXXsu+aBKVC8= -babel-eslint@10.1.0: +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.npm.taobao.org/babel-core/download/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha1-laSS3dkPm06aSh2hTrM1uHtjTs4= + +babel-eslint@^10.1.0: version "10.1.0" - resolved "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.1.0.tgz?cache=0&sync_timestamp=1582676908745&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-eslint%2Fdownload%2Fbabel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + resolved "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.1.0.tgz?cache=0&sync_timestamp=1611946434496&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-eslint%2Fdownload%2Fbabel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" integrity sha1-aWjlaKkQt4+zd5zdi2rC9HmUMjI= dependencies: "@babel/code-frame" "^7.0.0" @@ -1888,17 +2134,17 @@ babel-eslint@10.1.0: eslint-visitor-keys "^1.0.0" resolve "^1.12.0" -babel-jest@^25.1.0, babel-jest@^25.5.1: - version "25.5.1" - resolved "https://registry.npm.taobao.org/babel-jest/download/babel-jest-25.5.1.tgz#bc2e6101f849d6f6aec09720ffc7bc5332e62853" - integrity sha1-vC5hAfhJ1vauwJcg/8e8UzLmKFM= +babel-jest@^26.6.3: + version "26.6.3" + resolved "https://registry.npm.taobao.org/babel-jest/download/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + integrity sha1-2H0lywA3V3oMifguV1XF0pPAEFY= dependencies: - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/babel__core" "^7.1.7" babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^25.5.0" - chalk "^3.0.0" + babel-preset-jest "^26.6.2" + chalk "^4.0.0" graceful-fs "^4.2.4" slash "^3.0.0" @@ -1909,6 +2155,13 @@ babel-plugin-dynamic-import-node@^2.3.0: dependencies: object.assign "^4.1.0" +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.npm.taobao.org/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-2.3.3.tgz?cache=0&sync_timestamp=1587495824228&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-plugin-dynamic-import-node%2Fdownload%2Fbabel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha1-hP2hnJduxcbe/vV/lCez3vZuF6M= + dependencies: + object.assign "^4.1.0" + babel-plugin-istanbul@^6.0.0: version "6.0.0" resolved "https://registry.npm.taobao.org/babel-plugin-istanbul/download/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" @@ -1920,13 +2173,14 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^25.5.0: - version "25.5.0" - resolved "https://registry.npm.taobao.org/babel-plugin-jest-hoist/download/babel-plugin-jest-hoist-25.5.0.tgz#129c80ba5c7fc75baf3a45b93e2e372d57ca2677" - integrity sha1-EpyAulx/x1uvOkW5Pi43LVfKJnc= +babel-plugin-jest-hoist@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/babel-plugin-jest-hoist/download/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + integrity sha1-gYW9AwNI0lTG192XQ1Xmoosh5i0= dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: @@ -1934,10 +2188,10 @@ babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: resolved "https://registry.npm.taobao.org/babel-plugin-syntax-trailing-function-commas/download/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" integrity sha1-qiE8FDXiv/62/KhCKH71NK0F1c8= -babel-preset-current-node-syntax@^0.1.2: - version "0.1.3" - resolved "https://registry.npm.taobao.org/babel-preset-current-node-syntax/download/babel-preset-current-node-syntax-0.1.3.tgz#b4b547acddbf963cba555ba9f9cbbb70bfd044da" - integrity sha1-tLVHrN2/ljy6VVup+cu7cL/QRNo= +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/babel-preset-current-node-syntax/download/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha1-tDmSObibKgEfndvj5PQB/EDP9zs= dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" @@ -1950,8 +2204,9 @@ babel-preset-current-node-syntax@^0.1.2: "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-fbjs@^3.2.0, babel-preset-fbjs@^3.3.0: +babel-preset-fbjs@^3.3.0: version "3.3.0" resolved "https://registry.npm.taobao.org/babel-preset-fbjs/download/babel-preset-fbjs-3.3.0.tgz#a6024764ea86c8e06a22d794ca8b69534d263541" integrity sha1-pgJHZOqGyOBqIteUyotpU00mNUE= @@ -1984,13 +2239,13 @@ babel-preset-fbjs@^3.2.0, babel-preset-fbjs@^3.3.0: "@babel/plugin-transform-template-literals" "^7.0.0" babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" -babel-preset-jest@^25.5.0: - version "25.5.0" - resolved "https://registry.npm.taobao.org/babel-preset-jest/download/babel-preset-jest-25.5.0.tgz?cache=0&sync_timestamp=1597057967764&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-preset-jest%2Fdownload%2Fbabel-preset-jest-25.5.0.tgz#c1d7f191829487a907764c65307faa0e66590b49" - integrity sha1-wdfxkYKUh6kHdkxlMH+qDmZZC0k= +babel-preset-jest@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/babel-preset-jest/download/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + integrity sha1-dHhysRcd8DIlJCZYaIHWLTF5j+4= dependencies: - babel-plugin-jest-hoist "^25.5.0" - babel-preset-current-node-syntax "^0.1.2" + babel-plugin-jest-hoist "^26.6.2" + babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: version "1.0.0" @@ -2072,17 +2327,21 @@ braces@^3.0.1: dependencies: fill-range "^7.0.1" -browser-process-hrtime@^0.1.2: - version "0.1.3" - resolved "https://registry.npm.taobao.org/browser-process-hrtime/download/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" - integrity sha1-YW8A+u8d9+wbW/nP4r3DFw8mx7Q= +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/browser-process-hrtime/download/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha1-PJtLfXgsgSHlbxAQbYTA0P/JRiY= -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.npm.taobao.org/browser-resolve/download/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha1-m3y7PQ9RDky4a9vXlhJNKLWJCvY= +browserslist@^4.14.5: + version "4.16.3" + resolved "https://registry.npm.taobao.org/browserslist/download/browserslist-4.16.3.tgz?cache=0&sync_timestamp=1612124911487&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrowserslist%2Fdownload%2Fbrowserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" + integrity sha1-NAqkaUDX24eHSFZ8XeokpI3fNxc= dependencies: - resolve "1.1.7" + caniuse-lite "^1.0.30001181" + colorette "^1.2.1" + electron-to-chromium "^1.3.649" + escalade "^3.1.1" + node-releases "^1.1.70" bser@^2.0.0: version "2.1.1" @@ -2091,11 +2350,6 @@ bser@^2.0.0: dependencies: node-int64 "^0.4.0" -buffer-crc32@^0.2.13: - version "0.2.13" - resolved "https://registry.npm.taobao.org/buffer-crc32/download/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -2121,6 +2375,14 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/call-bind/download/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha1-sdTonmiBGcPJqQOtMKuy9qkZvjw= + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.npm.taobao.org/caller-callsite/download/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" @@ -2150,6 +2412,16 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA= +camelcase@^6.0.0: + version "6.2.0" + resolved "https://registry.npm.taobao.org/camelcase/download/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha1-kkr4gcnVJaydh/QNlk5c6pgqGAk= + +caniuse-lite@^1.0.30001181: + version "1.0.30001208" + resolved "https://registry.npm.taobao.org/caniuse-lite/download/caniuse-lite-1.0.30001208.tgz?cache=0&sync_timestamp=1617866642507&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaniuse-lite%2Fdownload%2Fcaniuse-lite-1.0.30001208.tgz#a999014a35cebd4f98c405930a057a0d75352eb9" + integrity sha1-qZkBSjXOvU+YxAWTCgV6DXU1Lrk= + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.npm.taobao.org/capture-exit/download/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -2162,7 +2434,7 @@ caseless@~0.12.0: resolved "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ= @@ -2179,26 +2451,29 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chardet@^0.4.0: - version "0.4.2" - resolved "https://registry.npm.taobao.org/chardet/download/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" - integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz?cache=0&sync_timestamp=1591687063886&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha1-ThSHCmGNni7dl92DRf2dncMVZGo= + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.npm.taobao.org/chardet/download/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha1-kAlISfCTfy7twkJdDSip5fDLrZ4= - -chownr@^1.1.1: - version "1.1.3" - resolved "https://registry.npm.taobao.org/chownr/download/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" - integrity sha1-Qtg31SOWiNVfMDADpQgjD6ZycUI= +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/char-regex/download/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha1-10Q1giYhf5ge1Y9Hmx1rzClUXc8= ci-info@^2.0.0: version "2.0.0" resolved "https://registry.npm.taobao.org/ci-info/download/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha1-Z6npZL4xpR4V5QENWObxKDQAL0Y= +cjs-module-lexer@^0.6.0: + version "0.6.0" + resolved "https://registry.npm.taobao.org/cjs-module-lexer/download/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + integrity sha1-QYb8yg6uF1lwruhwuf4tbPjVZV8= + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -2216,32 +2491,11 @@ cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha1-JkMFp65JDR0Dvwybp8kl0XU68wc= - dependencies: - restore-cursor "^3.1.0" - cli-spinners@^2.0.0: version "2.2.0" resolved "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.2.0.tgz#e8b988d9206c692302d8ee834e7a85c0144d8f77" integrity sha1-6LmI2SBsaSMC2O6DTnqFwBRNj3c= -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.npm.taobao.org/cli-width/download/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.npm.taobao.org/cliui/download/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U= - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - cliui@^6.0.0: version "6.0.0" resolved "https://registry.npm.taobao.org/cliui/download/cliui-6.0.0.tgz?cache=0&sync_timestamp=1597606287037&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -2261,11 +2515,6 @@ co@^4.6.0: resolved "https://registry.npm.taobao.org/co/download/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcode-point-at%2Fdownload%2Fcode-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.npm.taobao.org/collect-v8-coverage/download/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -2303,16 +2552,21 @@ color-name@~1.1.4: resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI= -color-support@^1.1.3: - version "1.1.3" - resolved "https://registry.npm.taobao.org/color-support/download/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha1-k4NDeaHMmgxh+C9S8NBDIiUb1aI= - colorette@^1.0.7: version "1.1.0" resolved "https://registry.npm.taobao.org/colorette/download/colorette-1.1.0.tgz#1f943e5a357fac10b4e0f5aaef3b14cdc1af6ec7" integrity sha1-H5Q+WjV/rBC04PWq7zsUzcGvbsc= +colorette@^1.2.1: + version "1.2.2" + resolved "https://registry.npm.taobao.org/colorette/download/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" + integrity sha1-y8x51emcrqLb8Q6zom/Ys+as+pQ= + +colors@^1.1.2: + version "1.4.0" + resolved "https://registry.npm.taobao.org/colors/download/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha1-xQSRR51MG9rtLJztMs98fcI2D3g= + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcombined-stream%2Fdownload%2Fcombined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -2370,16 +2624,6 @@ concat-map@0.0.1: resolved "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.6.0: - version "1.6.2" - resolved "https://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ= - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - connect@^3.6.5: version "3.7.0" resolved "https://registry.npm.taobao.org/connect/download/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" @@ -2390,11 +2634,6 @@ connect@^3.6.5: parseurl "~1.3.3" utils-merge "1.0.1" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/console-control-strings/download/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" @@ -2407,16 +2646,6 @@ copy-descriptor@^0.1.0: resolved "https://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-pure@^3.0.0: - version "3.6.5" - resolved "https://registry.npm.taobao.org/core-js-pure/download/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" - integrity sha1-x5519eONvIWmYtke6lK4JW1TuBM= - -core-js@^2.2.2, core-js@^2.4.1: - version "2.6.10" - resolved "https://registry.npm.taobao.org/core-js/download/core-js-2.6.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f" - integrity sha1-iluDkfjMcBPacDQRzltYVwYwDX8= - core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -2432,16 +2661,7 @@ cosmiconfig@^5.0.5, cosmiconfig@^5.1.0: js-yaml "^3.13.1" parse-json "^4.0.0" -cross-spawn@^5.1.0: - version "5.1.0" - resolved "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q= @@ -2452,7 +2672,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0: +cross-spawn@^7.0.0, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-7.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha1-9zqFudXUHQRVUcF34ogtSshXKKY= @@ -2461,7 +2681,7 @@ cross-spawn@^7.0.0: shebang-command "^2.0.0" which "^2.0.1" -cssom@^0.4.1: +cssom@^0.4.4: version "0.4.4" resolved "https://registry.npm.taobao.org/cssom/download/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" integrity sha1-WmbPk9LQtmHYC/akT7ZfXC5OChA= @@ -2471,7 +2691,7 @@ cssom@~0.3.6: resolved "https://registry.npm.taobao.org/cssom/download/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha1-nxJ29bK0Y/IRTT8sdSUK+MGjb0o= -cssstyle@^2.0.0: +cssstyle@^2.3.0: version "2.3.0" resolved "https://registry.npm.taobao.org/cssstyle/download/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" integrity sha1-/2ZaDdvcMYZLCWR/NBY0Q9kLCFI= @@ -2485,14 +2705,14 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/data-urls/download/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha1-Fe4Fgrql4iu1nHcUDaj5x2lju/4= +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/data-urls/download/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha1-FWSFpyljqXD11YIar2Qr7yvy25s= dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" dayjs@^1.8.15: version "1.8.17" @@ -2506,13 +2726,6 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@^3.2.6: - version "3.2.6" - resolved "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha1-6D0X3hbYp++3cX7b5fsQE17uYps= - dependencies: - ms "^2.1.1" - debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -2525,17 +2738,17 @@ decamelize@^1.2.0: resolved "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdecamelize%2Fdownload%2Fdecamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decimal.js@^10.2.1: + version "10.2.1" + resolved "https://registry.npm.taobao.org/decimal.js/download/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" + integrity sha1-I4rnsPDHk9PjzqQQEIs1osAUJqM= + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.npm.taobao.org/deep-extend/download/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw= - -deep-is@~0.1.3: +deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" resolved "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= @@ -2591,11 +2804,6 @@ delayed-stream@~1.0.0: resolved "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/delegates/download/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - denodeify@^1.2.1: version "1.2.1" resolved "https://registry.npm.taobao.org/denodeify/download/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" @@ -2611,20 +2819,15 @@ destroy@~1.0.4: resolved "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.npm.taobao.org/detect-libc/download/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.npm.taobao.org/detect-newline/download/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha1-V29d/GOuGhkv8ZLYrTr2MImRtlE= -diff-sequences@^25.2.6: - version "25.2.6" - resolved "https://registry.npm.taobao.org/diff-sequences/download/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" - integrity sha1-X0Z8AO3TU1K3vKRteSfWDmh6dt0= +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/diff-sequences/download/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha1-SLqZFX3hkjQS7tQdtrbUqpynwLE= doctrine@^2.1.0: version "2.1.0" @@ -2640,12 +2843,12 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/domexception/download/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha1-k3RCZEymoxJh7zbj7Gd/6AVYLJA= +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/domexception/download/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha1-+0Su+6eT4VdLCvau0oAdBXUp8wQ= dependencies: - webidl-conversions "^4.0.2" + webidl-conversions "^5.0.0" ecc-jsbn@~0.1.1: version "0.1.2" @@ -2660,6 +2863,16 @@ ee-first@1.1.1: resolved "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +electron-to-chromium@^1.3.649: + version "1.3.711" + resolved "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.711.tgz#92c3caf7ffed5e18bf63f66b4b57b4db2409c450" + integrity sha1-ksPK9//tXhi/Y/ZrS1e02yQJxFA= + +emittery@^0.7.1: + version "0.7.2" + resolved "https://registry.npm.taobao.org/emittery/download/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha1-JVlZCOE68PVnSrQZOW4vs5TN+oI= + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -2675,13 +2888,6 @@ encodeurl@~1.0.2: resolved "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.npm.taobao.org/encoding/download/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= - dependencies: - iconv-lite "~0.4.13" - end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz?cache=0&sync_timestamp=1569416267505&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fend-of-stream%2Fdownload%2Fend-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -2689,6 +2895,13 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.npm.taobao.org/enquirer/download/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha1-Kn/l3WNKHkElqXXsmU/1RW3Dc00= + dependencies: + ansi-colors "^4.1.1" + envinfo@^7.7.2: version "7.7.3" resolved "https://registry.npm.taobao.org/envinfo/download/envinfo-7.7.3.tgz?cache=0&sync_timestamp=1598316396991&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fenvinfo%2Fdownload%2Fenvinfo-7.7.3.tgz#4b2d8622e3e7366afb8091b23ed95569ea0208cc" @@ -2701,6 +2914,13 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" +error-stack-parser@^2.0.6: + version "2.0.6" + resolved "https://registry.npm.taobao.org/error-stack-parser/download/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" + integrity sha1-WpmnB716TFinl5AtSNgoA+3mqtg= + dependencies: + stackframe "^1.1.1" + errorhandler@^1.5.0: version "1.5.1" resolved "https://registry.npm.taobao.org/errorhandler/download/errorhandler-1.5.1.tgz#b9ba5d17cf90744cd1e851357a6e75bf806a9a91" @@ -2709,40 +2929,27 @@ errorhandler@^1.5.0: accepts "~1.3.7" escape-html "~1.0.3" -es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: - version "1.17.6" - resolved "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" - integrity sha1-kUIHFweFeyysx7iey2cDFsPi1So= +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: + version "1.18.0" + resolved "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" + integrity sha1-q4CzWe7Lft5MKYAAOQvFrD7HtaQ= dependencies: + call-bind "^1.0.2" es-to-primitive "^1.2.1" function-bind "^1.1.1" + get-intrinsic "^1.1.1" has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.0" - is-regex "^1.1.0" - object-inspect "^1.7.0" + has-symbols "^1.0.2" + is-callable "^1.2.3" + is-negative-zero "^2.0.1" + is-regex "^1.1.2" + is-string "^1.0.5" + object-inspect "^1.9.0" object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-abstract@^1.18.0-next.0: - version "1.18.0-next.0" - resolved "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.18.0-next.0.tgz#b302834927e624d8e5837ed48224291f2c66e6fc" - integrity sha1-swKDSSfmJNjlg37UgiQpHyxm5vw= - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.0" - is-negative-zero "^2.0.0" - is-regex "^1.1.1" - object-inspect "^1.8.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.0" es-to-primitive@^1.2.1: version "1.2.1" @@ -2753,12 +2960,17 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npm.taobao.org/escalade/download/escalade-3.1.1.tgz?cache=0&sync_timestamp=1602567557947&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescalade%2Fdownload%2Fescalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha1-2M/ccACWXFoBdLSoLqpcBVJ0LkA= + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@2.0.0: +escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: version "2.0.0" resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-2.0.0.tgz?cache=0&sync_timestamp=1587627212242&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescape-string-regexp%2Fdownload%2Fescape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha1-owME6Z2qMuI7L9IPUbq9B8/8o0Q= @@ -2768,13 +2980,13 @@ escape-string-regexp@^1.0.5: resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@^1.11.1: - version "1.14.3" - resolved "https://registry.npm.taobao.org/escodegen/download/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha1-TnuB+6YVgdyXWC7XjKt/Do1j9QM= +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/escodegen/download/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha1-XjKxKDPoqo+jXhvwvvqJOASEx90= dependencies: esprima "^4.0.1" - estraverse "^4.2.0" + estraverse "^5.2.0" esutils "^2.0.2" optionator "^0.8.1" optionalDependencies: @@ -2814,40 +3026,41 @@ eslint-plugin-prettier@3.1.2: dependencies: prettier-linter-helpers "^1.0.0" -eslint-plugin-react-hooks@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/eslint-plugin-react-hooks/download/eslint-plugin-react-hooks-3.0.0.tgz#9e80c71846eb68dd29c3b21d832728aa66e5bd35" - integrity sha1-noDHGEbraN0pw7IdgycoqmblvTU= +eslint-plugin-react-hooks@^4.0.4: + version "4.2.0" + resolved "https://registry.npm.taobao.org/eslint-plugin-react-hooks/download/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556" + integrity sha1-jCKcJo1GiVYzTJQ7tF/IYCgPVVY= eslint-plugin-react-native-globals@^0.1.1: version "0.1.2" resolved "https://registry.npm.taobao.org/eslint-plugin-react-native-globals/download/eslint-plugin-react-native-globals-0.1.2.tgz#ee1348bc2ceb912303ce6bdbd22e2f045ea86ea2" integrity sha1-7hNIvCzrkSMDzmvb0i4vBF6obqI= -eslint-plugin-react-native@3.8.1: - version "3.8.1" - resolved "https://registry.npm.taobao.org/eslint-plugin-react-native/download/eslint-plugin-react-native-3.8.1.tgz#92811e37191ecb0d29c0f0a0c9e5c943ee573821" - integrity sha1-koEeNxkeyw0pwPCgyeXJQ+5XOCE= +eslint-plugin-react-native@^3.8.1: + version "3.10.0" + resolved "https://registry.npm.taobao.org/eslint-plugin-react-native/download/eslint-plugin-react-native-3.10.0.tgz#240f7e6979a908af3dfd9ba9652434c33f4d64cd" + integrity sha1-JA9+aXmpCK89/ZupZSQ0wz9NZM0= dependencies: + "@babel/traverse" "^7.7.4" eslint-plugin-react-native-globals "^0.1.1" -eslint-plugin-react@7.19.0: - version "7.19.0" - resolved "https://registry.npm.taobao.org/eslint-plugin-react/download/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" - integrity sha1-bQj5ZzYoqmnFVZ0zSJ6FXYNVFmY= +eslint-plugin-react@^7.20.0: + version "7.23.2" + resolved "https://registry.npm.taobao.org/eslint-plugin-react/download/eslint-plugin-react-7.23.2.tgz#2d2291b0f95c03728b55869f01102290e792d494" + integrity sha1-LSKRsPlcA3KLVYafARAikOeS1JQ= dependencies: - array-includes "^3.1.1" + array-includes "^3.1.3" + array.prototype.flatmap "^1.2.4" doctrine "^2.1.0" has "^1.0.3" - jsx-ast-utils "^2.2.3" - object.entries "^1.1.1" - object.fromentries "^2.0.2" - object.values "^1.1.1" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.0.4" + object.entries "^1.1.3" + object.fromentries "^2.0.4" + object.values "^1.1.3" prop-types "^15.7.2" - resolve "^1.15.1" - semver "^6.3.0" - string.prototype.matchall "^4.0.2" - xregexp "^4.3.0" + resolve "^2.0.0-next.3" + string.prototype.matchall "^4.0.4" eslint-scope@^5.0.0: version "5.0.0" @@ -2857,14 +3070,15 @@ eslint-scope@^5.0.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha1-dP7HxU0Hdrb2fgJRBAtYBlZOmB8= +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha1-54blmmbLkrP2wfsNUIqrF0hI9Iw= dependencies: - eslint-visitor-keys "^1.1.0" + esrecurse "^4.3.0" + estraverse "^4.1.1" -eslint-utils@^2.0.0: +eslint-utils@^2.0.0, eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-2.1.0.tgz?cache=0&sync_timestamp=1592222069736&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-utils%2Fdownload%2Feslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" integrity sha1-0t5eA0JOcH3BDHQGjd7a5wh0Gyc= @@ -2876,69 +3090,79 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: resolved "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha1-4qgs6oT/JGrW+1f5veW0ZiFFnsI= -eslint@^6.5.1: - version "6.6.0" - resolved "https://registry.npm.taobao.org/eslint/download/eslint-6.6.0.tgz#4a01a2fb48d32aacef5530ee9c5a78f11a8afd04" - integrity sha1-SgGi+0jTKqzvVTDunFp48RqK/QQ= +eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha1-MOvR73wv3/AcOk8VEESvJfqwUj4= + +eslint-visitor-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha1-If3I+82ceVzAMh8FY3AglXUVEag= + +eslint@7.14.0: + version "7.14.0" + resolved "https://registry.npm.taobao.org/eslint/download/eslint-7.14.0.tgz?cache=0&sync_timestamp=1616793846706&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-7.14.0.tgz#2d2cac1d28174c510a97b377f122a5507958e344" + integrity sha1-LSysHSgXTFEKl7N38SKlUHlY40Q= dependencies: "@babel/code-frame" "^7.0.0" + "@eslint/eslintrc" "^0.2.1" ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" + chalk "^4.0.0" + cross-spawn "^7.0.2" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" + enquirer "^2.3.5" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.0" + esquery "^1.2.0" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" glob-parent "^5.0.0" - globals "^11.7.0" + globals "^12.1.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^7.0.0" is-glob "^4.0.0" js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" + levn "^0.4.1" + lodash "^4.17.19" minimatch "^3.0.4" - mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.2" + optionator "^0.9.1" progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" table "^5.2.3" text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^6.1.2: - version "6.1.2" - resolved "https://registry.npm.taobao.org/espree/download/espree-6.1.2.tgz?cache=0&sync_timestamp=1571624368510&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" - integrity sha1-bCcmUJMrT5HDcU5ee19eLs9HJi0= +espree@^7.3.0: + version "7.3.1" + resolved "https://registry.npm.taobao.org/espree/download/espree-7.3.1.tgz?cache=0&sync_timestamp=1607144113788&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha1-8t8zC3Usb1UBn4vYm3ZgA5wbu7Y= dependencies: - acorn "^7.1.0" - acorn-jsx "^5.1.0" - eslint-visitor-keys "^1.1.0" + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fesprima%2Fdownload%2Fesprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha1-E7BM2z5sXRnfkatph6hpVhmwqnE= -esquery@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/esquery/download/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" - integrity sha1-QGxRZYsfWZGl+bYrHcJbAOPlxwg= +esquery@^1.2.0: + version "1.4.0" + resolved "https://registry.npm.taobao.org/esquery/download/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha1-IUj/w4uC6McFff7UhCWz5h8PJKU= dependencies: - estraverse "^4.0.0" + estraverse "^5.1.0" esrecurse@^4.1.0: version "4.2.1" @@ -2947,11 +3171,23 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha1-eteWTWeauyi+5yzsY3WLHF0smSE= + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.0, estraverse@^4.1.1: version "4.3.0" resolved "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0= +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.npm.taobao.org/estraverse/download/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha1-MH30JUfmzHMk088DwVXVzbjFOIA= + esutils@^2.0.0, esutils@^2.0.2: version "2.0.3" resolved "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fesutils%2Fdownload%2Fesutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -2967,11 +3203,6 @@ event-target-shim@^5.0.0, event-target-shim@^5.0.1: resolved "https://registry.npm.taobao.org/event-target-shim/download/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha1-XU0+vflYPWOlMzzi3rdICrKwV4k= -eventemitter3@^3.0.0: - version "3.1.2" - resolved "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" - integrity sha1-LT1I+cNGaY/Og6hdfWZOmFNd9uc= - exec-sh@^0.3.2: version "0.3.4" resolved "https://registry.npm.taobao.org/exec-sh/download/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" @@ -2990,10 +3221,10 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^3.2.0: - version "3.4.0" - resolved "https://registry.npm.taobao.org/execa/download/execa-3.4.0.tgz?cache=0&sync_timestamp=1594145138347&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" - integrity sha1-wI7UVQ72XYWPrCaf/IVyRG8364k= +execa@^4.0.0: + version "4.1.0" + resolved "https://registry.npm.taobao.org/execa/download/execa-4.1.0.tgz?cache=0&sync_timestamp=1606973838223&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha1-TlSRrRVy8vF6d9OIxshXE1sihHo= dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -3002,7 +3233,6 @@ execa@^3.2.0: merge-stream "^2.0.0" npm-run-path "^4.0.0" onetime "^5.1.0" - p-finally "^2.0.0" signal-exit "^3.0.2" strip-final-newline "^2.0.0" @@ -3024,24 +3254,17 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^25.5.0: - version "25.5.0" - resolved "https://registry.npm.taobao.org/expect/download/expect-25.5.0.tgz#f07f848712a2813bb59167da3fb828ca21f58bba" - integrity sha1-8H+EhxKigTu1kWfaP7goyiH1i7o= +expect@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/expect/download/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha1-xrmWvya/P+GLZ7LQ9R/JgbqTRBc= dependencies: - "@jest/types" "^25.5.0" + "@jest/types" "^26.6.2" ansi-styles "^4.0.0" - jest-get-type "^25.2.6" - jest-matcher-utils "^25.5.0" - jest-message-util "^25.5.0" - jest-regex-util "^25.2.6" - -extend-shallow@^1.1.2: - version "1.1.4" - resolved "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" - integrity sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE= - dependencies: - kind-of "^1.1.0" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" extend-shallow@^2.0.1: version "2.0.1" @@ -3063,24 +3286,6 @@ extend@~3.0.2: resolved "https://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo= -external-editor@^2.0.4: - version "2.2.0" - resolved "https://registry.npm.taobao.org/external-editor/download/external-editor-2.2.0.tgz?cache=0&sync_timestamp=1562602917731&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexternal-editor%2Fdownload%2Fexternal-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" - integrity sha1-BFURz9jRM/OEZnPRBHwVTiFK09U= - dependencies: - chardet "^0.4.0" - iconv-lite "^0.4.17" - tmp "^0.0.33" - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.npm.taobao.org/external-editor/download/external-editor-3.1.0.tgz?cache=0&sync_timestamp=1562602917731&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexternal-editor%2Fdownload%2Fexternal-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha1-ywP3QL764D6k0oPK7SdBqD8zVJU= - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -3105,16 +3310,6 @@ extsprintf@^1.2.0: resolved "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= -fancy-log@^1.3.2: - version "1.3.3" - resolved "https://registry.npm.taobao.org/fancy-log/download/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" - integrity sha1-28GRVPVYaQFQojlToK29A1vkX8c= - dependencies: - ansi-gray "^0.1.1" - color-support "^1.1.3" - parse-node-version "^1.0.0" - time-stamp "^1.0.0" - fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" @@ -3135,7 +3330,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -3147,55 +3342,6 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" -fbjs-css-vars@^1.0.0: - version "1.0.2" - resolved "https://registry.npm.taobao.org/fbjs-css-vars/download/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" - integrity sha1-IWVRE2rgL+JVkyw+yHdfGOLAeLg= - -fbjs-scripts@^1.1.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/fbjs-scripts/download/fbjs-scripts-1.2.0.tgz#069a0c0634242d10031c6460ef1fccefcdae8b27" - integrity sha1-BpoMBjQkLRADHGRg7x/M782uiyc= - dependencies: - "@babel/core" "^7.0.0" - ansi-colors "^1.0.1" - babel-preset-fbjs "^3.2.0" - core-js "^2.4.1" - cross-spawn "^5.1.0" - fancy-log "^1.3.2" - object-assign "^4.0.1" - plugin-error "^0.1.2" - semver "^5.1.0" - through2 "^2.0.0" - -fbjs@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/fbjs/download/fbjs-1.0.0.tgz#52c215e0883a3c86af2a7a776ed51525ae8e0a5a" - integrity sha1-UsIV4Ig6PIavKnp3btUVJa6OClo= - dependencies: - core-js "^2.4.1" - fbjs-css-vars "^1.0.0" - isomorphic-fetch "^2.1.1" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.18" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/figures/download/figures-2.0.0.tgz?cache=0&sync_timestamp=1571715201547&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffigures%2Fdownload%2Ffigures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - -figures@^3.0.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/figures/download/figures-3.1.0.tgz?cache=0&sync_timestamp=1571715201547&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffigures%2Fdownload%2Ffigures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" - integrity sha1-SxmN0H2NcVMGQoZK8tRd2eRZxOw= - dependencies: - escape-string-regexp "^1.0.5" - file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -3271,6 +3417,16 @@ flatted@^2.0.0: resolved "https://registry.npm.taobao.org/flatted/download/flatted-2.0.1.tgz?cache=0&sync_timestamp=1561466276595&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fflatted%2Fdownload%2Fflatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" integrity sha1-aeV8qo8OrLwoHS4stFjUb9tEngg= +flow-parser@0.*: + version "0.148.0" + resolved "https://registry.npm.taobao.org/flow-parser/download/flow-parser-0.148.0.tgz#7f685b4f3cb7a23de63b065b20e37872351911d0" + integrity sha1-f2hbTzy3oj3mOwZbION4cjUZEdA= + +flow-parser@^0.121.0: + version "0.121.0" + resolved "https://registry.npm.taobao.org/flow-parser/download/flow-parser-0.121.0.tgz#9f9898eaec91a9f7c323e9e992d81ab5c58e618f" + integrity sha1-n5iY6uyRqffDI+npktgatcWOYY8= + for-in@^1.0.2: version "1.0.2" resolved "https://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -3320,26 +3476,11 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.npm.taobao.org/fs-minipass/download/fs-minipass-1.2.7.tgz?cache=0&sync_timestamp=1569874948455&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffs-minipass%2Fdownload%2Ffs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha1-zP+FcIQef+QmVpPaiJNsVa7X98c= - dependencies: - minipass "^2.6.0" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.7: - version "1.2.9" - resolved "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.9.tgz?cache=0&sync_timestamp=1573319602177&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" - integrity sha1-P17WZYPM1vQAtaANtvfoYTY+OI8= - dependencies: - nan "^2.12.1" - node-pre-gyp "^0.12.0" - fsevents@^2.1.2: version "2.1.3" resolved "https://registry.npm.taobao.org/fsevents/download/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" @@ -3355,30 +3496,30 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.npm.taobao.org/gauge/download/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.npm.taobao.org/gensync/download/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" integrity sha1-WPQ2H/mH5f9uHnohCCeqNx6qwmk= +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npm.taobao.org/gensync/download/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha1-MqbudsPX9S1GsrGuXZP+qFgKJeA= + get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha1-T5RBKoLbMvNuOwuXQfipf+sDH34= +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/get-intrinsic/download/get-intrinsic-1.1.1.tgz?cache=0&sync_timestamp=1612365112407&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-intrinsic%2Fdownload%2Fget-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha1-FfWfN2+FXERpY5SPDSTNNje0q8Y= + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.npm.taobao.org/get-package-type/download/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -3422,7 +3563,7 @@ glob-parent@^5.0.0: dependencies: is-glob "^4.0.1" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.npm.taobao.org/glob/download/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY= @@ -3434,12 +3575,19 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^11.1.0, globals@^11.7.0: +globals@^11.1.0: version "11.12.0" resolved "https://registry.npm.taobao.org/globals/download/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4= -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9: +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.npm.taobao.org/globals/download/globals-12.4.0.tgz?cache=0&sync_timestamp=1617958244123&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobals%2Fdownload%2Fglobals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha1-oYgTV2pBsAokqX5/gVkYwuGZJfg= + dependencies: + type-fest "^0.8.1" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.2.3" resolved "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha1-ShL/G2A3bvCYYsIJPt2Qgyi+hCM= @@ -3467,6 +3615,11 @@ har-validator@~5.1.3: ajv "^6.12.3" har-schema "^2.0.0" +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/has-bigints/download/has-bigints-1.0.1.tgz?cache=0&sync_timestamp=1615461262702&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-bigints%2Fdownload%2Fhas-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha1-ZP5qywIGc+O3jbA1pa9pqp0HsRM= + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -3487,10 +3640,10 @@ has-symbols@^1.0.1: resolved "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg= -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.npm.taobao.org/has-unicode/download/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= +has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha1-Fl0wcMADCXUqEjakeTMeOsVvFCM= has-value@^0.3.1: version "0.3.1" @@ -3530,10 +3683,10 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hermes-engine@~0.5.0: - version "0.5.1" - resolved "https://registry.npm.taobao.org/hermes-engine/download/hermes-engine-0.5.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhermes-engine%2Fdownload%2Fhermes-engine-0.5.1.tgz#601115e4b1e0a17d9aa91243b96277de4e926e09" - integrity sha1-YBEV5LHgoX2aqRJDuWJ33k6Sbgk= +hermes-engine@~0.7.0: + version "0.7.2" + resolved "https://registry.npm.taobao.org/hermes-engine/download/hermes-engine-0.7.2.tgz#303cd99d23f68e708b223aec2d49d5872985388b" + integrity sha1-MDzZnSP2jnCLIjrsLUnVhymFOIs= hermes-profile-transformer@^0.0.6: version "0.0.6" @@ -3547,12 +3700,12 @@ hosted-git-info@^2.1.4: resolved "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" integrity sha1-dZz88sTRVq3lmwst+r3cQqa5xww= -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/html-encoding-sniffer/download/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha1-5w2EuU2lOqN14R/jo1G+ZkLKRvg= +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/html-encoding-sniffer/download/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha1-QqbcT9M/ACgRduiyN1nKTk+hhfM= dependencies: - whatwg-encoding "^1.0.1" + whatwg-encoding "^1.0.5" html-escaper@^2.0.0: version "2.0.2" @@ -3584,20 +3737,13 @@ human-signals@^1.1.1: resolved "https://registry.npm.taobao.org/human-signals/download/human-signals-1.1.1.tgz?cache=0&sync_timestamp=1584199048017&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhuman-signals%2Fdownload%2Fhuman-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha1-xbHNFPUK6uCatsWf5jujOV/k36M= -iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha1-ICK0sl+93CHS9SSXSkdKr+czkIs= dependencies: safer-buffer ">= 2.1.2 < 3" -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.npm.taobao.org/ignore-walk/download/ignore-walk-3.0.3.tgz?cache=0&sync_timestamp=1570600490530&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore-walk%2Fdownload%2Fignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha1-AX4kRxhL/q3nwjjkrv3R6PlbHjc= - dependencies: - minimatch "^3.0.4" - ignore@^4.0.6: version "4.0.6" resolved "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -3629,6 +3775,14 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npm.taobao.org/import-fresh/download/import-fresh-3.3.0.tgz?cache=0&sync_timestamp=1608469520031&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha1-NxYsJfy566oublPVtNiM4X2eDCs= + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-local@^3.0.2: version "3.0.2" resolved "https://registry.npm.taobao.org/import-local/download/import-local-3.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-local%2Fdownload%2Fimport-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" @@ -3650,63 +3804,24 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w= -ini@~1.3.0: - version "1.3.5" - resolved "https://registry.npm.taobao.org/ini/download/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc= - -inquirer@^3.0.6: - version "3.3.0" - resolved "https://registry.npm.taobao.org/inquirer/download/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" - integrity sha1-ndLyrXZdyrH/BEO0kUQqILoifck= +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.npm.taobao.org/internal-slot/download/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha1-c0fjB97uovqsKsYgXUvH00ln9Zw= dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.0.4" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rx-lite "^4.0.8" - rx-lite-aggregates "^4.0.8" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - -inquirer@^7.0.0: - version "7.0.0" - resolved "https://registry.npm.taobao.org/inquirer/download/inquirer-7.0.0.tgz#9e2b032dde77da1db5db804758b8fea3a970519a" - integrity sha1-nisDLd532h2124BHWLj+o6lwUZo= - dependencies: - ansi-escapes "^4.2.1" - chalk "^2.4.2" - cli-cursor "^3.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.15" - mute-stream "0.0.8" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^4.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -internal-slot@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/internal-slot/download/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" - integrity sha1-nC6fs82OXkJWxvRf4xAGf8+jeKM= - dependencies: - es-abstract "^1.17.0-next.1" + get-intrinsic "^1.1.0" has "^1.0.3" - side-channel "^1.0.2" + side-channel "^1.0.4" + +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.npm.taobao.org/interpret/download/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha1-Zlq4vE2iendKQFhOgS4+D6RbGh4= invariant@2.2.4, invariant@^2.2.4: version "2.2.4" @@ -3715,11 +3830,6 @@ invariant@2.2.4, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/ip-regex/download/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -3744,6 +3854,18 @@ is-arrayish@^0.2.1: resolved "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-bigint@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/is-bigint/download/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" + integrity sha1-aSMFHfy8dkJ4VAuc4OazITql68I= + +is-boolean-object@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/is-boolean-object/download/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" + integrity sha1-4qqtOjqPyjTCj27uE1sVbtJYf/A= + dependencies: + call-bind "^1.0.0" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -3754,10 +3876,10 @@ is-callable@^1.1.4: resolved "https://registry.npm.taobao.org/is-callable/download/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha1-HhrfIZ4e62hNaR+dagX/DTCiTXU= -is-callable@^1.2.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/is-callable/download/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" - integrity sha1-gzNlYLVKOONeOi33r9BFTWkUaLs= +is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.npm.taobao.org/is-callable/download/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha1-ix4FALc6HXbHBIdjbzaOUZ3o244= is-ci@^2.0.0: version "2.0.0" @@ -3766,6 +3888,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-core-module@^2.2.0: + version "2.2.0" + resolved "https://registry.npm.taobao.org/is-core-module/download/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha1-lwN+89UiJNhRY/VZeytj2a/tmBo= + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -3830,13 +3959,6 @@ is-extglob@^2.1.1: resolved "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -3859,10 +3981,15 @@ is-glob@^4.0.0, is-glob@^4.0.1: dependencies: is-extglob "^2.1.1" -is-negative-zero@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/is-negative-zero/download/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" - integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/is-negative-zero/download/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha1-PedGwY3aIxkkGlNnWQjY92bxHCQ= + +is-number-object@^1.0.4: + version "1.0.4" + resolved "https://registry.npm.taobao.org/is-number-object/download/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha1-NqyV50HPGLKD/B3fXoPaeY4+wZc= is-number@^3.0.0: version "3.0.0" @@ -3883,19 +4010,20 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/is-promise/download/is-promise-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-promise%2Fdownload%2Fis-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= +is-potential-custom-element-name@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/is-potential-custom-element-name/download/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha1-Fx7W8Z46xVQ5Tt94yqBXhKRb67U= -is-regex@^1.1.0, is-regex@^1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/is-regex/download/is-regex-1.1.1.tgz?cache=0&sync_timestamp=1596555758915&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-regex%2Fdownload%2Fis-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" - integrity sha1-xvmKrMVG9s7FRooHt7FTq1ZKV7k= +is-regex@^1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/is-regex/download/is-regex-1.1.2.tgz?cache=0&sync_timestamp=1612218345989&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-regex%2Fdownload%2Fis-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" + integrity sha1-gcjr3k2xQvLPHFP8htakV4gmYlE= dependencies: + call-bind "^1.0.2" has-symbols "^1.0.1" -is-stream@^1.0.1, is-stream@^1.1.0: +is-stream@^1.1.0: version "1.1.0" resolved "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= @@ -3917,6 +4045,13 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.0" +is-symbol@^1.0.3: + version "1.0.3" + resolved "https://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.3.tgz?cache=0&sync_timestamp=1574296542615&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-symbol%2Fdownload%2Fis-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc= + dependencies: + has-symbols "^1.0.1" + is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -3932,7 +4067,7 @@ is-wsl@^1.1.0: resolved "https://registry.npm.taobao.org/is-wsl/download/is-wsl-1.1.0.tgz?cache=0&sync_timestamp=1569219566107&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-wsl%2Fdownload%2Fis-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -is-wsl@^2.1.1: +is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.npm.taobao.org/is-wsl/download/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha1-dKTHbnfKn9P5MvKQwX6jJs0VcnE= @@ -3961,14 +4096,6 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isomorphic-fetch@^2.1.1: - version "2.2.1" - resolved "https://registry.npm.taobao.org/isomorphic-fetch/download/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" - integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= - dependencies: - node-fetch "^1.0.1" - whatwg-fetch ">=0.10.0" - isstream@~0.1.2: version "0.1.2" resolved "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -3979,7 +4106,7 @@ istanbul-lib-coverage@^3.0.0: resolved "https://registry.npm.taobao.org/istanbul-lib-coverage/download/istanbul-lib-coverage-3.0.0.tgz?cache=0&sync_timestamp=1577063499817&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fistanbul-lib-coverage%2Fdownload%2Fistanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" integrity sha1-9ZRKN8cLVQsCp4pcOyBVsoDOyOw= -istanbul-lib-instrument@^4.0.0: +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: version "4.0.3" resolved "https://registry.npm.taobao.org/istanbul-lib-instrument/download/istanbul-lib-instrument-4.0.3.tgz?cache=0&sync_timestamp=1589107503451&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fistanbul-lib-instrument%2Fdownload%2Fistanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" integrity sha1-hzxv/4l0UBGCIndGlqPyiQLXfB0= @@ -4015,463 +4142,395 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^25.5.0: - version "25.5.0" - resolved "https://registry.npm.taobao.org/jest-changed-files/download/jest-changed-files-25.5.0.tgz#141cc23567ceb3f534526f8614ba39421383634c" - integrity sha1-FBzCNWfOs/U0Um+GFLo5QhODY0w= +jest-changed-files@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/jest-changed-files/download/jest-changed-files-26.6.2.tgz?cache=0&sync_timestamp=1617371669173&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-changed-files%2Fdownload%2Fjest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + integrity sha1-9hmEeeHMZvIvmuHiKsqgtCnAQtA= dependencies: - "@jest/types" "^25.5.0" - execa "^3.2.0" + "@jest/types" "^26.6.2" + execa "^4.0.0" throat "^5.0.0" -jest-cli@^25.5.4: - version "25.5.4" - resolved "https://registry.npm.taobao.org/jest-cli/download/jest-cli-25.5.4.tgz?cache=0&sync_timestamp=1598100045347&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-cli%2Fdownload%2Fjest-cli-25.5.4.tgz#b9f1a84d1301a92c5c217684cb79840831db9f0d" - integrity sha1-ufGoTRMBqSxcIXaEy3mECDHbnw0= +jest-cli@^26.6.3: + version "26.6.3" + resolved "https://registry.npm.taobao.org/jest-cli/download/jest-cli-26.6.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-cli%2Fdownload%2Fjest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + integrity sha1-QxF8/vJLxM1pGhdKh5alMuE16So= dependencies: - "@jest/core" "^25.5.4" - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/core" "^26.6.3" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^25.5.4" - jest-util "^25.5.0" - jest-validate "^25.5.0" + jest-config "^26.6.3" + jest-util "^26.6.2" + jest-validate "^26.6.2" prompts "^2.0.1" - realpath-native "^2.0.0" - yargs "^15.3.1" + yargs "^15.4.1" -jest-config@^25.5.4: - version "25.5.4" - resolved "https://registry.npm.taobao.org/jest-config/download/jest-config-25.5.4.tgz#38e2057b3f976ef7309b2b2c8dcd2a708a67f02c" - integrity sha1-OOIFez+Xbvcwmyssjc0qcIpn8Cw= +jest-config@^26.6.3: + version "26.6.3" + resolved "https://registry.npm.taobao.org/jest-config/download/jest-config-26.6.3.tgz?cache=0&sync_timestamp=1617376023212&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-config%2Fdownload%2Fjest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + integrity sha1-ZPQURO756wPcUdXFO3XIxx9kU0k= dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^25.5.4" - "@jest/types" "^25.5.0" - babel-jest "^25.5.1" - chalk "^3.0.0" + "@jest/test-sequencer" "^26.6.3" + "@jest/types" "^26.6.2" + babel-jest "^26.6.3" + chalk "^4.0.0" deepmerge "^4.2.2" glob "^7.1.1" graceful-fs "^4.2.4" - jest-environment-jsdom "^25.5.0" - jest-environment-node "^25.5.0" - jest-get-type "^25.2.6" - jest-jasmine2 "^25.5.4" - jest-regex-util "^25.2.6" - jest-resolve "^25.5.1" - jest-util "^25.5.0" - jest-validate "^25.5.0" + jest-environment-jsdom "^26.6.2" + jest-environment-node "^26.6.2" + jest-get-type "^26.3.0" + jest-jasmine2 "^26.6.3" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" micromatch "^4.0.2" - pretty-format "^25.5.0" - realpath-native "^2.0.0" + pretty-format "^26.6.2" -jest-diff@^25.5.0: - version "25.5.0" - resolved "https://registry.npm.taobao.org/jest-diff/download/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" - integrity sha1-HdJu1k+WZnwGjO8Ca2d9+gGvz6k= +jest-diff@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/jest-diff/download/jest-diff-26.6.2.tgz?cache=0&sync_timestamp=1617371665129&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-diff%2Fdownload%2Fjest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha1-GqdGi1LDpo19XF/c381eSb0WQ5Q= dependencies: - chalk "^3.0.0" - diff-sequences "^25.2.6" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" + chalk "^4.0.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" -jest-docblock@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-docblock/download/jest-docblock-25.3.0.tgz#8b777a27e3477cd77a168c05290c471a575623ef" - integrity sha1-i3d6J+NHfNd6FowFKQxHGldWI+8= +jest-docblock@^26.0.0: + version "26.0.0" + resolved "https://registry.npm.taobao.org/jest-docblock/download/jest-docblock-26.0.0.tgz?cache=0&sync_timestamp=1607352761462&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-docblock%2Fdownload%2Fjest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" + integrity sha1-Pi+iCJn8koyxO9D/aL03EaNoibU= dependencies: detect-newline "^3.0.0" -jest-each@^25.5.0: - version "25.5.0" - resolved "https://registry.npm.taobao.org/jest-each/download/jest-each-25.5.0.tgz#0c3c2797e8225cb7bec7e4d249dcd96b934be516" - integrity sha1-DDwnl+giXLe+x+TSSdzZa5NL5RY= +jest-each@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/jest-each/download/jest-each-26.6.2.tgz?cache=0&sync_timestamp=1617371669860&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-each%2Fdownload%2Fjest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + integrity sha1-AlJkOKd6Z0AcimOC3+WZmVLBZ8s= dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" - jest-get-type "^25.2.6" - jest-util "^25.5.0" - pretty-format "^25.5.0" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + jest-get-type "^26.3.0" + jest-util "^26.6.2" + pretty-format "^26.6.2" -jest-environment-jsdom@^25.5.0: - version "25.5.0" - resolved "https://registry.npm.taobao.org/jest-environment-jsdom/download/jest-environment-jsdom-25.5.0.tgz?cache=0&sync_timestamp=1597059706037&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-environment-jsdom%2Fdownload%2Fjest-environment-jsdom-25.5.0.tgz#dcbe4da2ea997707997040ecf6e2560aec4e9834" - integrity sha1-3L5NouqZdweZcEDs9uJWCuxOmDQ= +jest-environment-jsdom@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/jest-environment-jsdom/download/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + integrity sha1-eNCf6c8BmjVwCbm34fEB0jvR2j4= dependencies: - "@jest/environment" "^25.5.0" - "@jest/fake-timers" "^25.5.0" - "@jest/types" "^25.5.0" - jest-mock "^25.5.0" - jest-util "^25.5.0" - jsdom "^15.2.1" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + jsdom "^16.4.0" -jest-environment-node@^25.5.0: - version "25.5.0" - resolved "https://registry.npm.taobao.org/jest-environment-node/download/jest-environment-node-25.5.0.tgz?cache=0&sync_timestamp=1597059796557&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-environment-node%2Fdownload%2Fjest-environment-node-25.5.0.tgz#0f55270d94804902988e64adca37c6ce0f7d07a1" - integrity sha1-D1UnDZSASQKYjmStyjfGzg99B6E= +jest-environment-node@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/jest-environment-node/download/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha1-gk5Mf7SURkY1bxGsdbIpsANfKww= dependencies: - "@jest/environment" "^25.5.0" - "@jest/fake-timers" "^25.5.0" - "@jest/types" "^25.5.0" - jest-mock "^25.5.0" - jest-util "^25.5.0" - semver "^6.3.0" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" -jest-get-type@^24.9.0: - version "24.9.0" - resolved "https://registry.npm.taobao.org/jest-get-type/download/jest-get-type-24.9.0.tgz?cache=0&sync_timestamp=1566444325556&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-get-type%2Fdownload%2Fjest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" - integrity sha1-FoSgyKUPLkkBtmRK6GH1ee7S7w4= +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.npm.taobao.org/jest-get-type/download/jest-get-type-26.3.0.tgz?cache=0&sync_timestamp=1607352755729&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-get-type%2Fdownload%2Fjest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha1-6X3Dw/U8K0Bsp6+u1Ek7HQmRmeA= -jest-get-type@^25.2.6: - version "25.2.6" - resolved "https://registry.npm.taobao.org/jest-get-type/download/jest-get-type-25.2.6.tgz?cache=0&sync_timestamp=1597059790667&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-get-type%2Fdownload%2Fjest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" - integrity sha1-Cwoy+riQi0TVCL6BaBSH26u42Hc= - -jest-haste-map@^24.7.1: - version "24.9.0" - resolved "https://registry.npm.taobao.org/jest-haste-map/download/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" - integrity sha1-s4pdZCdJNOIfpBeump++t3zqrH0= +jest-haste-map@^26.5.2, jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/jest-haste-map/download/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + integrity sha1-3X5g/n3A6fkRoj15xf9/tcLK/qo= dependencies: - "@jest/types" "^24.9.0" - anymatch "^2.0.0" - fb-watchman "^2.0.0" - graceful-fs "^4.1.15" - invariant "^2.2.4" - jest-serializer "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.9.0" - micromatch "^3.1.10" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^1.2.7" - -jest-haste-map@^25.5.1: - version "25.5.1" - resolved "https://registry.npm.taobao.org/jest-haste-map/download/jest-haste-map-25.5.1.tgz?cache=0&sync_timestamp=1597059792683&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-haste-map%2Fdownload%2Fjest-haste-map-25.5.1.tgz#1df10f716c1d94e60a1ebf7798c9fb3da2620943" - integrity sha1-HfEPcWwdlOYKHr93mMn7PaJiCUM= - dependencies: - "@jest/types" "^25.5.0" + "@jest/types" "^26.6.2" "@types/graceful-fs" "^4.1.2" + "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.4" - jest-serializer "^25.5.0" - jest-util "^25.5.0" - jest-worker "^25.5.0" + jest-regex-util "^26.0.0" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" - which "^2.0.2" optionalDependencies: fsevents "^2.1.2" -jest-jasmine2@^25.5.4: - version "25.5.4" - resolved "https://registry.npm.taobao.org/jest-jasmine2/download/jest-jasmine2-25.5.4.tgz#66ca8b328fb1a3c5364816f8958f6970a8526968" - integrity sha1-ZsqLMo+xo8U2SBb4lY9pcKhSaWg= +jest-jasmine2@^26.6.3: + version "26.6.3" + resolved "https://registry.npm.taobao.org/jest-jasmine2/download/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + integrity sha1-rcPPkV3qy1ISyTufNUfNEpWPLt0= dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^25.5.0" - "@jest/source-map" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/environment" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" co "^4.6.0" - expect "^25.5.0" + expect "^26.6.2" is-generator-fn "^2.0.0" - jest-each "^25.5.0" - jest-matcher-utils "^25.5.0" - jest-message-util "^25.5.0" - jest-runtime "^25.5.4" - jest-snapshot "^25.5.1" - jest-util "^25.5.0" - pretty-format "^25.5.0" + jest-each "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" throat "^5.0.0" -jest-leak-detector@^25.5.0: - version "25.5.0" - resolved "https://registry.npm.taobao.org/jest-leak-detector/download/jest-leak-detector-25.5.0.tgz#2291c6294b0ce404241bb56fe60e2d0c3e34f0bb" - integrity sha1-IpHGKUsM5AQkG7Vv5g4tDD408Ls= +jest-leak-detector@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/jest-leak-detector/download/jest-leak-detector-26.6.2.tgz?cache=0&sync_timestamp=1617381043341&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-leak-detector%2Fdownload%2Fjest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + integrity sha1-dxfPEYuSI48uumUFTIoMnGU6ka8= dependencies: - jest-get-type "^25.2.6" - pretty-format "^25.5.0" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" -jest-matcher-utils@^25.5.0: - version "25.5.0" - resolved "https://registry.npm.taobao.org/jest-matcher-utils/download/jest-matcher-utils-25.5.0.tgz#fbc98a12d730e5d2453d7f1ed4a4d948e34b7867" - integrity sha1-+8mKEtcw5dJFPX8e1KTZSONLeGc= +jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/jest-matcher-utils/download/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha1-jm/W6GPIstMaxkcu6yN7xZXlPno= dependencies: - chalk "^3.0.0" - jest-diff "^25.5.0" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" + chalk "^4.0.0" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" -jest-message-util@^24.9.0: - version "24.9.0" - resolved "https://registry.npm.taobao.org/jest-message-util/download/jest-message-util-24.9.0.tgz?cache=0&sync_timestamp=1566444331213&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-message-util%2Fdownload%2Fjest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" - integrity sha1-Un9UoeOA9eICqNEUmw7IcvQxGeM= +jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/jest-message-util/download/jest-message-util-26.6.2.tgz?cache=0&sync_timestamp=1617376027465&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-message-util%2Fdownload%2Fjest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha1-WBc3RK1vwFBrXSEVC5vlbvABygc= dependencies: "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/stack-utils" "^1.0.1" - chalk "^2.0.1" - micromatch "^3.1.10" - slash "^2.0.0" - stack-utils "^1.0.1" - -jest-message-util@^25.5.0: - version "25.5.0" - resolved "https://registry.npm.taobao.org/jest-message-util/download/jest-message-util-25.5.0.tgz?cache=0&sync_timestamp=1597059792208&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-message-util%2Fdownload%2Fjest-message-util-25.5.0.tgz#ea11d93204cc7ae97456e1d8716251185b8880ea" - integrity sha1-6hHZMgTMeul0VuHYcWJRGFuIgOo= - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^25.5.0" - "@types/stack-utils" "^1.0.1" - chalk "^3.0.0" + "@jest/types" "^26.6.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" graceful-fs "^4.2.4" micromatch "^4.0.2" + pretty-format "^26.6.2" slash "^3.0.0" - stack-utils "^1.0.1" + stack-utils "^2.0.2" -jest-mock@^24.9.0: - version "24.9.0" - resolved "https://registry.npm.taobao.org/jest-mock/download/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" - integrity sha1-wig1VB7jebkIZzrVEIeiGFwT8cY= +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/jest-mock/download/jest-mock-26.6.2.tgz?cache=0&sync_timestamp=1617381030788&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-mock%2Fdownload%2Fjest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha1-1stxKwQe1H/g2bb8NHS8ZUP+swI= dependencies: - "@jest/types" "^24.9.0" + "@jest/types" "^26.6.2" + "@types/node" "*" -jest-mock@^25.5.0: - version "25.5.0" - resolved "https://registry.npm.taobao.org/jest-mock/download/jest-mock-25.5.0.tgz#a91a54dabd14e37ecd61665d6b6e06360a55387a" - integrity sha1-qRpU2r0U437NYWZda24GNgpVOHo= +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.npm.taobao.org/jest-pnp-resolver/download/jest-pnp-resolver-1.2.2.tgz?cache=0&sync_timestamp=1592991874759&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-pnp-resolver%2Fdownload%2Fjest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha1-twSsCuAoqJEIpNBAs/kZ393I4zw= + +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.npm.taobao.org/jest-regex-util/download/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + integrity sha1-0l5xhLNuOf1GbDvEG+CXHoIf7ig= + +jest-resolve-dependencies@^26.6.3: + version "26.6.3" + resolved "https://registry.npm.taobao.org/jest-resolve-dependencies/download/jest-resolve-dependencies-26.6.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-resolve-dependencies%2Fdownload%2Fjest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + integrity sha1-ZoCFnuXSLuXc2WH+SHH1n0x4T7Y= dependencies: - "@jest/types" "^25.5.0" + "@jest/types" "^26.6.2" + jest-regex-util "^26.0.0" + jest-snapshot "^26.6.2" -jest-pnp-resolver@^1.2.1: - version "1.2.1" - resolved "https://registry.npm.taobao.org/jest-pnp-resolver/download/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" - integrity sha1-7NrmBMB3p/vHDe+21RfDwciYkjo= - -jest-regex-util@^25.2.6: - version "25.2.6" - resolved "https://registry.npm.taobao.org/jest-regex-util/download/jest-regex-util-25.2.6.tgz?cache=0&sync_timestamp=1588614905410&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-regex-util%2Fdownload%2Fjest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" - integrity sha1-2EfTi6FdIRjTsGOQBWAo0PL9OWQ= - -jest-resolve-dependencies@^25.5.4: - version "25.5.4" - resolved "https://registry.npm.taobao.org/jest-resolve-dependencies/download/jest-resolve-dependencies-25.5.4.tgz#85501f53957c8e3be446e863a74777b5a17397a7" - integrity sha1-hVAfU5V8jjvkRuhjp0d3taFzl6c= +jest-resolve@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/jest-resolve/download/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + integrity sha1-o6sVFyF/RptQTxtWYDxbtUH7tQc= dependencies: - "@jest/types" "^25.5.0" - jest-regex-util "^25.2.6" - jest-snapshot "^25.5.1" - -jest-resolve@^25.5.1: - version "25.5.1" - resolved "https://registry.npm.taobao.org/jest-resolve/download/jest-resolve-25.5.1.tgz#0e6fbcfa7c26d2a5fe8f456088dc332a79266829" - integrity sha1-Dm+8+nwm0qX+j0VgiNwzKnkmaCk= - dependencies: - "@jest/types" "^25.5.0" - browser-resolve "^1.11.3" - chalk "^3.0.0" + "@jest/types" "^26.6.2" + chalk "^4.0.0" graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.1" + jest-pnp-resolver "^1.2.2" + jest-util "^26.6.2" read-pkg-up "^7.0.1" - realpath-native "^2.0.0" - resolve "^1.17.0" + resolve "^1.18.1" slash "^3.0.0" -jest-runner@^25.5.4: - version "25.5.4" - resolved "https://registry.npm.taobao.org/jest-runner/download/jest-runner-25.5.4.tgz#ffec5df3875da5f5c878ae6d0a17b8e4ecd7c71d" - integrity sha1-/+xd84ddpfXIeK5tChe45OzXxx0= +jest-runner@^26.6.3: + version "26.6.3" + resolved "https://registry.npm.taobao.org/jest-runner/download/jest-runner-26.6.3.tgz?cache=0&sync_timestamp=1617376038009&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-runner%2Fdownload%2Fjest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + integrity sha1-LR/tPUbhDyM/0dvTv6o/6JJL4Vk= dependencies: - "@jest/console" "^25.5.0" - "@jest/environment" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.7.1" exit "^0.1.2" graceful-fs "^4.2.4" - jest-config "^25.5.4" - jest-docblock "^25.3.0" - jest-haste-map "^25.5.1" - jest-jasmine2 "^25.5.4" - jest-leak-detector "^25.5.0" - jest-message-util "^25.5.0" - jest-resolve "^25.5.1" - jest-runtime "^25.5.4" - jest-util "^25.5.0" - jest-worker "^25.5.0" + jest-config "^26.6.3" + jest-docblock "^26.0.0" + jest-haste-map "^26.6.2" + jest-leak-detector "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + jest-runtime "^26.6.3" + jest-util "^26.6.2" + jest-worker "^26.6.2" source-map-support "^0.5.6" throat "^5.0.0" -jest-runtime@^25.5.4: - version "25.5.4" - resolved "https://registry.npm.taobao.org/jest-runtime/download/jest-runtime-25.5.4.tgz#dc981fe2cb2137abcd319e74ccae7f7eeffbfaab" - integrity sha1-3Jgf4sshN6vNMZ50zK5/fu/7+qs= +jest-runtime@^26.6.3: + version "26.6.3" + resolved "https://registry.npm.taobao.org/jest-runtime/download/jest-runtime-26.6.3.tgz?cache=0&sync_timestamp=1617376040140&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-runtime%2Fdownload%2Fjest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + integrity sha1-T2TvvPrDmDMbdLSzyC0n1AG4+is= dependencies: - "@jest/console" "^25.5.0" - "@jest/environment" "^25.5.0" - "@jest/globals" "^25.5.2" - "@jest/source-map" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/globals" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/yargs" "^15.0.0" - chalk "^3.0.0" + chalk "^4.0.0" + cjs-module-lexer "^0.6.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.2.4" - jest-config "^25.5.4" - jest-haste-map "^25.5.1" - jest-message-util "^25.5.0" - jest-mock "^25.5.0" - jest-regex-util "^25.2.6" - jest-resolve "^25.5.1" - jest-snapshot "^25.5.1" - jest-util "^25.5.0" - jest-validate "^25.5.0" - realpath-native "^2.0.0" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" slash "^3.0.0" strip-bom "^4.0.0" - yargs "^15.3.1" + yargs "^15.4.1" -jest-serializer@^24.4.0, jest-serializer@^24.9.0: - version "24.9.0" - resolved "https://registry.npm.taobao.org/jest-serializer/download/jest-serializer-24.9.0.tgz?cache=0&sync_timestamp=1566444323619&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-serializer%2Fdownload%2Fjest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" - integrity sha1-5tfX75bTHouQeacUdUxdXFgojnM= - -jest-serializer@^25.5.0: - version "25.5.0" - resolved "https://registry.npm.taobao.org/jest-serializer/download/jest-serializer-25.5.0.tgz#a993f484e769b4ed54e70e0efdb74007f503072b" - integrity sha1-qZP0hOdptO1U5w4O/bdAB/UDBys= +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/jest-serializer/download/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + integrity sha1-0Tmq/UaVfTpEjzps2r4pGboHQtE= dependencies: + "@types/node" "*" graceful-fs "^4.2.4" -jest-snapshot@^25.5.1: - version "25.5.1" - resolved "https://registry.npm.taobao.org/jest-snapshot/download/jest-snapshot-25.5.1.tgz#1a2a576491f9961eb8d00c2e5fd479bc28e5ff7f" - integrity sha1-GipXZJH5lh640AwuX9R5vCjl/38= +jest-snapshot@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/jest-snapshot/download/jest-snapshot-26.6.2.tgz?cache=0&sync_timestamp=1617376043256&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-snapshot%2Fdownload%2Fjest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + integrity sha1-87CvGssiMxaFC9FOG+6pg3+znIQ= dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^25.5.0" - "@types/prettier" "^1.19.0" - chalk "^3.0.0" - expect "^25.5.0" + "@jest/types" "^26.6.2" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.0.0" + chalk "^4.0.0" + expect "^26.6.2" graceful-fs "^4.2.4" - jest-diff "^25.5.0" - jest-get-type "^25.2.6" - jest-matcher-utils "^25.5.0" - jest-message-util "^25.5.0" - jest-resolve "^25.5.1" - make-dir "^3.0.0" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + jest-haste-map "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" natural-compare "^1.4.0" - pretty-format "^25.5.0" - semver "^6.3.0" + pretty-format "^26.6.2" + semver "^7.3.2" -jest-util@^24.9.0: - version "24.9.0" - resolved "https://registry.npm.taobao.org/jest-util/download/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" - integrity sha1-c5aBTkhTbS6Fo33j5MQx18sUAWI= +jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/jest-util/download/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha1-kHU12+TVpstMR6ybkm9q8pV2y8E= dependencies: - "@jest/console" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/source-map" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - callsites "^3.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.15" - is-ci "^2.0.0" - mkdirp "^0.5.1" - slash "^2.0.0" - source-map "^0.6.0" - -jest-util@^25.5.0: - version "25.5.0" - resolved "https://registry.npm.taobao.org/jest-util/download/jest-util-25.5.0.tgz#31c63b5d6e901274d264a4fec849230aa3fa35b0" - integrity sha1-McY7XW6QEnTSZKT+yEkjCqP6NbA= - dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" graceful-fs "^4.2.4" is-ci "^2.0.0" - make-dir "^3.0.0" + micromatch "^4.0.2" -jest-validate@^24.7.0: - version "24.9.0" - resolved "https://registry.npm.taobao.org/jest-validate/download/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" - integrity sha1-B3XFU2DRc82FTkAYB1bU/1Le+Ks= +jest-validate@^26.5.2, jest-validate@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/jest-validate/download/jest-validate-26.6.2.tgz?cache=0&sync_timestamp=1617376046570&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-validate%2Fdownload%2Fjest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha1-I9OAlxWHFQRnNCkRw9e0rFerIOw= dependencies: - "@jest/types" "^24.9.0" - camelcase "^5.3.1" - chalk "^2.0.1" - jest-get-type "^24.9.0" + "@jest/types" "^26.6.2" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.3.0" leven "^3.1.0" - pretty-format "^24.9.0" + pretty-format "^26.6.2" -jest-validate@^25.5.0: - version "25.5.0" - resolved "https://registry.npm.taobao.org/jest-validate/download/jest-validate-25.5.0.tgz#fb4c93f332c2e4cf70151a628e58a35e459a413a" - integrity sha1-+0yT8zLC5M9wFRpijlijXkWaQTo= +jest-watcher@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/jest-watcher/download/jest-watcher-26.6.2.tgz?cache=0&sync_timestamp=1617376047841&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-watcher%2Fdownload%2Fjest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + integrity sha1-pbaDuPnWjbyx19rjIXLSzKBZKXU= dependencies: - "@jest/types" "^25.5.0" - camelcase "^5.3.1" - chalk "^3.0.0" - jest-get-type "^25.2.6" - leven "^3.1.0" - pretty-format "^25.5.0" - -jest-watcher@^25.5.0: - version "25.5.0" - resolved "https://registry.npm.taobao.org/jest-watcher/download/jest-watcher-25.5.0.tgz#d6110d101df98badebe435003956fd4a465e8456" - integrity sha1-1hENEB35i63r5DUAOVb9SkZehFY= - dependencies: - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" ansi-escapes "^4.2.1" - chalk "^3.0.0" - jest-util "^25.5.0" - string-length "^3.1.0" + chalk "^4.0.0" + jest-util "^26.6.2" + string-length "^4.0.1" -jest-worker@^24.6.0, jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.npm.taobao.org/jest-worker/download/jest-worker-24.9.0.tgz?cache=0&sync_timestamp=1566444327015&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-worker%2Fdownload%2Fjest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha1-Xb/bWy0yLphWeJgjipaXvM5ns+U= - dependencies: - merge-stream "^2.0.0" - supports-color "^6.1.0" - -jest-worker@^25.5.0: - version "25.5.0" - resolved "https://registry.npm.taobao.org/jest-worker/download/jest-worker-25.5.0.tgz?cache=0&sync_timestamp=1597059733456&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-worker%2Fdownload%2Fjest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" - integrity sha1-JhHQcbec6g9D7lej0RhZOsFUfbE= +jest-worker@^26.0.0, jest-worker@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/jest-worker/download/jest-worker-26.6.2.tgz?cache=0&sync_timestamp=1617371442132&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-worker%2Fdownload%2Fjest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha1-f3LLxNZDw2Xie5/XdfnQ6qnHqO0= dependencies: + "@types/node" "*" merge-stream "^2.0.0" supports-color "^7.0.0" -jest@^25.1.0: - version "25.5.4" - resolved "https://registry.npm.taobao.org/jest/download/jest-25.5.4.tgz?cache=0&sync_timestamp=1598100100891&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest%2Fdownload%2Fjest-25.5.4.tgz#f21107b6489cfe32b076ce2adcadee3587acb9db" - integrity sha1-8hEHtkic/jKwds4q3K3uNYesuds= +jest@^26.6.3: + version "26.6.3" + resolved "https://registry.npm.taobao.org/jest/download/jest-26.6.3.tgz?cache=0&sync_timestamp=1617375895235&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest%2Fdownload%2Fjest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" + integrity sha1-QOj9vkjwDfofDOgSHKdLiKyRSO8= dependencies: - "@jest/core" "^25.5.4" + "@jest/core" "^26.6.3" import-local "^3.0.2" - jest-cli "^25.5.4" + jest-cli "^26.6.3" jetifier@^1.6.2: version "1.6.4" resolved "https://registry.npm.taobao.org/jetifier/download/jetifier-1.6.4.tgz#6159db8e275d97980d26162897a0648b6d4a3222" integrity sha1-YVnbjiddl5gNJhYol6Bki21KMiI= +joi@^17.2.1: + version "17.4.0" + resolved "https://registry.npm.taobao.org/joi/download/joi-17.4.0.tgz#b5c2277c8519e016316e49ababd41a1908d9ef20" + integrity sha1-tcInfIUZ4BYxbkmrq9QaGQjZ7yA= + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@sideway/address" "^4.1.0" + "@sideway/formula" "^3.0.0" + "@sideway/pinpoint" "^2.0.0" + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -4495,36 +4554,61 @@ jsc-android@^245459.0.0: resolved "https://registry.npm.taobao.org/jsc-android/download/jsc-android-245459.0.0.tgz#e584258dd0b04c9159a27fb104cd5d491fd202c9" integrity sha1-5YQljdCwTJFZon+xBM1dSR/SAsk= -jsdom@^15.2.1: - version "15.2.1" - resolved "https://registry.npm.taobao.org/jsdom/download/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" - integrity sha1-0v6xrvcYP4a+UhuMaDP/UpbQfsU= +jscodeshift@^0.11.0: + version "0.11.0" + resolved "https://registry.npm.taobao.org/jscodeshift/download/jscodeshift-0.11.0.tgz#4f95039408f3f06b0e39bb4d53bc3139f5330e2f" + integrity sha1-T5UDlAjz8GsOObtNU7wxOfUzDi8= dependencies: - abab "^2.0.0" - acorn "^7.1.0" - acorn-globals "^4.3.2" - array-equal "^1.0.0" - cssom "^0.4.1" - cssstyle "^2.0.0" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.1" - html-encoding-sniffer "^1.0.2" + "@babel/core" "^7.1.6" + "@babel/parser" "^7.1.6" + "@babel/plugin-proposal-class-properties" "^7.1.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.1.0" + "@babel/plugin-proposal-optional-chaining" "^7.1.0" + "@babel/plugin-transform-modules-commonjs" "^7.1.0" + "@babel/preset-flow" "^7.0.0" + "@babel/preset-typescript" "^7.1.0" + "@babel/register" "^7.0.0" + babel-core "^7.0.0-bridge.0" + colors "^1.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^3.1.10" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.20.3" + temp "^0.8.1" + write-file-atomic "^2.3.0" + +jsdom@^16.4.0: + version "16.5.2" + resolved "https://registry.npm.taobao.org/jsdom/download/jsdom-16.5.2.tgz?cache=0&sync_timestamp=1616953367862&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsdom%2Fdownload%2Fjsdom-16.5.2.tgz#583fac89a0aea31dbf6237e7e4bedccd9beab472" + integrity sha1-WD+siaCuox2/Yjfn5L7czZvqtHI= + dependencies: + abab "^2.0.5" + acorn "^8.1.0" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + html-encoding-sniffer "^2.0.1" + is-potential-custom-element-name "^1.0.0" nwsapi "^2.2.0" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.7" - saxes "^3.1.9" - symbol-tree "^3.2.2" - tough-cookie "^3.0.1" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.1.2" - webidl-conversions "^4.0.2" + parse5 "6.0.1" + request "^2.88.2" + request-promise-native "^1.0.9" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" whatwg-encoding "^1.0.5" whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^7.0.0" + whatwg-url "^8.5.0" + ws "^7.4.4" xml-name-validator "^3.0.0" jsesc@^2.5.1: @@ -4562,13 +4646,6 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.npm.taobao.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/json-stable-stringify/download/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= - dependencies: - jsonify "~0.0.0" - json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson-stringify-safe%2Fdownload%2Fjson-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -4617,18 +4694,13 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.2.3: - version "2.4.1" - resolved "https://registry.npm.taobao.org/jsx-ast-utils/download/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e" - integrity sha1-ERSkwSCUgdsGxpDCtPSIzGZfZX4= +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.2.0" + resolved "https://registry.npm.taobao.org/jsx-ast-utils/download/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" + integrity sha1-QRCNLOxAjDRTwbvopKrp4eK9j4I= dependencies: - array-includes "^3.1.1" - object.assign "^4.1.0" - -kind-of@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" - integrity sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ= + array-includes "^3.1.2" + object.assign "^4.1.2" kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" @@ -4671,7 +4743,15 @@ leven@^3.1.0: resolved "https://registry.npm.taobao.org/leven/download/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha1-d4kd6DQGTMy6gq54QrtrFKE+1/I= -levn@^0.3.0, levn@~0.3.0: +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npm.taobao.org/levn/download/levn-0.4.1.tgz?cache=0&sync_timestamp=1585967008825&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flevn%2Fdownload%2Flevn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha1-rkViwAdHO5MqYgDUAyaN0v/8at4= + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: version "0.3.0" resolved "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= @@ -4699,17 +4779,12 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.npm.taobao.org/lodash.sortby/download/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - lodash.throttle@^4.1.1: version "4.1.1" resolved "https://registry.npm.taobao.org/lodash.throttle/download/lodash.throttle-4.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash.throttle%2Fdownload%2Flodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= -lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.3.0: +lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15: version "4.17.15" resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg= @@ -4719,6 +4794,11 @@ lodash@^4.17.19: resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.20.tgz?cache=0&sync_timestamp=1597337964525&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI= +lodash@^4.7.0: + version "4.17.21" + resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw= + log-symbols@^2.2.0: version "2.2.0" resolved "https://registry.npm.taobao.org/log-symbols/download/log-symbols-2.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flog-symbols%2Fdownload%2Flog-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" @@ -4735,13 +4815,6 @@ logkitty@^0.7.1: dayjs "^1.8.15" yargs "^15.1.0" -lolex@^5.0.0: - version "5.1.2" - resolved "https://registry.npm.taobao.org/lolex/download/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" - integrity sha1-lTaU0JjOfAe8XtbQ5CvGwMbVo2c= - dependencies: - "@sinonjs/commons" "^1.7.0" - loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.npm.taobao.org/loose-envify/download/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -4749,13 +4822,12 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80= +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npm.taobao.org/lru-cache/download/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha1-bW/mVw69lqr5D8rR2vo7JWbbOpQ= dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" + yallist "^4.0.0" make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" @@ -4791,40 +4863,15 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -merge-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/merge-stream/download/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= - dependencies: - readable-stream "^2.0.1" - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.npm.taobao.org/merge-stream/download/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A= -metro-babel-register@0.58.0: - version "0.58.0" - resolved "https://registry.npm.taobao.org/metro-babel-register/download/metro-babel-register-0.58.0.tgz#5c44786d49a044048df56cf476a2263491d4f53a" - integrity sha1-XER4bUmgRASN9Wz0dqImNJHU9To= - dependencies: - "@babel/core" "^7.0.0" - "@babel/plugin-proposal-class-properties" "^7.0.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.0.0" - "@babel/plugin-transform-async-to-generator" "^7.0.0" - "@babel/plugin-transform-flow-strip-types" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/register" "^7.0.0" - core-js "^2.2.2" - escape-string-regexp "^1.0.5" - -metro-babel-register@0.59.0: - version "0.59.0" - resolved "https://registry.npm.taobao.org/metro-babel-register/download/metro-babel-register-0.59.0.tgz#2bcff65641b36794cf083ba732fbc46cf870fb43" - integrity sha1-K8/2VkGzZ5TPCDunMvvEbPhw+0M= +metro-babel-register@0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/metro-babel-register/download/metro-babel-register-0.64.0.tgz#1a2d23f68da8b8ee42e78dca37ad21a5f4d3647d" + integrity sha1-Gi0j9o2ouO5C543KN60hpfTTZH0= dependencies: "@babel/core" "^7.0.0" "@babel/plugin-proposal-class-properties" "^7.0.0" @@ -4835,118 +4882,78 @@ metro-babel-register@0.59.0: "@babel/register" "^7.0.0" escape-string-regexp "^1.0.5" -metro-babel-transformer@0.58.0: - version "0.58.0" - resolved "https://registry.npm.taobao.org/metro-babel-transformer/download/metro-babel-transformer-0.58.0.tgz#317c83b863cceb0573943815f1711fbcbe69b106" - integrity sha1-MXyDuGPM6wVzlDgV8XEfvL5psQY= +metro-babel-transformer@0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/metro-babel-transformer/download/metro-babel-transformer-0.64.0.tgz#a21f8a989a5ea60c1109456e21bd4d9374194ea0" + integrity sha1-oh+KmJpepgwRCUVuIb1Nk3QZTqA= dependencies: "@babel/core" "^7.0.0" - metro-source-map "0.58.0" + metro-source-map "0.64.0" + nullthrows "^1.1.1" -metro-babel-transformer@0.59.0: - version "0.59.0" - resolved "https://registry.npm.taobao.org/metro-babel-transformer/download/metro-babel-transformer-0.59.0.tgz#dda99c75d831b00142c42c020c51c103b29f199d" - integrity sha1-3amcddgxsAFCxCwCDFHBA7KfGZ0= - dependencies: - "@babel/core" "^7.0.0" - metro-source-map "0.59.0" +metro-cache-key@0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/metro-cache-key/download/metro-cache-key-0.64.0.tgz#98d0a94332453c4c52b74f72c07cc62a5c264c4f" + integrity sha1-mNCpQzJFPExSt09ywHzGKlwmTE8= -metro-cache@0.58.0: - version "0.58.0" - resolved "https://registry.npm.taobao.org/metro-cache/download/metro-cache-0.58.0.tgz#630ea0a4626dfb9591c71fdb85dce14b5e9a04ec" - integrity sha1-Yw6gpGJt+5WRxx/bhdzhS16aBOw= +metro-cache@0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/metro-cache/download/metro-cache-0.64.0.tgz#a769503e12521d9e9d95ce5840ffb2efdb4e8703" + integrity sha1-p2lQPhJSHZ6dlc5YQP+y79tOhwM= dependencies: - jest-serializer "^24.4.0" - metro-core "0.58.0" + metro-core "0.64.0" mkdirp "^0.5.1" rimraf "^2.5.4" -metro-config@0.58.0, metro-config@^0.58.0: - version "0.58.0" - resolved "https://registry.npm.taobao.org/metro-config/download/metro-config-0.58.0.tgz#1e24b43a5a00971d75662b1a0d3c04a13d4a1746" - integrity sha1-HiS0OloAlx11ZisaDTwEoT1KF0Y= +metro-config@0.64.0, metro-config@^0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/metro-config/download/metro-config-0.64.0.tgz#b634fa05cffd06b1e50e4339c200f90a42924afb" + integrity sha1-tjT6Bc/9BrHlDkM5wgD5CkKSSvs= dependencies: cosmiconfig "^5.0.5" - jest-validate "^24.7.0" - metro "0.58.0" - metro-cache "0.58.0" - metro-core "0.58.0" - pretty-format "^24.7.0" + jest-validate "^26.5.2" + metro "0.64.0" + metro-cache "0.64.0" + metro-core "0.64.0" + metro-runtime "0.64.0" -metro-core@0.58.0, metro-core@^0.58.0: - version "0.58.0" - resolved "https://registry.npm.taobao.org/metro-core/download/metro-core-0.58.0.tgz#ad9f6645a2b439a3fbce7ce4e19b01b00375768a" - integrity sha1-rZ9mRaK0OaP7znzk4ZsBsAN1doo= +metro-core@0.64.0, metro-core@^0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/metro-core/download/metro-core-0.64.0.tgz#7616b27acfe7baa476f6cd6bd9e70ae64fa62541" + integrity sha1-dhayes/nuqR29s1r2ecK5k+mJUE= dependencies: - jest-haste-map "^24.7.1" + jest-haste-map "^26.5.2" lodash.throttle "^4.1.1" - metro-resolver "0.58.0" - wordwrap "^1.0.0" + metro-resolver "0.64.0" -metro-inspector-proxy@0.58.0: - version "0.58.0" - resolved "https://registry.npm.taobao.org/metro-inspector-proxy/download/metro-inspector-proxy-0.58.0.tgz#6fefb0cdf25655919d56c82ebe09cd26eb00e636" - integrity sha1-b++wzfJWVZGdVsguvgnNJusA5jY= +metro-hermes-compiler@0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/metro-hermes-compiler/download/metro-hermes-compiler-0.64.0.tgz#e6043d7aa924e5b2be99bd3f602e693685d15386" + integrity sha1-5gQ9eqkk5bK+mb0/YC5pNoXRU4Y= + +metro-inspector-proxy@0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/metro-inspector-proxy/download/metro-inspector-proxy-0.64.0.tgz#9a481b3f49773d5418e028178efec68f861bec88" + integrity sha1-mkgbP0l3PVQY4CgXjv7Gj4Yb7Ig= dependencies: connect "^3.6.5" debug "^2.2.0" - rxjs "^5.4.3" ws "^1.1.5" - yargs "^14.2.0" + yargs "^15.3.1" -metro-minify-uglify@0.58.0: - version "0.58.0" - resolved "https://registry.npm.taobao.org/metro-minify-uglify/download/metro-minify-uglify-0.58.0.tgz#7e1066954bfd4f767ba6aca7feef676ca44c68b8" - integrity sha1-fhBmlUv9T3Z7pqyn/u9nbKRMaLg= +metro-minify-uglify@0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/metro-minify-uglify/download/metro-minify-uglify-0.64.0.tgz#da6ab4dda030e3211f5924e7f41ed308d466068f" + integrity sha1-2mq03aAw4yEfWSTn9B7TCNRmBo8= dependencies: uglify-es "^3.1.9" -metro-react-native-babel-preset@0.58.0: - version "0.58.0" - resolved "https://registry.npm.taobao.org/metro-react-native-babel-preset/download/metro-react-native-babel-preset-0.58.0.tgz#18f48d33fe124280ffabc000ab8b42c488d762a2" - integrity sha1-GPSNM/4SQoD/q8AAq4tCxIjXYqI= - dependencies: - "@babel/plugin-proposal-class-properties" "^7.0.0" - "@babel/plugin-proposal-export-default-from" "^7.0.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.0.0" - "@babel/plugin-syntax-dynamic-import" "^7.0.0" - "@babel/plugin-syntax-export-default-from" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.0.0" - "@babel/plugin-transform-exponentiation-operator" "^7.0.0" - "@babel/plugin-transform-flow-strip-types" "^7.0.0" - "@babel/plugin-transform-for-of" "^7.0.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-object-assign" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" - "@babel/plugin-transform-regenerator" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-sticky-regex" "^7.0.0" - "@babel/plugin-transform-template-literals" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.5.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - "@babel/template" "^7.0.0" - react-refresh "^0.4.0" - -metro-react-native-babel-preset@0.59.0, metro-react-native-babel-preset@^0.59.0: - version "0.59.0" - resolved "https://registry.npm.taobao.org/metro-react-native-babel-preset/download/metro-react-native-babel-preset-0.59.0.tgz#20e020bc6ac9849e1477de1333d303ed42aba225" - integrity sha1-IOAgvGrJhJ4Ud94TM9MD7UKroiU= +metro-react-native-babel-preset@0.64.0, metro-react-native-babel-preset@^0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/metro-react-native-babel-preset/download/metro-react-native-babel-preset-0.64.0.tgz#76861408681dfda3c1d962eb31a8994918c976f8" + integrity sha1-doYUCGgd/aPB2WLrMaiZSRjJdvg= dependencies: + "@babel/core" "^7.0.0" "@babel/plugin-proposal-class-properties" "^7.0.0" "@babel/plugin-proposal-export-default-from" "^7.0.0" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" @@ -4986,144 +4993,142 @@ metro-react-native-babel-preset@0.59.0, metro-react-native-babel-preset@^0.59.0: "@babel/template" "^7.0.0" react-refresh "^0.4.0" -metro-react-native-babel-transformer@0.59.0: - version "0.59.0" - resolved "https://registry.npm.taobao.org/metro-react-native-babel-transformer/download/metro-react-native-babel-transformer-0.59.0.tgz#9b3dfd6ad35c6ef37fc4ce4d20a2eb67fabbb4be" - integrity sha1-mz39atNcbvN/xM5NIKLrZ/q7tL4= +metro-react-native-babel-transformer@0.64.0, metro-react-native-babel-transformer@^0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/metro-react-native-babel-transformer/download/metro-react-native-babel-transformer-0.64.0.tgz#eafef756972f20efdc51bd5361d55f8598355623" + integrity sha1-6v73VpcvIO/cUb1TYdVfhZg1ViM= dependencies: "@babel/core" "^7.0.0" babel-preset-fbjs "^3.3.0" - metro-babel-transformer "0.59.0" - metro-react-native-babel-preset "0.59.0" - metro-source-map "0.59.0" + metro-babel-transformer "0.64.0" + metro-react-native-babel-preset "0.64.0" + metro-source-map "0.64.0" + nullthrows "^1.1.1" -metro-react-native-babel-transformer@^0.58.0: - version "0.58.0" - resolved "https://registry.npm.taobao.org/metro-react-native-babel-transformer/download/metro-react-native-babel-transformer-0.58.0.tgz#5da0e5a1b83c01d11626905fa59f34fda53a21a5" - integrity sha1-XaDlobg8AdEWJpBfpZ80/aU6IaU= - dependencies: - "@babel/core" "^7.0.0" - babel-preset-fbjs "^3.3.0" - metro-babel-transformer "0.58.0" - metro-react-native-babel-preset "0.58.0" - metro-source-map "0.58.0" - -metro-resolver@0.58.0, metro-resolver@^0.58.0: - version "0.58.0" - resolved "https://registry.npm.taobao.org/metro-resolver/download/metro-resolver-0.58.0.tgz#4d03edc52e2e25d45f16688adf3b3f268ea60df9" - integrity sha1-TQPtxS4uJdRfFmiK3zs/Jo6mDfk= +metro-resolver@0.64.0, metro-resolver@^0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/metro-resolver/download/metro-resolver-0.64.0.tgz#21126b44f31346ac2ce0b06b77ef65e8c9e2294a" + integrity sha1-IRJrRPMTRqws4LBrd+9l6MniKUo= dependencies: absolute-path "^0.0.0" -metro-source-map@0.58.0: - version "0.58.0" - resolved "https://registry.npm.taobao.org/metro-source-map/download/metro-source-map-0.58.0.tgz#e951b99f4c653239ce9323bb08339c6f1978a112" - integrity sha1-6VG5n0xlMjnOkyO7CDOcbxl4oRI= +metro-runtime@0.64.0, metro-runtime@^0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/metro-runtime/download/metro-runtime-0.64.0.tgz#cdaa1121d91041bf6345f2a69eb7c2fb289eff7b" + integrity sha1-zaoRIdkQQb9jRfKmnrfC+yie/3s= + +metro-source-map@0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/metro-source-map/download/metro-source-map-0.64.0.tgz#4310e17c3d4539c6369688022494ad66fa4d39a1" + integrity sha1-QxDhfD1FOcY2logCJJStZvpNOaE= dependencies: "@babel/traverse" "^7.0.0" "@babel/types" "^7.0.0" invariant "^2.2.4" - metro-symbolicate "0.58.0" - ob1 "0.58.0" + metro-symbolicate "0.64.0" + nullthrows "^1.1.1" + ob1 "0.64.0" source-map "^0.5.6" vlq "^1.0.0" -metro-source-map@0.59.0: - version "0.59.0" - resolved "https://registry.npm.taobao.org/metro-source-map/download/metro-source-map-0.59.0.tgz#e9beb9fc51bfb4e060f95820cf1508fc122d23f7" - integrity sha1-6b65/FG/tOBg+VggzxUI/BItI/c= +metro-symbolicate@0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/metro-symbolicate/download/metro-symbolicate-0.64.0.tgz#405c21438ab553c29f6841da52ca76ee87bb06ac" + integrity sha1-QFwhQ4q1U8KfaEHaUsp27oe7Bqw= dependencies: + invariant "^2.2.4" + metro-source-map "0.64.0" + nullthrows "^1.1.1" + source-map "^0.5.6" + through2 "^2.0.1" + vlq "^1.0.0" + +metro-transform-plugins@0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/metro-transform-plugins/download/metro-transform-plugins-0.64.0.tgz#41d3dce0f2966bbd79fea1ecff61bcc8a00e4665" + integrity sha1-QdPc4PKWa715/qHs/2G8yKAORmU= + dependencies: + "@babel/core" "^7.0.0" + "@babel/generator" "^7.5.0" + "@babel/template" "^7.0.0" "@babel/traverse" "^7.0.0" + nullthrows "^1.1.1" + +metro-transform-worker@0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/metro-transform-worker/download/metro-transform-worker-0.64.0.tgz#f94429b2c42b13cb1c93be4c2e25e97f2d27ca60" + integrity sha1-+UQpssQrE8sck75MLiXpfy0nymA= + dependencies: + "@babel/core" "^7.0.0" + "@babel/generator" "^7.5.0" + "@babel/parser" "^7.0.0" "@babel/types" "^7.0.0" - invariant "^2.2.4" - metro-symbolicate "0.59.0" - ob1 "0.59.0" - source-map "^0.5.6" - vlq "^1.0.0" + babel-preset-fbjs "^3.3.0" + metro "0.64.0" + metro-babel-transformer "0.64.0" + metro-cache "0.64.0" + metro-cache-key "0.64.0" + metro-hermes-compiler "0.64.0" + metro-source-map "0.64.0" + metro-transform-plugins "0.64.0" + nullthrows "^1.1.1" -metro-symbolicate@0.58.0: - version "0.58.0" - resolved "https://registry.npm.taobao.org/metro-symbolicate/download/metro-symbolicate-0.58.0.tgz#ba9fd52549c41fc1b656adaad7c8875726dd5abe" - integrity sha1-up/VJUnEH8G2Vq2q18iHVybdWr4= - dependencies: - invariant "^2.2.4" - metro-source-map "0.58.0" - source-map "^0.5.6" - through2 "^2.0.1" - vlq "^1.0.0" - -metro-symbolicate@0.59.0: - version "0.59.0" - resolved "https://registry.npm.taobao.org/metro-symbolicate/download/metro-symbolicate-0.59.0.tgz#fc7f93957a42b02c2bfc57ed1e8f393f5f636a54" - integrity sha1-/H+TlXpCsCwr/FftHo85P19jalQ= - dependencies: - invariant "^2.2.4" - metro-source-map "0.59.0" - source-map "^0.5.6" - through2 "^2.0.1" - vlq "^1.0.0" - -metro@0.58.0, metro@^0.58.0: - version "0.58.0" - resolved "https://registry.npm.taobao.org/metro/download/metro-0.58.0.tgz#c037318c112f80dc96199780c8b401ab72cfd142" - integrity sha1-wDcxjBEvgNyWGZeAyLQBq3LP0UI= +metro@0.64.0, metro@^0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/metro/download/metro-0.64.0.tgz#0091a856cfbcc94dd576da563eee466e96186195" + integrity sha1-AJGoVs+8yU3VdtpWPu5GbpYYYZU= dependencies: "@babel/code-frame" "^7.0.0" "@babel/core" "^7.0.0" "@babel/generator" "^7.5.0" "@babel/parser" "^7.0.0" - "@babel/plugin-external-helpers" "^7.0.0" "@babel/template" "^7.0.0" "@babel/traverse" "^7.0.0" "@babel/types" "^7.0.0" absolute-path "^0.0.0" + accepts "^1.3.7" async "^2.4.0" - babel-preset-fbjs "^3.3.0" - buffer-crc32 "^0.2.13" - chalk "^2.4.1" + chalk "^4.0.0" ci-info "^2.0.0" - concat-stream "^1.6.0" connect "^3.6.5" debug "^2.2.0" denodeify "^1.2.1" - eventemitter3 "^3.0.0" - fbjs "^1.0.0" + error-stack-parser "^2.0.6" fs-extra "^1.0.0" graceful-fs "^4.1.3" image-size "^0.6.0" invariant "^2.2.4" - jest-haste-map "^24.7.1" - jest-worker "^24.6.0" - json-stable-stringify "^1.0.1" + jest-haste-map "^26.5.2" + jest-worker "^26.0.0" lodash.throttle "^4.1.1" - merge-stream "^1.0.1" - metro-babel-register "0.58.0" - metro-babel-transformer "0.58.0" - metro-cache "0.58.0" - metro-config "0.58.0" - metro-core "0.58.0" - metro-inspector-proxy "0.58.0" - metro-minify-uglify "0.58.0" - metro-react-native-babel-preset "0.58.0" - metro-resolver "0.58.0" - metro-source-map "0.58.0" - metro-symbolicate "0.58.0" - mime-types "2.1.11" + metro-babel-register "0.64.0" + metro-babel-transformer "0.64.0" + metro-cache "0.64.0" + metro-cache-key "0.64.0" + metro-config "0.64.0" + metro-core "0.64.0" + metro-hermes-compiler "0.64.0" + metro-inspector-proxy "0.64.0" + metro-minify-uglify "0.64.0" + metro-react-native-babel-preset "0.64.0" + metro-resolver "0.64.0" + metro-runtime "0.64.0" + metro-source-map "0.64.0" + metro-symbolicate "0.64.0" + metro-transform-plugins "0.64.0" + metro-transform-worker "0.64.0" + mime-types "^2.1.27" mkdirp "^0.5.1" node-fetch "^2.2.0" nullthrows "^1.1.1" - resolve "^1.5.0" rimraf "^2.5.4" serialize-error "^2.1.0" source-map "^0.5.6" - strip-ansi "^4.0.0" + strip-ansi "^6.0.0" temp "0.8.3" - throat "^4.1.0" - wordwrap "^1.0.0" - write-file-atomic "^1.2.0" + throat "^5.0.0" ws "^1.1.5" - xpipe "^1.0.5" - yargs "^14.2.0" + yargs "^15.3.1" micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" @@ -5157,17 +5162,10 @@ mime-db@1.42.0, "mime-db@>= 1.40.0 < 2": resolved "https://registry.npm.taobao.org/mime-db/download/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" integrity sha1-PiUpB7THrbkGWXtLZWNics+ee6w= -mime-db@~1.23.0: - version "1.23.0" - resolved "https://registry.npm.taobao.org/mime-db/download/mime-db-1.23.0.tgz#a31b4070adaea27d732ea333740a64d0ec9a6659" - integrity sha1-oxtAcK2uon1zLqMzdApk0OyaZlk= - -mime-types@2.1.11: - version "2.1.11" - resolved "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.11.tgz?cache=0&sync_timestamp=1573568443876&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-types%2Fdownload%2Fmime-types-2.1.11.tgz#c259c471bda808a85d6cd193b430a5fae4473b3c" - integrity sha1-wlnEcb2oCKhdbNGTtDCl+uRHOzw= - dependencies: - mime-db "~1.23.0" +mime-db@1.47.0: + version "1.47.0" + resolved "https://registry.npm.taobao.org/mime-db/download/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" + integrity sha1-jLMT5Zll08Bc+/iYkVomevRqM1w= mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.25" @@ -5176,6 +5174,13 @@ mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: dependencies: mime-db "1.42.0" +mime-types@^2.1.27: + version "2.1.30" + resolved "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.30.tgz?cache=0&sync_timestamp=1617340242028&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-types%2Fdownload%2Fmime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" + integrity sha1-bnvotMR5gl+F7WMmaV23P5MF1i0= + dependencies: + mime-db "1.47.0" + mime@1.6.0: version "1.6.0" resolved "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -5196,7 +5201,7 @@ mimic-fn@^2.1.0: resolved "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs= -minimatch@^3.0.4: +minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fminimatch%2Fdownload%2Fminimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM= @@ -5218,21 +5223,6 @@ minimist@^1.2.5: resolved "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI= -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.npm.taobao.org/minipass/download/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha1-5xN2Ln0+Mv7YAxFc+T4EvKn8yaY= - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.npm.taobao.org/minizlib/download/minizlib-1.3.3.tgz?cache=0&sync_timestamp=1570255768285&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fminizlib%2Fdownload%2Fminizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha1-IpDeloGKNMKVUcio0wEha9Zahh0= - dependencies: - minipass "^2.9.0" - mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz?cache=0&sync_timestamp=1561436244196&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmixin-deep%2Fdownload%2Fmixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -5241,7 +5231,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -5263,21 +5253,6 @@ ms@^2.1.1: resolved "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk= -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha1-FjDEKyJR/4HiooPelqVJfqkuXg0= - -nan@^2.12.1: - version "2.14.0" - resolved "https://registry.npm.taobao.org/nan/download/nan-2.14.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnan%2Fdownload%2Fnan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - integrity sha1-eBj3IgJ7JFmobwKV1DTR/CM2xSw= - nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.npm.taobao.org/nanomatch/download/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -5300,32 +5275,32 @@ natural-compare@^1.4.0: resolved "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -needle@^2.2.1: - version "2.4.0" - resolved "https://registry.npm.taobao.org/needle/download/needle-2.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fneedle%2Fdownload%2Fneedle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" - integrity sha1-aDPnSXXERGQlkOFadQKIxfk5tXw= - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs= +neo-async@^2.5.0: + version "2.6.2" + resolved "https://registry.npm.taobao.org/neo-async/download/neo-async-2.6.2.tgz?cache=0&sync_timestamp=1594317569062&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fneo-async%2Fdownload%2Fneo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha1-tKr7k+OustgXTKU88WOrfXMIMF8= + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.npm.taobao.org/nice-try/download/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y= -node-fetch@^1.0.1: - version "1.7.3" - resolved "https://registry.npm.taobao.org/node-fetch/download/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" - integrity sha1-mA9vcthSEaU0fGsrwYxbhMPrR+8= +nocache@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/nocache/download/nocache-2.1.0.tgz#120c9ffec43b5729b1d5de88cd71aa75a0ba491f" + integrity sha1-Egyf/sQ7Vymx1d6IzXGqdaC6SR8= + +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.npm.taobao.org/node-dir/download/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU= dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" + minimatch "^3.0.2" node-fetch@^2.2.0, node-fetch@^2.6.0: version "2.6.0" @@ -5342,46 +5317,28 @@ node-modules-regexp@^1.0.0: resolved "https://registry.npm.taobao.org/node-modules-regexp/download/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^6.0.0: - version "6.0.0" - resolved "https://registry.npm.taobao.org/node-notifier/download/node-notifier-6.0.0.tgz?cache=0&sync_timestamp=1597311396290&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-notifier%2Fdownload%2Fnode-notifier-6.0.0.tgz#cea319e06baa16deec8ce5cd7f133c4a46b68e12" - integrity sha1-zqMZ4GuqFt7sjOXNfxM8Ska2jhI= +node-notifier@^8.0.0: + version "8.0.2" + resolved "https://registry.npm.taobao.org/node-notifier/download/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" + integrity sha1-8xZ6OO8NLIqGaoPjGMG6Dv63AsU= dependencies: growly "^1.3.0" - is-wsl "^2.1.1" - semver "^6.3.0" + is-wsl "^2.2.0" + semver "^7.3.2" shellwords "^0.1.1" - which "^1.3.1" + uuid "^8.3.0" + which "^2.0.2" -node-pre-gyp@^0.12.0: - version "0.12.0" - resolved "https://registry.npm.taobao.org/node-pre-gyp/download/node-pre-gyp-0.12.0.tgz?cache=0&sync_timestamp=1572039159771&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-pre-gyp%2Fdownload%2Fnode-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" - integrity sha1-ObpLsUOdoDApX4meO1ILd4V2YUk= - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" +node-releases@^1.1.70: + version "1.1.71" + resolved "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.71.tgz?cache=0&sync_timestamp=1614110313478&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-releases%2Fdownload%2Fnode-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" + integrity sha1-yxM0sXmJaxyJ7P3UtyX7e738fbs= node-stream-zip@^1.9.1: version "1.11.3" resolved "https://registry.npm.taobao.org/node-stream-zip/download/node-stream-zip-1.11.3.tgz#223892620b4889bce9782b256a76682631c507be" integrity sha1-IjiSYgtIibzpeCslanZoJjHFB74= -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.npm.taobao.org/nopt/download/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -5404,19 +5361,6 @@ normalize-path@^3.0.0: resolved "https://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU= -npm-bundled@^1.0.1: - version "1.0.6" - resolved "https://registry.npm.taobao.org/npm-bundled/download/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" - integrity sha1-57qarc75YrthJI+RchzZMrP+a90= - -npm-packlist@^1.1.6: - version "1.4.6" - resolved "https://registry.npm.taobao.org/npm-packlist/download/npm-packlist-1.4.6.tgz#53ba3ed11f8523079f1457376dd379ee4ea42ff4" - integrity sha1-U7o+0R+FIwefFFc3bdN57k6kL/Q= - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -5431,26 +5375,11 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.npm.taobao.org/npmlog/download/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha1-CKfyqL9zRgR3mp76StXMcXq7lUs= - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - nullthrows@^1.1.1: version "1.1.1" resolved "https://registry.npm.taobao.org/nullthrows/download/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" integrity sha1-eBgliEOFaulx6uQgitfX6xmkMbE= -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - nwsapi@^2.2.0: version "2.2.0" resolved "https://registry.npm.taobao.org/nwsapi/download/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" @@ -5461,17 +5390,12 @@ oauth-sign@~0.9.0: resolved "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Foauth-sign%2Fdownload%2Foauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU= -ob1@0.58.0: - version "0.58.0" - resolved "https://registry.npm.taobao.org/ob1/download/ob1-0.58.0.tgz#484a1e9a63a8b79d9ea6f3a83b2a42110faac973" - integrity sha1-SEoemmOot52epvOoOypCEQ+qyXM= +ob1@0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/ob1/download/ob1-0.64.0.tgz#f254a55a53ca395c4f9090e28a85483eac5eba19" + integrity sha1-8lSlWlPKOVxPkJDiioVIPqxeuhk= -ob1@0.59.0: - version "0.59.0" - resolved "https://registry.npm.taobao.org/ob1/download/ob1-0.59.0.tgz#ee103619ef5cb697f2866e3577da6f0ecd565a36" - integrity sha1-7hA2Ge9ctpfyhm41d9pvDs1WWjY= - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.1.1: version "4.1.1" resolved "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -5485,10 +5409,10 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.7.0, object-inspect@^1.8.0: - version "1.8.0" - resolved "https://registry.npm.taobao.org/object-inspect/download/object-inspect-1.8.0.tgz?cache=0&sync_timestamp=1592545673681&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-inspect%2Fdownload%2Fobject-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" - integrity sha1-34B+Xs9TpgnMa/6T6sPMe+WzqdA= +object-inspect@^1.9.0: + version "1.9.0" + resolved "https://registry.npm.taobao.org/object-inspect/download/object-inspect-1.9.0.tgz?cache=0&sync_timestamp=1606804376575&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-inspect%2Fdownload%2Fobject-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha1-yQUh104RJ7ZyZt7TOUrWEWmGUzo= object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" @@ -5512,23 +5436,34 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.entries@^1.1.1: - version "1.1.2" - resolved "https://registry.npm.taobao.org/object.entries/download/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" - integrity sha1-vHPwCstra7FsIDQ0sQ+afnl9Ot0= +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.2.tgz?cache=0&sync_timestamp=1604115467362&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject.assign%2Fdownload%2Fobject.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha1-DtVKNC7Os3s4/3brgxoOeIy2OUA= dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.3: + version "1.1.3" + resolved "https://registry.npm.taobao.org/object.entries/download/object.entries-1.1.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject.entries%2Fdownload%2Fobject.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" + integrity sha1-xgHH8Wi2I3RUGgfdvT4tXk93EaY= + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" has "^1.0.3" -object.fromentries@^2.0.2: - version "2.0.2" - resolved "https://registry.npm.taobao.org/object.fromentries/download/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" - integrity sha1-SgnJubs4Q90PiazbUXp5TU81Wsk= +object.fromentries@^2.0.4: + version "2.0.4" + resolved "https://registry.npm.taobao.org/object.fromentries/download/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" + integrity sha1-JuG6XEVxxcbwiQzvRHMGZFahILg= dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" + es-abstract "^1.18.0-next.2" has "^1.0.3" object.pick@^1.3.0: @@ -5538,14 +5473,14 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/object.values/download/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" - integrity sha1-aKmezeNWt+kpWjxeDOMdyMlT3l4= +object.values@^1.1.3: + version "1.1.3" + resolved "https://registry.npm.taobao.org/object.values/download/object.values-1.1.3.tgz?cache=0&sync_timestamp=1614058023442&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject.values%2Fdownload%2Fobject.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee" + integrity sha1-6qix4XWJ8C9pjbCT98Yu4WmXQu4= dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" + es-abstract "^1.18.0-next.2" has "^1.0.3" on-finished@~2.3.0: @@ -5588,7 +5523,7 @@ open@^6.2.0: dependencies: is-wsl "^1.1.0" -optionator@^0.8.1, optionator@^0.8.2: +optionator@^0.8.1: version "0.8.3" resolved "https://registry.npm.taobao.org/optionator/download/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha1-hPodA2/p08fiHZmIS2ARZ+yPtJU= @@ -5600,6 +5535,18 @@ optionator@^0.8.1, optionator@^0.8.2: type-check "~0.3.2" word-wrap "~1.2.3" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.npm.taobao.org/optionator/download/optionator-0.9.1.tgz?cache=0&sync_timestamp=1585967009084&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Foptionator%2Fdownload%2Foptionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha1-TyNqY3Pa4FZqbUPhMmZ09QwpFJk= + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + options@>=0.0.5: version "0.0.6" resolved "https://registry.npm.taobao.org/options/download/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" @@ -5617,24 +5564,11 @@ ora@^3.4.0: strip-ansi "^5.2.0" wcwidth "^1.0.1" -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.npm.taobao.org/os-homedir/download/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0: version "1.0.2" resolved "https://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.npm.taobao.org/osenv/download/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha1-hc36+uso6Gd/QW4odZK18/SepBA= - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - p-each-series@^2.1.0: version "2.1.0" resolved "https://registry.npm.taobao.org/p-each-series/download/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" @@ -5645,11 +5579,6 @@ p-finally@^1.0.0: resolved "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.npm.taobao.org/p-finally/download/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha1-vW/KqcVZoJa2gIBvTWV7Pw8kBWE= - p-limit@^2.0.0, p-limit@^2.2.0: version "2.2.1" resolved "https://registry.npm.taobao.org/p-limit/download/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" @@ -5701,15 +5630,10 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-node-version@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/parse-node-version/download/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" - integrity sha1-4rXb7eAOf6m8NjYH9TMn6LBzGJs= - -parse5@5.1.0: - version "5.1.0" - resolved "https://registry.npm.taobao.org/parse5/download/parse5-5.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5%2Fdownload%2Fparse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha1-xZNByXI/QUxFKXVWTHwApo1YrNI= +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.npm.taobao.org/parse5/download/parse5-6.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5%2Fdownload%2Fparse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha1-4aHAhcVps9wIMhGE8Zo5zCf3wws= parseurl@~1.3.3: version "1.3.3" @@ -5796,27 +5720,16 @@ plist@^3.0.1: xmlbuilder "^9.0.7" xmldom "0.1.x" -plugin-error@^0.1.2: - version "0.1.2" - resolved "https://registry.npm.taobao.org/plugin-error/download/plugin-error-0.1.2.tgz#3b9bb3335ccf00f425e07437e19276967da47ace" - integrity sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4= - dependencies: - ansi-cyan "^0.1.1" - ansi-red "^0.1.1" - arr-diff "^1.0.1" - arr-union "^2.0.1" - extend-shallow "^1.1.2" - -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/pn/download/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha1-4vTO8OIZ9GPBeas3Rj5OHs3Muvs= - posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha1-3rxkidem5rDnYRiIzsiAM30xY5Y= + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -5834,25 +5747,15 @@ prettier@^2.0.2: resolved "https://registry.npm.taobao.org/prettier/download/prettier-2.1.1.tgz?cache=0&sync_timestamp=1598414304683&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprettier%2Fdownload%2Fprettier-2.1.1.tgz#d9485dd5e499daa6cb547023b87a6cf51bee37d6" integrity sha1-2Uhd1eSZ2qbLVHAjuHps9RvuN9Y= -pretty-format@^24.7.0, pretty-format@^24.9.0: - version "24.9.0" - resolved "https://registry.npm.taobao.org/pretty-format/download/pretty-format-24.9.0.tgz?cache=0&sync_timestamp=1566444331777&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpretty-format%2Fdownload%2Fpretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" - integrity sha1-EvrDGzcBmk7qPBGqmpWet2KKp8k= +pretty-format@^26.5.2, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.npm.taobao.org/pretty-format/download/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha1-41wnBfFMt/4v6U+geDRbREEg/JM= dependencies: - "@jest/types" "^24.9.0" - ansi-regex "^4.0.0" - ansi-styles "^3.2.0" - react-is "^16.8.4" - -pretty-format@^25.1.0, pretty-format@^25.2.0, pretty-format@^25.5.0: - version "25.5.0" - resolved "https://registry.npm.taobao.org/pretty-format/download/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" - integrity sha1-eHPB13T2gsNLjUi2dDor8qxVeRo= - dependencies: - "@jest/types" "^25.5.0" + "@jest/types" "^26.6.2" ansi-regex "^5.0.0" ansi-styles "^4.0.0" - react-is "^16.12.0" + react-is "^17.0.1" private@^0.1.6: version "0.1.8" @@ -5869,13 +5772,6 @@ progress@^2.0.0: resolved "https://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha1-foz42PW48jnBvGi+tOt4Vn1XLvg= -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.npm.taobao.org/promise/download/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078= - dependencies: - asap "~2.0.3" - promise@^8.0.3: version "8.1.0" resolved "https://registry.npm.taobao.org/promise/download/promise-8.1.0.tgz?cache=0&sync_timestamp=1583147444888&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpromise%2Fdownload%2Fpromise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" @@ -5891,7 +5787,15 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.3" -prop-types@^15.6.2, prop-types@^15.7.2: +prompts@^2.4.0: + version "2.4.1" + resolved "https://registry.npm.taobao.org/prompts/download/prompts-2.4.1.tgz?cache=0&sync_timestamp=1617241051265&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprompts%2Fdownload%2Fprompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" + integrity sha1-vv07EZW6BS+f0v3opIbE6C7nf2E= + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.7.2: version "15.7.2" resolved "https://registry.npm.taobao.org/prop-types/download/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha1-UsQedbjIfnK52TYOAga5ncv/psU= @@ -5900,16 +5804,16 @@ prop-types@^15.6.2, prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - psl@^1.1.28: version "1.4.0" resolved "https://registry.npm.taobao.org/psl/download/psl-1.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpsl%2Fdownload%2Fpsl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" integrity sha1-XdJhVs22n6H9uKsZkWZ9P4DO18I= +psl@^1.1.33: + version "1.8.0" + resolved "https://registry.npm.taobao.org/psl/download/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha1-kyb4vPsBOtzABf3/BWrM4CDlHCQ= + pump@^3.0.0: version "3.0.0" resolved "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -5933,16 +5837,6 @@ range-parser@~1.2.1: resolved "https://registry.npm.taobao.org/range-parser/download/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE= -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.npm.taobao.org/rc/download/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0= - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - react-devtools-core@^4.6.0: version "4.8.2" resolved "https://registry.npm.taobao.org/react-devtools-core/download/react-devtools-core-4.8.2.tgz#4465f2e8de7795564aa20f28b2f3a9737586db23" @@ -5951,16 +5845,25 @@ react-devtools-core@^4.6.0: shell-quote "^1.6.1" ws "^7" -react-is@^16.12.0, react-is@^16.8.6: - version "16.13.1" - resolved "https://registry.npm.taobao.org/react-is/download/react-is-16.13.1.tgz?cache=0&sync_timestamp=1598612915869&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freact-is%2Fdownload%2Freact-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha1-eJcppNw23imZ3BVt1sHZwYzqVqQ= +"react-is@^16.12.0 || ^17.0.0", react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.npm.taobao.org/react-is/download/react-is-17.0.2.tgz?cache=0&sync_timestamp=1617901013869&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freact-is%2Fdownload%2Freact-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha1-5pHUqOnHiTZWVVOas3J2Kw77VPA= -react-is@^16.8.1, react-is@^16.8.4: +react-is@^16.8.1: version "16.12.0" resolved "https://registry.npm.taobao.org/react-is/download/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" integrity sha1-LMD+D7p0LZf9UnxCoTvsTusGJBw= +react-native-codegen@^0.0.6: + version "0.0.6" + resolved "https://registry.npm.taobao.org/react-native-codegen/download/react-native-codegen-0.0.6.tgz#b3173faa879cf71bfade8d030f9c4698388f6909" + integrity sha1-sxc/qoec9xv63o0DD5xGmDiPaQk= + dependencies: + flow-parser "^0.121.0" + jscodeshift "^0.11.0" + nullthrows "^1.1.1" + "react-native-update@link:../..": version "0.0.0" uid "" @@ -5973,62 +5876,74 @@ react-native-webview@^10.9.2: escape-string-regexp "2.0.0" invariant "2.2.4" -react-native@0.63.3: - version "0.63.3" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.63.3.tgz#4a7f6540e049ff41810887bbd1125abc4672f3bf" - integrity sha512-71wq13uNo5W8QVQnFlnzZ3AD+XgUBYGhpsxysQFW/hJ8GAt/J5o+Bvhy81FXichp6IBDJDh/JgfHH2gNji8dFA== +react-native@0.64.0: + version "0.64.0" + resolved "https://registry.npm.taobao.org/react-native/download/react-native-0.64.0.tgz#c3bde5b638bf8bcf12bae6e094930d39cb942ab7" + integrity sha1-w73ltji/i88SuubglJMNOcuUKrc= dependencies: - "@babel/runtime" "^7.0.0" - "@react-native-community/cli" "^4.10.0" - "@react-native-community/cli-platform-android" "^4.10.0" - "@react-native-community/cli-platform-ios" "^4.10.0" + "@jest/create-cache-key-function" "^26.5.0" + "@react-native-community/cli" "^5.0.1-alpha.0" + "@react-native-community/cli-platform-android" "^5.0.1-alpha.0" + "@react-native-community/cli-platform-ios" "^5.0.1-alpha.0" + "@react-native/assets" "1.0.0" + "@react-native/normalize-color" "1.0.0" + "@react-native/polyfills" "1.0.0" abort-controller "^3.0.0" anser "^1.4.9" base64-js "^1.1.2" event-target-shim "^5.0.1" - fbjs "^1.0.0" - fbjs-scripts "^1.1.0" - hermes-engine "~0.5.0" + hermes-engine "~0.7.0" invariant "^2.2.4" jsc-android "^245459.0.0" - metro-babel-register "0.59.0" - metro-react-native-babel-transformer "0.59.0" - metro-source-map "0.59.0" + metro-babel-register "0.64.0" + metro-react-native-babel-transformer "0.64.0" + metro-runtime "0.64.0" + metro-source-map "0.64.0" nullthrows "^1.1.1" - pretty-format "^24.9.0" + pretty-format "^26.5.2" promise "^8.0.3" prop-types "^15.7.2" react-devtools-core "^4.6.0" + react-native-codegen "^0.0.6" react-refresh "^0.4.0" regenerator-runtime "^0.13.2" - scheduler "0.19.1" + scheduler "^0.20.1" + shelljs "^0.8.4" stacktrace-parser "^0.1.3" use-subscription "^1.0.0" whatwg-fetch "^3.0.0" + ws "^6.1.4" react-refresh@^0.4.0: version "0.4.2" resolved "https://registry.npm.taobao.org/react-refresh/download/react-refresh-0.4.2.tgz#54a277a6caaac2803d88f1d6f13c1dcfbd81e334" integrity sha1-VKJ3psqqwoA9iPHW8Twdz72B4zQ= -react-test-renderer@16.13.1: - version "16.13.1" - resolved "https://registry.npm.taobao.org/react-test-renderer/download/react-test-renderer-16.13.1.tgz#de25ea358d9012606de51e012d9742e7f0deabc1" - integrity sha1-3iXqNY2QEmBt5R4BLZdC5/Deq8E= +react-shallow-renderer@^16.13.1: + version "16.14.1" + resolved "https://registry.npm.taobao.org/react-shallow-renderer/download/react-shallow-renderer-16.14.1.tgz#bf0d02df8a519a558fd9b8215442efa5c840e124" + integrity sha1-vw0C34pRmlWP2bghVELvpchA4SQ= dependencies: object-assign "^4.1.1" - prop-types "^15.6.2" - react-is "^16.8.6" - scheduler "^0.19.1" + react-is "^16.12.0 || ^17.0.0" -react@16.13.1: - version "16.13.1" - resolved "https://registry.npm.taobao.org/react/download/react-16.13.1.tgz?cache=0&sync_timestamp=1598612919839&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freact%2Fdownload%2Freact-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" - integrity sha1-LoGIIvGpdDEiwGPWQQ2FweOv5I4= +react-test-renderer@17.0.1: + version "17.0.1" + resolved "https://registry.npm.taobao.org/react-test-renderer/download/react-test-renderer-17.0.1.tgz#3187e636c3063e6ae498aedf21ecf972721574c7" + integrity sha1-MYfmNsMGPmrkmK7fIez5cnIVdMc= + dependencies: + object-assign "^4.1.1" + react-is "^17.0.1" + react-shallow-renderer "^16.13.1" + scheduler "^0.20.1" + +react@17.0.1: + version "17.0.1" + resolved "https://registry.npm.taobao.org/react/download/react-17.0.1.tgz?cache=0&sync_timestamp=1617901072698&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freact%2Fdownload%2Freact-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127" + integrity sha1-bgYAQWvVdXTj+G2S7bo9kAhyYSc= dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" - prop-types "^15.6.2" read-pkg-up@^7.0.1: version "7.0.1" @@ -6049,7 +5964,7 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@~2.3.6: +readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8= @@ -6062,10 +5977,22 @@ readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.2.2, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -realpath-native@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/realpath-native/download/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" - integrity sha1-c3esQptuH9WZ3DjQjtlC0Ne+uGY= +recast@^0.20.3: + version "0.20.4" + resolved "https://registry.npm.taobao.org/recast/download/recast-0.20.4.tgz#db55983eac70c46b3fff96c8e467d65ffb4a7abc" + integrity sha1-21WYPqxwxGs//5bI5GfWX/tKerw= + dependencies: + ast-types "0.14.2" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.npm.taobao.org/rechoir/download/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" regenerate-unicode-properties@^8.1.0: version "8.1.0" @@ -6104,20 +6031,15 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.3.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/regexp.prototype.flags/download/regexp.prototype.flags-1.3.0.tgz?cache=0&sync_timestamp=1576388236739&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexp.prototype.flags%2Fdownload%2Fregexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha1-erqJs8E6ZFCdq888qNn7ub31y3U= +regexp.prototype.flags@^1.3.1: + version "1.3.1" + resolved "https://registry.npm.taobao.org/regexp.prototype.flags/download/regexp.prototype.flags-1.3.1.tgz?cache=0&sync_timestamp=1610725814145&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexp.prototype.flags%2Fdownload%2Fregexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha1-fvNSro0VnnWMDq3Kb4/LTu8HviY= dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.npm.taobao.org/regexpp/download/regexpp-2.0.1.tgz?cache=0&sync_timestamp=1567134130597&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpp%2Fdownload%2Fregexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha1-jRnTHPYySCtYkEn4KB+T28uk0H8= - -regexpp@^3.0.0: +regexpp@^3.0.0, regexpp@^3.1.0: version "3.1.0" resolved "https://registry.npm.taobao.org/regexpp/download/regexpp-3.1.0.tgz?cache=0&sync_timestamp=1586019316504&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpp%2Fdownload%2Fregexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha1-IG0K0KVkjP+9uK5GQ489xRyfeOI= @@ -6168,7 +6090,7 @@ request-promise-core@1.1.4: dependencies: lodash "^4.17.19" -request-promise-native@^1.0.7: +request-promise-native@^1.0.9: version "1.0.9" resolved "https://registry.npm.taobao.org/request-promise-native/download/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" integrity sha1-5AcSBSal79yaObKKVnm/R7nZ3Cg= @@ -6177,7 +6099,7 @@ request-promise-native@^1.0.7: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.88.0: +request@^2.88.2: version "2.88.2" resolved "https://registry.npm.taobao.org/request/download/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha1-1zyRhzHLWofaBH4gcjQUb2ZNErM= @@ -6240,25 +6162,36 @@ resolve-url@^0.2.1: resolved "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.npm.taobao.org/resolve/download/resolve-1.1.7.tgz?cache=0&sync_timestamp=1564641467397&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= +resolve@^1.1.6, resolve@^1.18.1: + version "1.20.0" + resolved "https://registry.npm.taobao.org/resolve/download/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha1-YpoBP7P3B1XW8LeTXMHCxTeLGXU= + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" -resolve@^1.10.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: +resolve@^1.10.0, resolve@^1.3.2, resolve@^1.8.1: version "1.12.0" resolved "https://registry.npm.taobao.org/resolve/download/resolve-1.12.0.tgz?cache=0&sync_timestamp=1564641467397&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha1-P8ZEo1yEpIVUYJ/ybsUrZvpXffY= dependencies: path-parse "^1.0.6" -resolve@^1.12.0, resolve@^1.15.1, resolve@^1.17.0: +resolve@^1.12.0: version "1.17.0" resolved "https://registry.npm.taobao.org/resolve/download/resolve-1.17.0.tgz?cache=0&sync_timestamp=1587596377049&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha1-sllBtUloIxzC0bt2p5y38sC/hEQ= dependencies: path-parse "^1.0.6" +resolve@^2.0.0-next.3: + version "2.0.0-next.3" + resolved "https://registry.npm.taobao.org/resolve/download/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" + integrity sha1-1BAWKT1KhYajnKXZtfFcvqH1XkY= + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -6267,27 +6200,19 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha1-OfZ8VLOnpYzqUjbZXPADQjljH34= - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - ret@~0.1.10: version "0.1.15" resolved "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w= -rimraf@2.6.3: +rimraf@2.6.3, rimraf@~2.6.2: version "2.6.3" resolved "https://registry.npm.taobao.org/rimraf/download/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha1-stEE/g2Psnz54KHNqCYt04M8bKs= dependencies: glob "^7.1.3" -rimraf@^2.5.4, rimraf@^2.6.1: +rimraf@^2.5.4: version "2.7.1" resolved "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w= @@ -6311,39 +6236,6 @@ rsvp@^4.8.4: resolved "https://registry.npm.taobao.org/rsvp/download/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha1-yPFVMR0Wf2jyHhaN9x7FsIMRNzQ= -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.npm.taobao.org/run-async/download/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= - dependencies: - is-promise "^2.1.0" - -rx-lite-aggregates@^4.0.8: - version "4.0.8" - resolved "https://registry.npm.taobao.org/rx-lite-aggregates/download/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" - integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74= - dependencies: - rx-lite "*" - -rx-lite@*, rx-lite@^4.0.8: - version "4.0.8" - resolved "https://registry.npm.taobao.org/rx-lite/download/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" - integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= - -rxjs@^5.4.3: - version "5.5.12" - resolved "https://registry.npm.taobao.org/rxjs/download/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" - integrity sha1-b6YbinfD15PbrycL7i9D9lLXQcw= - dependencies: - symbol-observable "1.0.1" - -rxjs@^6.4.0: - version "6.5.3" - resolved "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.3.tgz#510e26317f4db91a7eb1de77d9dd9ba0a4899a3a" - integrity sha1-UQ4mMX9NuRp+sd532d2boKSJmjo= - dependencies: - tslib "^1.9.0" - safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -6381,36 +6273,43 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sax@^1.2.1, sax@^1.2.4: +sax@^1.2.1: version "1.2.4" resolved "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha1-KBYjTiN4vdxOU1T6tcqold9xANk= -saxes@^3.1.9: - version "3.1.11" - resolved "https://registry.npm.taobao.org/saxes/download/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" - integrity sha1-1Z0f0zLskq2YouCy7mRHAjhLHFs= +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.npm.taobao.org/saxes/download/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha1-7rq5U/o7dgjb6U5drbFciI+maW0= dependencies: - xmlchars "^2.1.1" + xmlchars "^2.2.0" -scheduler@0.19.1, scheduler@^0.19.1: - version "0.19.1" - resolved "https://registry.npm.taobao.org/scheduler/download/scheduler-0.19.1.tgz?cache=0&sync_timestamp=1598612918129&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fscheduler%2Fdownload%2Fscheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" - integrity sha1-Tz4u0sGn1laB9MhU+oxaHMtA8ZY= +scheduler@^0.20.1: + version "0.20.2" + resolved "https://registry.npm.taobao.org/scheduler/download/scheduler-0.20.2.tgz?cache=0&sync_timestamp=1617901111952&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fscheduler%2Fdownload%2Fscheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha1-S67jlDbjSqk7SHS93L8P6Li1DpE= dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" -"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.7.1" resolved "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc= -semver@^6.0.0, semver@^6.1.2, semver@^6.3.0: +semver@^6.0.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0= +semver@^7.2.1: + version "7.3.5" + resolved "https://registry.npm.taobao.org/semver/download/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha1-C2Ich5NI2JmOSw5L6Us/EuYBjvc= + dependencies: + lru-cache "^6.0.0" + semver@^7.3.2: version "7.3.2" resolved "https://registry.npm.taobao.org/semver/download/semver-7.3.2.tgz?cache=0&sync_timestamp=1586886267748&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" @@ -6450,7 +6349,7 @@ serve-static@^1.13.1: parseurl "~1.3.3" send "0.17.1" -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -6465,11 +6364,6 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.npm.taobao.org/setimmediate/download/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - setprototypeof@1.1.1: version "1.1.1" resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" @@ -6514,18 +6408,28 @@ shell-quote@^1.6.1: resolved "https://registry.npm.taobao.org/shell-quote/download/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha1-Z6fQLHbJ2iT5nSCAj8re0ODgS+I= +shelljs@^0.8.4: + version "0.8.4" + resolved "https://registry.npm.taobao.org/shelljs/download/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" + integrity sha1-3naE/ut2f4cWsyYHiooAh1iQ48I= + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + shellwords@^0.1.1: version "0.1.1" resolved "https://registry.npm.taobao.org/shellwords/download/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha1-1rkYHBpI05cyTISHHvvPxz/AZUs= -side-channel@^1.0.2: - version "1.0.3" - resolved "https://registry.npm.taobao.org/side-channel/download/side-channel-1.0.3.tgz#cdc46b057550bbab63706210838df5d4c19519c3" - integrity sha1-zcRrBXVQu6tjcGIQg4311MGVGcM= +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npm.taobao.org/side-channel/download/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha1-785cj9wQTudRslxY1CkAEfpeos8= dependencies: - es-abstract "^1.18.0-next.0" - object-inspect "^1.8.0" + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" @@ -6546,10 +6450,10 @@ sisteransi@^1.0.3: resolved "https://registry.npm.taobao.org/sisteransi/download/sisteransi-1.0.4.tgz?cache=0&sync_timestamp=1573411519991&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsisteransi%2Fdownload%2Fsisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3" integrity sha1-OGcT8e9ojHwDBNxMBjKJiUHK0uM= -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/slash/download/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q= +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.npm.taobao.org/sisteransi/download/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha1-E01oEpd1ZDfMBcoBNw06elcQde0= slash@^3.0.0: version "3.0.0" @@ -6565,11 +6469,6 @@ slice-ansi@^2.0.0, slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" -slide@^1.1.5: - version "1.1.6" - resolved "https://registry.npm.taobao.org/slide/download/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= - snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.npm.taobao.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -6692,10 +6591,17 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -stack-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.npm.taobao.org/stack-utils/download/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha1-M+ujiXeIVYvr/C2wWdwVjsNs67g= +stack-utils@^2.0.2: + version "2.0.3" + resolved "https://registry.npm.taobao.org/stack-utils/download/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" + integrity sha1-zV8DASb/EWt4zLPAJ/4wJxO2Enc= + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.1.1: + version "1.2.0" + resolved "https://registry.npm.taobao.org/stackframe/download/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" + integrity sha1-UkKUktY8YuuYmATBFVLj0i53kwM= stacktrace-parser@^0.1.3: version "0.1.7" @@ -6727,32 +6633,15 @@ stream-buffers@~2.2.0: resolved "https://registry.npm.taobao.org/stream-buffers/download/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" integrity sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ= -string-length@^3.1.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/string-length/download/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" - integrity sha1-EH74wjRW4Yeoq9SmEWL/SsbiWDc= +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.npm.taobao.org/string-length/download/string-length-4.0.2.tgz?cache=0&sync_timestamp=1615964368100&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-length%2Fdownload%2Fstring-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha1-qKjce9XBqCubPIuH4SX2aHG25Xo= dependencies: - astral-regex "^1.0.0" - strip-ansi "^5.2.0" + char-regex "^1.0.2" + strip-ansi "^6.0.0" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2", string-width@^2.1.0: - version "2.1.1" - resolved "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4= - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: +string-width@^3.0.0: version "3.1.0" resolved "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha1-InZ74htirxCBV0MG9prFG2IgOWE= @@ -6770,33 +6659,34 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.matchall@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/string.prototype.matchall/download/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" - integrity sha1-SLtRAyb7n962ozzqqBpuoE73ZI4= +string.prototype.matchall@^4.0.4: + version "4.0.4" + resolved "https://registry.npm.taobao.org/string.prototype.matchall/download/string.prototype.matchall-4.0.4.tgz#608f255e93e072107f5de066f81a2dfb78cf6b29" + integrity sha1-YI8lXpPgchB/XeBm+Bot+3jPayk= dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0" + es-abstract "^1.18.0-next.2" has-symbols "^1.0.1" - internal-slot "^1.0.2" - regexp.prototype.flags "^1.3.0" - side-channel "^1.0.2" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.3.1" + side-channel "^1.0.4" -string.prototype.trimend@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/string.prototype.trimend/download/string.prototype.trimend-1.0.1.tgz?cache=0&sync_timestamp=1586465675852&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimend%2Fdownload%2Fstring.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha1-hYEqa4R6wAInD1gIFGBkyZX7aRM= +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.npm.taobao.org/string.prototype.trimend/download/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha1-51rpDClCxjUEaGwYsoe0oLGkX4A= dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.5" -string.prototype.trimstart@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/string.prototype.trimstart/download/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha1-FK9tnzSwU/fPyJty+PLuFLkDmlQ= +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.npm.taobao.org/string.prototype.trimstart/download/string.prototype.trimstart-1.0.4.tgz?cache=0&sync_timestamp=1614127461366&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimstart%2Fdownload%2Fstring.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha1-s2OZr0qymZtMnGSL16P7K7Jv7u0= dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.5" string_decoder@~1.1.1: version "1.1.1" @@ -6805,20 +6695,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" @@ -6848,15 +6724,10 @@ strip-final-newline@^2.0.0: resolved "https://registry.npm.taobao.org/strip-final-newline/download/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0= -strip-json-comments@^3.0.1: - version "3.0.1" - resolved "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" - integrity sha1-hXE5dakfuHvxswXMp3OV5A0qZKc= - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-3.1.1.tgz?cache=0&sync_timestamp=1594567665371&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-json-comments%2Fdownload%2Fstrip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY= sudo-prompt@^9.0.0: version "9.1.1" @@ -6870,13 +6741,6 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz?cache=0&sync_timestamp=1569557363805&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha1-B2Srxpxj1ayELdSGfo0CXogN+PM= - dependencies: - has-flag "^3.0.0" - supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1598611787364&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -6892,12 +6756,7 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" -symbol-observable@1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/symbol-observable/download/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" - integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= - -symbol-tree@^3.2.2: +symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.npm.taobao.org/symbol-tree/download/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha1-QwY30ki6d+B4iDlR+5qg7tfGP6I= @@ -6912,19 +6771,6 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tar@^4: - version "4.4.13" - resolved "https://registry.npm.taobao.org/tar/download/tar-4.4.13.tgz?cache=0&sync_timestamp=1570258715063&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftar%2Fdownload%2Ftar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha1-Q7NkvFKIjVVSmGN7ENYHkCVKtSU= - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - temp@0.8.3: version "0.8.3" resolved "https://registry.npm.taobao.org/temp/download/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" @@ -6933,6 +6779,13 @@ temp@0.8.3: os-tmpdir "^1.0.0" rimraf "~2.2.6" +temp@^0.8.1: + version "0.8.4" + resolved "https://registry.npm.taobao.org/temp/download/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" + integrity sha1-jJejOkdwBy4KBfkZOWx2ZafdWfI= + dependencies: + rimraf "~2.6.2" + terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.npm.taobao.org/terminal-link/download/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -6955,17 +6808,12 @@ text-table@^0.2.0: resolved "https://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -throat@^4.1.0: - version "4.1.0" - resolved "https://registry.npm.taobao.org/throat/download/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= - throat@^5.0.0: version "5.0.0" resolved "https://registry.npm.taobao.org/throat/download/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" integrity sha1-xRmSNYA6rRh1SmZ9ZZtecs4Wdks= -through2@^2.0.0, through2@^2.0.1: +through2@^2.0.1: version "2.0.5" resolved "https://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0= @@ -6973,23 +6821,6 @@ through2@^2.0.0, through2@^2.0.1: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.6: - version "2.3.8" - resolved "https://registry.npm.taobao.org/through/download/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -time-stamp@^1.0.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/time-stamp/download/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" - integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha1-bTQzWIl2jSGyvNoKonfO07G/rfk= - dependencies: - os-tmpdir "~1.0.2" - tmpl@1.0.x: version "1.0.4" resolved "https://registry.npm.taobao.org/tmpl/download/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" @@ -7045,27 +6876,32 @@ tough-cookie@^2.3.3, tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -tough-cookie@^3.0.1: - version "3.0.1" - resolved "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" - integrity sha1-nfT1fnOcJpMKAYGEiH9K233Kc7I= +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" + integrity sha1-2CIjTuyogvmR8PkIgkrSYi3b7OQ= + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.1.2" + +tr46@^2.0.2: + version "2.0.2" + resolved "https://registry.npm.taobao.org/tr46/download/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + integrity sha1-Ayc1ht7xWVrgj+2zjXczzukdJHk= dependencies: - ip-regex "^2.1.0" - psl "^1.1.28" punycode "^2.1.1" -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/tr46/download/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= - dependencies: - punycode "^2.1.0" - -tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.8.1: version "1.10.0" resolved "https://registry.npm.taobao.org/tslib/download/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha1-w8GflZc/sKYpc/sJ2Q2WHuQ+XIo= +tslib@^2.0.1: + version "2.2.0" + resolved "https://registry.npm.taobao.org/tslib/download/tslib-2.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" + integrity sha1-+yxHWXfjXiQTEe3iaTzuHsZpj1w= + tsutils@^3.17.1: version "3.17.1" resolved "https://registry.npm.taobao.org/tsutils/download/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" @@ -7085,6 +6921,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npm.taobao.org/type-check/download/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha1-B7ggO/pwVsBlcFDjzNLDdzC6uPE= + dependencies: + prelude-ls "^1.2.1" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -7124,16 +6967,6 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -ua-parser-js@^0.7.18: - version "0.7.20" - resolved "https://registry.npm.taobao.org/ua-parser-js/download/ua-parser-js-0.7.20.tgz#7527178b82f6a62a0f243d1f94fd30e3e3c21098" - integrity sha1-dScXi4L2pioPJD0flP0w4+PCEJg= - uglify-es@^3.1.9: version "3.3.9" resolved "https://registry.npm.taobao.org/uglify-es/download/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" @@ -7147,6 +6980,16 @@ ultron@1.0.x: resolved "https://registry.npm.taobao.org/ultron/download/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" integrity sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po= +unbox-primitive@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/unbox-primitive/download/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha1-CF4hViXsMWJXTciFmr7nilmxRHE= + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.npm.taobao.org/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -7180,7 +7023,7 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" -universalify@^0.1.0: +universalify@^0.1.0, universalify@^0.1.2: version "0.1.2" resolved "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY= @@ -7242,15 +7085,20 @@ uuid@^3.3.2: resolved "https://registry.npm.taobao.org/uuid/download/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" integrity sha1-RWjwIW54dg7h2/Ok0s9T4iQRKGY= +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.npm.taobao.org/uuid/download/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha1-gNW1ztJxu5r2xEXyGhoExgbO++I= + v8-compile-cache@^2.0.3: version "2.1.0" resolved "https://registry.npm.taobao.org/v8-compile-cache/download/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha1-4U3jezGm0ZT1aQ1n78Tn9vxqsw4= -v8-to-istanbul@^4.1.3: - version "4.1.4" - resolved "https://registry.npm.taobao.org/v8-to-istanbul/download/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6" - integrity sha1-uXk28hwOLZmW1JheXFFW6dTknNY= +v8-to-istanbul@^7.0.0: + version "7.1.1" + resolved "https://registry.npm.taobao.org/v8-to-istanbul/download/v8-to-istanbul-7.1.1.tgz?cache=0&sync_timestamp=1617080441752&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fv8-to-istanbul%2Fdownload%2Fv8-to-istanbul-7.1.1.tgz#04bfd1026ba4577de5472df4f5e89af49de5edda" + integrity sha1-BL/RAmukV33lRy309eia9J3l7do= dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" @@ -7283,20 +7131,18 @@ vlq@^1.0.0: resolved "https://registry.npm.taobao.org/vlq/download/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" integrity sha1-wAP258C0we3WI/1u5Qu8DWod5Gg= -w3c-hr-time@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/w3c-hr-time/download/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" - integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/w3c-hr-time/download/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha1-ConN9cwVgi35w2BUNnaWPgzDCM0= dependencies: - browser-process-hrtime "^0.1.2" + browser-process-hrtime "^1.0.0" -w3c-xmlserializer@^1.1.2: - version "1.1.2" - resolved "https://registry.npm.taobao.org/w3c-xmlserializer/download/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" - integrity sha1-MEhcp9cKb9BSQgo9Ev2Q5jOc55Q= +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/w3c-xmlserializer/download/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha1-PnEEoFt1FGzGD1ZDgLf2g6zxAgo= dependencies: - domexception "^1.0.1" - webidl-conversions "^4.0.2" xml-name-validator "^3.0.0" walker@^1.0.7, walker@~1.0.5: @@ -7313,43 +7159,59 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/webidl-conversions/download/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha1-qFWYCx8LazWbodXZ+zmulB+qY60= +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.npm.taobao.org/webidl-conversions/download/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha1-rlnIoAsSFUOirMZcBDT1ew/BGv8= -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.npm.taobao.org/webidl-conversions/download/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha1-kRG01+qArNQPUnDWZmIa+ni2lRQ= + +whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.npm.taobao.org/whatwg-encoding/download/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha1-WrrPd3wyFmpR0IXWtPPn0nET3bA= dependencies: iconv-lite "0.4.24" -whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0: +whatwg-fetch@^3.0.0: version "3.0.0" resolved "https://registry.npm.taobao.org/whatwg-fetch/download/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha1-/IBORYzEYACbGiuWa8iBfSV4rvs= -whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: +whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.npm.taobao.org/whatwg-mimetype/download/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha1-PUseAxLSB5h5+Cav8Y2+7KWWD78= -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.npm.taobao.org/whatwg-url/download/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha1-wsSS8eymEpiO/T0iZr4bn8YXDQY= +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.5.0" + resolved "https://registry.npm.taobao.org/whatwg-url/download/whatwg-url-8.5.0.tgz#7752b8464fc0903fec89aa9846fc9efe07351fd3" + integrity sha1-d1K4Rk/AkD/siaqYRvye/gc1H9M= dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" + lodash "^4.7.0" + tr46 "^2.0.2" + webidl-conversions "^6.1.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/which-boxed-primitive/download/which-boxed-primitive-1.0.2.tgz?cache=0&sync_timestamp=1614855818709&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich-boxed-primitive%2Fdownload%2Fwhich-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha1-E3V7yJsgmwSf5dhkMOIc9AqJqOY= + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" which-module@^2.0.0: version "2.0.0" resolved "https://registry.npm.taobao.org/which-module/download/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.9, which@^1.3.1: +which@^1.2.9: version "1.3.1" resolved "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo= @@ -7363,32 +7225,11 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.npm.taobao.org/wide-align/download/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha1-rgdOa9wMFKQx6ATmJFScYzsABFc= - dependencies: - string-width "^1.0.2 || 2" - -word-wrap@~1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha1-YQY29rH3A4kb00dxzLF/uTtHB5w= -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/wordwrap/download/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha1-H9H2cjXVttD+54EFYAG/tpTAOwk= - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -7403,14 +7244,14 @@ wrappy@1: resolved "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^1.2.0: - version "1.3.4" - resolved "https://registry.npm.taobao.org/write-file-atomic/download/write-file-atomic-1.3.4.tgz?cache=0&sync_timestamp=1571200001498&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwrite-file-atomic%2Fdownload%2Fwrite-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" - integrity sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8= +write-file-atomic@^2.3.0: + version "2.4.3" + resolved "https://registry.npm.taobao.org/write-file-atomic/download/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha1-H9Lprh3z51uNjDZ0Q8aS1MqB9IE= dependencies: graceful-fs "^4.1.11" imurmurhash "^0.1.4" - slide "^1.1.5" + signal-exit "^3.0.2" write-file-atomic@^3.0.0: version "3.0.3" @@ -7437,11 +7278,23 @@ ws@^1.1.0, ws@^1.1.5: options ">=0.0.5" ultron "1.0.x" -ws@^7, ws@^7.0.0: +ws@^6.1.4: + version "6.2.1" + resolved "https://registry.npm.taobao.org/ws/download/ws-6.2.1.tgz?cache=0&sync_timestamp=1615064692884&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fws%2Fdownload%2Fws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha1-RC/fCkftZPWbal2P8TD0dI7VJPs= + dependencies: + async-limiter "~1.0.0" + +ws@^7: version "7.3.1" resolved "https://registry.npm.taobao.org/ws/download/ws-7.3.1.tgz?cache=0&sync_timestamp=1593925670988&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fws%2Fdownload%2Fws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" integrity sha1-0FR79n985PEqct/jEmLGjX3FUcg= +ws@^7.4.4: + version "7.4.4" + resolved "https://registry.npm.taobao.org/ws/download/ws-7.4.4.tgz?cache=0&sync_timestamp=1615064692884&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fws%2Fdownload%2Fws-7.4.4.tgz#383bc9742cb202292c9077ceab6f6047b17f2d59" + integrity sha1-ODvJdCyyAikskHfOq29gR7F/LVk= + xcode@^2.0.0: version "2.0.0" resolved "https://registry.npm.taobao.org/xcode/download/xcode-2.0.0.tgz#134f1f94c26fbfe8a9aaa9724bfb2772419da1a2" @@ -7460,7 +7313,7 @@ xmlbuilder@^9.0.7: resolved "https://registry.npm.taobao.org/xmlbuilder/download/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= -xmlchars@^2.1.1: +xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.npm.taobao.org/xmlchars/download/xmlchars-2.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fxmlchars%2Fdownload%2Fxmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha1-Bg/hvLf5x2/ioX24apvDq4lCEMs= @@ -7477,18 +7330,6 @@ xmldom@0.1.x: resolved "https://registry.npm.taobao.org/xmldom/download/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" integrity sha1-1QH5ezvbQDr4757MIFcxh6rawOk= -xpipe@^1.0.5: - version "1.0.5" - resolved "https://registry.npm.taobao.org/xpipe/download/xpipe-1.0.5.tgz#8dd8bf45fc3f7f55f0e054b878f43a62614dafdf" - integrity sha1-jdi/Rfw/f1Xw4FS4ePQ6YmFNr98= - -xregexp@^4.3.0: - version "4.3.0" - resolved "https://registry.npm.taobao.org/xregexp/download/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" - integrity sha1-fpLnPZF0qZpZdD9npM6HmgS1rlA= - dependencies: - "@babel/runtime-corejs3" "^7.8.3" - xtend@~4.0.1: version "4.0.2" resolved "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fxtend%2Fdownload%2Fxtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -7499,23 +7340,10 @@ y18n@^4.0.0: resolved "https://registry.npm.taobao.org/y18n/download/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha1-le+U+F7MgdAHwmThkKEg8KPIVms= -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yallist@^3.0.0, yallist@^3.0.3: - version "3.1.1" - resolved "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha1-27fa+b/YusmrRev2ArjLrQ1dCP0= - -yargs-parser@^15.0.1: - version "15.0.1" - resolved "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-15.0.1.tgz?cache=0&sync_timestamp=1598505163672&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" - integrity sha1-VHhq9AuCDcsvuAJbEbTWWddjI7M= - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/yallist/download/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI= yargs-parser@^18.1.2: version "18.1.3" @@ -7525,24 +7353,7 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@^14.2.0: - version "14.2.3" - resolved "https://registry.npm.taobao.org/yargs/download/yargs-14.2.3.tgz?cache=0&sync_timestamp=1598505679964&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" - integrity sha1-Ghw+3O0a+yov6jNgS8bR2NaIpBQ= - dependencies: - cliui "^5.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^15.0.1" - -yargs@^15.1.0, yargs@^15.3.1: +yargs@^15.1.0, yargs@^15.3.1, yargs@^15.4.1: version "15.4.1" resolved "https://registry.npm.taobao.org/yargs/download/yargs-15.4.1.tgz?cache=0&sync_timestamp=1598505679964&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" integrity sha1-DYehbeAa7p2L7Cv7909nhRcw9Pg= From 50d98a941c053a6f987ae92d36157f7e4afadada Mon Sep 17 00:00:00 2001 From: sunnylqm Date: Fri, 9 Apr 2021 19:37:56 +0800 Subject: [PATCH 16/27] Add hdiffpatch subspec --- Example/testHotUpdate/ios/Podfile.lock | 6 +++++- package.json | 3 ++- react-native-update.podspec | 5 +++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Example/testHotUpdate/ios/Podfile.lock b/Example/testHotUpdate/ios/Podfile.lock index 94eebcf..1408733 100644 --- a/Example/testHotUpdate/ios/Podfile.lock +++ b/Example/testHotUpdate/ios/Podfile.lock @@ -266,11 +266,15 @@ PODS: - react-native-update (5.11.0-beta2): - React - react-native-update/BSDiff (= 5.11.0-beta2) + - react-native-update/HDiffPatch (= 5.11.0-beta2) - react-native-update/RCTPushy (= 5.11.0-beta2) - SSZipArchive - react-native-update/BSDiff (5.11.0-beta2): - React - SSZipArchive + - react-native-update/HDiffPatch (5.11.0-beta2): + - React + - SSZipArchive - react-native-update/RCTPushy (5.11.0-beta2): - React - SSZipArchive @@ -503,7 +507,7 @@ SPEC CHECKSUMS: React-jsi: 74341196d9547cbcbcfa4b3bbbf03af56431d5a1 React-jsiexecutor: 06a9c77b56902ae7ffcdd7a4905f664adc5d237b React-jsinspector: 0ae35a37b20d5e031eb020a69cc5afdbd6406301 - react-native-update: 57368bcb714d347147b87e520f596ca44ab1de52 + react-native-update: db9e97cda2a5158d7b526d930676b32fbb053f10 react-native-webview: 4e96d493f9f90ba4f03b28933f30b2964df07e39 React-perflogger: 9c547d8f06b9bf00cb447f2b75e8d7f19b7e02af React-RCTActionSheet: 3080b6e12e0e1a5b313c8c0050699b5c794a1b11 diff --git a/package.json b/package.json index 47cd26c..807d34f 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,9 @@ "description": "react-native hot update", "main": "lib/index.js", "scripts": { + "submodule": "git submodule update --init --recursive", "test": "echo \"Error: no test specified\" && exit 1", - "build-lib": "git submodule update --init --recursive && $ANDROID_HOME/ndk/20.1.5948944/ndk-build NDK_PROJECT_PATH=android APP_BUILD_SCRIPT=android/jni/Android.mk NDK_LIBS_OUT=android/lib" + "build-lib": "yarn submodule && $ANDROID_HOME/ndk/20.1.5948944/ndk-build NDK_PROJECT_PATH=android APP_BUILD_SCRIPT=android/jni/Android.mk NDK_LIBS_OUT=android/lib" }, "repository": { "type": "git", diff --git a/react-native-update.podspec b/react-native-update.podspec index 593e524..49fadd9 100644 --- a/react-native-update.podspec +++ b/react-native-update.podspec @@ -32,4 +32,9 @@ Pod::Spec.new do |s| ss.source_files = 'ios/RCTPushy/BSDiff/**/*.{h,m,c}' ss.private_header_files = 'ios/RCTPushy/BSDiff/**/*.h' end + + s.subspec 'HDiffPatch' do |ss| + ss.source_files = 'ios/RCTPushy/HDiffPatch/**/*.{h,m,c}' + ss.private_header_files = 'ios/RCTPushy/HDiffPatch/**/*.h' + end end From 116d9959c24d530d5ecdf442c0002b8a5c9ef186 Mon Sep 17 00:00:00 2001 From: sunnylqm Date: Fri, 9 Apr 2021 19:38:16 +0800 Subject: [PATCH 17/27] Fix completionHandler syntax error --- ios/RCTPushy/RCTPushy.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/RCTPushy/RCTPushy.m b/ios/RCTPushy/RCTPushy.m index 431fc44..5375c4d 100644 --- a/ios/RCTPushy/RCTPushy.m +++ b/ios/RCTPushy/RCTPushy.m @@ -472,7 +472,7 @@ RCT_EXPORT_METHOD(markSuccess) NSString *bundlePatch = [unzipDir stringByAppendingPathComponent:BUNDLE_PATCH_NAME]; NSString *destination = [unzipDir stringByAppendingPathComponent:BUNDLE_FILE_NAME]; - void (^)(BOOL success) completionHandler=^(BOOL success) { + void (^completionHandler)(BOOL success) = ^(BOOL success) { if (success) { NSData *data = [NSData dataWithContentsOfFile:sourcePatch]; NSError *error = nil; @@ -500,7 +500,7 @@ RCT_EXPORT_METHOD(markSuccess) else callback([self errorWithMessage:ERROR_BSDIFF]); } - } + }; if (isHPatch) [_fileManager hdiffFileAtPath:bundlePatch fromOrigin:bundleOrigin toDestination:destination completionHandler:completionHandler]; else From f8fec9b5f0bb8cbc8d208cc4c21a1e7d46671ccc Mon Sep 17 00:00:00 2001 From: sisong Date: Fri, 9 Apr 2021 19:57:56 +0800 Subject: [PATCH 18/27] hpatch head code to C --- android/jni/hpatch.h | 6 ++++++ ios/RCTPushy/HDiffPatch/HDiffPatch.m | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/android/jni/hpatch.h b/android/jni/hpatch.h index 516df4a..9215b64 100644 --- a/android/jni/hpatch.h +++ b/android/jni/hpatch.h @@ -6,6 +6,9 @@ #define HDIFFPATCH_PATCH_H # include //for uint8_t #include "HDiffPatch/libHDiffPatch/HPatch/patch_types.h" //for hpatch_singleCompressedDiffInfo +#ifdef __cplusplus +extern "C" { +#endif //result enum { @@ -35,4 +38,7 @@ int hpatch_by_mem(const uint8_t* old,size_t oldsize, uint8_t* newBuf,size_t news const uint8_t* pat,size_t patsize,const hpatch_singleCompressedDiffInfo* patInfo); int hpatch_by_file(const char* oldfile, const char* newfile, const char* patchfile); +#ifdef __cplusplus +} +#endif #endif //HDIFFPATCH_PATCH_H \ No newline at end of file diff --git a/ios/RCTPushy/HDiffPatch/HDiffPatch.m b/ios/RCTPushy/HDiffPatch/HDiffPatch.m index faf50d7..231d2da 100644 --- a/ios/RCTPushy/HDiffPatch/HDiffPatch.m +++ b/ios/RCTPushy/HDiffPatch/HDiffPatch.m @@ -1,5 +1,5 @@ // -// BSDiff.m +// HDiffPatch.m // RCTPushy // // Created by HouSisong, All rights reserved. From f545d654dc9b0dfab14504693ac8c9050d7786ba Mon Sep 17 00:00:00 2001 From: sisong Date: Fri, 9 Apr 2021 20:21:24 +0800 Subject: [PATCH 19/27] op .so file size --- android/jni/Application.mk | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 android/jni/Application.mk diff --git a/android/jni/Application.mk b/android/jni/Application.mk new file mode 100644 index 0000000..f28e446 --- /dev/null +++ b/android/jni/Application.mk @@ -0,0 +1,7 @@ +APP_PLATFORM := android-14 +APP_CFLAGS += -Wno-error=format-security +APP_CFLAGS += -fvisibility=hidden -fvisibility-inlines-hidden +APP_CFLAGS += -ffunction-sections -fdata-sections +APP_LDFLAGS += -Wl,--gc-sections +APP_BUILD_SCRIPT := Android.mk +APP_ABI := armeabi-v7a arm64-v8a x86 x86_64 diff --git a/package.json b/package.json index 807d34f..b7aa063 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "scripts": { "submodule": "git submodule update --init --recursive", "test": "echo \"Error: no test specified\" && exit 1", - "build-lib": "yarn submodule && $ANDROID_HOME/ndk/20.1.5948944/ndk-build NDK_PROJECT_PATH=android APP_BUILD_SCRIPT=android/jni/Android.mk NDK_LIBS_OUT=android/lib" + "build-lib": "yarn submodule && $ANDROID_HOME/ndk/20.1.5948944/ndk-build NDK_PROJECT_PATH=android APP_BUILD_SCRIPT=android/jni/Android.mk NDK_APPLICATION_MK=Application.mk NDK_LIBS_OUT=android/lib" }, "repository": { "type": "git", From ca7878a9dbceec5f06a10765f145f66d207af043 Mon Sep 17 00:00:00 2001 From: sunnylqm Date: Fri, 9 Apr 2021 21:35:10 +0800 Subject: [PATCH 20/27] Fix ios build --- react-native-update.podspec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/react-native-update.podspec b/react-native-update.podspec index 49fadd9..fba3f24 100644 --- a/react-native-update.podspec +++ b/react-native-update.podspec @@ -34,7 +34,12 @@ Pod::Spec.new do |s| end s.subspec 'HDiffPatch' do |ss| - ss.source_files = 'ios/RCTPushy/HDiffPatch/**/*.{h,m,c}' + ss.source_files = ['ios/RCTPushy/HDiffPatch/**/*.{h,m,c}', + 'android/jni/hpatch.{h,c}', + 'android/jni/HDiffPatch/libHDiffPatch/HPatch/*.{h,c}', + 'android/jni/HDiffPatch/file_for_patch.{h,c}', + 'android/jni/lzma/C/LzmaDec.{h,c}', + 'android/jni/lzma/C/Lzma2Dec.{h,c}'] ss.private_header_files = 'ios/RCTPushy/HDiffPatch/**/*.h' end end From 1201315bd1527c69565f4eee4e94fc6d7f1a90a6 Mon Sep 17 00:00:00 2001 From: sisong Date: Fri, 9 Apr 2021 21:53:17 +0800 Subject: [PATCH 21/27] fix mk path --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b7aa063..cf2936a 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "scripts": { "submodule": "git submodule update --init --recursive", "test": "echo \"Error: no test specified\" && exit 1", - "build-lib": "yarn submodule && $ANDROID_HOME/ndk/20.1.5948944/ndk-build NDK_PROJECT_PATH=android APP_BUILD_SCRIPT=android/jni/Android.mk NDK_APPLICATION_MK=Application.mk NDK_LIBS_OUT=android/lib" + "build-lib": "yarn submodule && $ANDROID_HOME/ndk/20.1.5948944/ndk-build NDK_PROJECT_PATH=android APP_BUILD_SCRIPT=android/jni/Android.mk NDK_APPLICATION_MK=android/jni/Application.mk NDK_LIBS_OUT=android/lib" }, "repository": { "type": "git", From 0ccacc2f7b724817f16056c5bf329c33d346e9b6 Mon Sep 17 00:00:00 2001 From: sunnylqm Date: Fri, 9 Apr 2021 22:42:43 +0800 Subject: [PATCH 22/27] Add TestConsole --- Example/testHotUpdate/src/TestConsole.js | 73 ++++++++++++++++++++++++ Example/testHotUpdate/src/index.js | 11 ++-- 2 files changed, 80 insertions(+), 4 deletions(-) create mode 100644 Example/testHotUpdate/src/TestConsole.js diff --git a/Example/testHotUpdate/src/TestConsole.js b/Example/testHotUpdate/src/TestConsole.js new file mode 100644 index 0000000..b3a2337 --- /dev/null +++ b/Example/testHotUpdate/src/TestConsole.js @@ -0,0 +1,73 @@ +import React from 'react'; +import { + ActivityIndicator, + Alert, + Modal, + TextInput, + Button, + NativeModules, + StyleSheet, + SafeAreaView, + Text, + View, +} from 'react-native'; + +const Pushy = NativeModules.Pushy; +export default function TestConsole({visible}) { + const [text, setText] = React.useState(''); + const [running, setRunning] = React.useState(false); + return ( + + + 调试Pushy方法(方法名,参数,值换行) + + {running && } + + + + }} + />