VBA to rename picture files based on date taken

roc_on_the_rocks

Board Regular
Joined
Jun 6, 2009
Messages
175
Office Version
  1. 365
Platform
  1. Windows
Hello guys,
I'm taking the Christmas break to organize my 'digital life' and the biggest chunk of it are photos (and videos) files, ten thousands of them, in hundreds of folders.

The problem is that most of these photo files are named like 'IMG_xxxx.jpg'.

I'm looking for a macro that would scan the files in a given folder and would:
1) Rename the photo files with a naming format like this: YYYYMMDD_HHMMSS, based on 'Date Taken' from the EXIF metadata. Skip file if 'Date Taken' is unavailable (like in video files).
2) Create and save an Excel file (it can be csv) in that given folder, with columns listing the original file names and new names.

Of course #1 is more important, #2 is a 'nice to have'.

Do anyone have something like this?

Thanks a million guys! Great to be back here.
 

Excel Facts

Can you sort left to right?
To sort left-to-right, use the Sort dialog box. Click Options. Choose "Sort left to right"
Have a try with my macro. To work it needs three Class Modules: GPSExifProperties, GPSExifReader, GPSExifReader_Helper written by Wayne Phillips. Please use dummy files for testing.
VBA Code:
Option Explicit

Sub RetrieveExifData()
    'requires reference to Microsoft Scripting Runtime

    Dim fso    As Scripting.FileSystemObject
    Dim fldr   As Scripting.Folder
    Dim fl     As Scripting.file
    Dim pth    As String
    Dim fDate  As String

    On Error GoTo ExifError
    pth = "F:\test\image\"                        'must have ending backslash
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fldr = fso.GetFolder(pth)                 '<= modify this to your folder location
    For Each fl In fldr.Files
        If UCase(Right(fl.Name, 3)) = "JPG" Then
            With GPSExifReader.OpenFile(fl.Path)
                'retrieve exif date & time and format YYYYMMDD_HHMMSS
                'Debug.Print .DateTimeOriginal
                fDate = Replace(Left(Replace(.DateTimeOriginal, ":", ""), 15), " ", "_")
                If fDate <> "" Then
                    Name fl As pth & fDate & ".jpg"
                Else
                    MsgBox "File: " & fl.Name & vbCrLf & "has no EXIF information." 'exif exists but is empty
                End If
            End With
        End If
NextFile:
    Next
    Set fso = Nothing
    MsgBox "Done."
    Exit Sub
ExifError:
    MsgBox "An error has occurred with file: " & fl.Name & vbCrLf & vbCrLf & Err.Description 'no exif data (or other error)
    Err.Clear
    Resume NextFile
   
End Sub
VBA Code:
' ********************************************************************************
' *  Virtual-COM library: GPSExifProperties                                      *
' *  v1.0.0                      built Aug 27 2011                               *
' * - Usage guide: http://www.everythingaccess.com/exifgps                       *
' * ---------------------------------------------------------------------------- *
' * - Written by Wayne Phillips (EverythingAccess.com)                           *
' * - brought to you by Australia's North Central Catchment Management Authority *
' * - (www.nccma.vic.gov.au)                                                     *
' * ---------------------------------------------------------------------------- *
' * - v1.0  28/08/2011 - Initial release.                                        *
' ********************************************************************************
Option Explicit
Public VCOMObject As Object

Property Get DateTimeOriginal() As String
    DateTimeOriginal = VCOMObject.DateTimeOriginal
End Property
VBA Code:
' ********************************************************************************
' *  Virtual-COM library: GPSExifReader                                          *
' *  v1.0.0                      built Aug 27 2011                               *
' * - Usage guide: http://www.everythingaccess.com/exifgps                       *
' * ---------------------------------------------------------------------------- *
' * - Written by Wayne Phillips (EverythingAccess.com)                           *
' * - brought to you by Australia's North Central Catchment Management Authority *
' * - (www.nccma.vic.gov.au)                                                     *
' * ---------------------------------------------------------------------------- *
' * - v1.0  28/08/2011 - Initial release.                                        *
' ********************************************************************************
Option Explicit
Private Const OPTION_BASE                  As Long = 0
Private Const OPTION_FLAGS                 As Long = 2
Private Const OPTION_INCLUDE_REFERENCEDOCS As Long = 0
Private Const OPTION_DISABLEDCLASSES       As String = ""
Private Const DECOMPRESSED_EXT             As Long = 30069
Private Const SIZEOF_PTR32                 As Long = &H4
Private Const SIZEOF_PTR64                 As Long = &H8
Private Const PAGE_EXECUTE_RW              As Long = &H40
Private Const MEM_RESERVE_AND_COMMIT       As Long = &H3000
Private Const ERR_OUT_OF_MEMORY            As Long = &H7
Private m_ClassFactory As Object

#If VBA7 = False Then
    Private Declare Function VirtualAlloc Lib "kernel32" (ByVal Address As Long, ByVal Size As Long, ByVal AllocationType As Long, ByVal Protect As Long) As Long
    Private Declare Function GetModuleHandleA Lib "kernel32" (ByVal ProcName As String) As Long
    Private Declare Function GetProcAddress Lib "kernel32" (ByVal Module As Long, ByVal ProcName As String) As Long
    Private Declare Sub CopyMemoryAnsi Lib "kernel32" Alias "RtlMoveMemory" (ByVal Dest As Long, ByVal Source As String, ByVal Size As Long)
    Private Declare Sub CastToObject Lib "kernel32" Alias "RtlMoveMemory" (ByRef Dest As Object, ByRef Source As Long, ByVal Size As Long)
    
Private Type IDispatchVTable
    QueryInterface As Long
    AddRef     As Long
    Release    As Long
    GetTypeInfoCount As Long
    GetTypeInfo As Long
    GetIDsOfNames As Long
    Invoke     As Long
End Type
#Else
    Private Declare PtrSafe Function VirtualAlloc Lib "kernel32" (ByVal Address As LongPtr, ByVal Size As LongPtr, ByVal AllocationType As Long, ByVal Protect As Long) As LongPtr
    Private Declare PtrSafe Function GetModuleHandleA Lib "kernel32" (ByVal ProcName As String) As LongPtr
    Private Declare PtrSafe Function GetProcAddress Lib "kernel32" (ByVal Module As LongPtr, ByVal ProcName As String) As LongPtr
    Private Declare PtrSafe Sub CopyMemoryAnsi Lib "kernel32" Alias "RtlMoveMemory" (ByVal Dest As LongPtr, ByVal Source As String, ByVal Size As LongPtr)
    Private Declare PtrSafe Sub CastToObject Lib "kernel32" Alias "RtlMoveMemory" (ByRef Dest As Object, ByRef Source As LongPtr, ByVal Size As LongPtr)
    
Private Type IDispatchVTable
    QueryInterface As LongPtr
    AddRef     As LongPtr
    Release    As LongPtr
    GetTypeInfoCount As LongPtr
    GetTypeInfo As LongPtr
    GetIDsOfNames As LongPtr
    Invoke     As LongPtr
End Type
#End If

Private Sub Class_Initialize()

    Dim NativeCode As String
    Dim LoaderVTable As IDispatchVTable
    Dim Ignore As Boolean
    Dim ClassFactoryLoader As Object

    #If VBA7 = False Then
        Dim Kernel32Handle As Long
        Dim GetProcAddressPtr As Long
        Dim NativeCodeAddr As Long
        Dim LoaderVTablePtr As Long
        Dim LoaderObj As Long
    #Else
        Dim Kernel32Handle As LongPtr
        Dim GetProcAddressPtr As LongPtr
        Dim NativeCodeAddr As LongPtr
        Dim LoaderVTablePtr As LongPtr
        Dim LoaderObj As LongPtr
    #End If
    
    #If Win64 = False Then
        Const SIZEOF_PTR = SIZEOF_PTR32
    #Else
        Const SIZEOF_PTR = SIZEOF_PTR64
    #End If
    
    NativeCode = NativeCode & "%EEEE%::::RPZPPPh$$$$j PPPPH+T$ t5AYAZkDTX 5J%{{L3TQ@M3LR@A)DR@Xf5@@fA)AUXI3DR@ZZZZZZ?!, @RY3LDl3TA@PY,VH)DJ@XXXXXXXXXX%EEEE%::::VSPPPPj PPPPPPPP4T)D$04P)D$,4'4 )D$($ PZ3D$@+D$ YQ3H +L$ XP3Q +T$0XPf55nf)BUR[YQ^VXP2Cf<0tF1D$$kD$$@!L$$2Cg1D$$kD$$@!L$$2Ch1D$$kD$$@!L$$2Ci+\$,3Bf1Bf1rf3rf+T$(  XXXXXXXXXXXXX[^AABhWQBh]MDkGaC sQW sQVlCAB<CACDRIfTmyFpOLeaNNtmn^Rf?BZg@rZgbGMGYOJkYOrKNWVK>TY_RPOV?TY_QPOV>TY_QPOTPomWr^Ljkt=ozmnhERF<ERDCjVR<EREwDmgt]CFHEkQOzTnuctnm;<yjECFP\cDHEKSOztluKDmEKO\@KO\@dKJKbDhH@uQuAo pAndpTvHpw RLkeDHT[;r;^lMTZzFRUXEckQyb a<b a<LdvwLmvJR=vJBeZQV=tmuknQ\nxUcQGoLUPPcQF[cXFf<XFfmDY" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "CmDZ?OtZ?oOjzp_IBaGe\gGr gGsaHBejiJ@LWvQYhInfJr_cjInfuIM^dUS<dUP@FeP@f^aEyIc=hQNcLQX_LQX_cTNTB\kr<azgC^EXaet]A^EX^YG OEYBOEZ>muZ>MNk;R_=CCFQ[rpKg_t]c Kb_^;b_=@SZ\;b_C;ugsMnOLFTJDIkuUUwuUUuIweuIW^DLHLGtYTkmLLEQnZ_m[_Iie vUKdaje waloUbVaH^VaH^Gyt^W ;^lqH^lqJRi JRk J@k@nGipzMi@JIk BDja>EjA>Dj@rDkPr@kPn@h@nIhAjI QjP RnPxBoQxJkQxZhPxBlQxRdPyS SyBxRzC<ZzR<[rSxCr@xBjA=BkA=Ak@iAjpiGjpIGhPINhPeNj eCkaaCnQaPnPMPg MOfbaOhS <hVl<pfloq  oXQblX]nlY=mOXiaN[mwEzeaLEZ^yfRH>YmvKYmvKHuZKil>CVRhSGNwlGNtHd^tHYFfM;YYrAGxwAGPyP^<yAG[IqDTMG@BDfITIYvj<kr=uVwjrVwjpGoNpCqilCqie;t?nQqig;t?lPqieL=j \eF=bmIQCmuSCmwxRu[xm=U" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "TL=iUL=y\@c]\@c]ZakKQ^TtdN_lkb?Pjrgwjb?Yz[s_j>ksbATefltZYATfKqtiYUq?Ptxi[KGVn[LNavlrbgtUbvm;vNa=bkxQjTGGnygxQzWqCzk;ukr\wJjRcuUDgWeWXt<V]WEwXv\V]?kE]^cSVa\lcaWtlE^bgza]REQWZxHU_Gwk zoxeEPGZgifWFpGRpgPRS;PaocbdL<][wf\^wfJyW?>yiAhmHYORwfrfW>EYiAZmHX=Rwf@jfz_UfzXMEjXMxrJHZmuwkQTrjNEwjNEw]JRp]JVq^trq^tryfpdrAts;wpd<wpd>VhP>iWGzxN EiR?MiShyXchyY>X<Y>X<Y@BU;pBUYnCPfYqUWfNjW[ooW[oovSybIlFW;hP^;hBfYxBf;gScAzbf@;<[PbP[qzv;NEJc_YU\_YWD=iWD]PvABAyySYUorUOwOQOrO^pMiZgrO^qyKaSzz_zFzV[CzV[C\RMHJ[[Cude<iXlGxDpxxDb [Tb fLqeDSNZuoo_uQ>ZuQ>ZBTi]BTi]TZM]TZMZl^[Q\[MZz^;Q?Tc^Rt_Or=<]Ny<HqGCwJ>brjc<FU]AZU]BevMBeJSA" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & " hM?_V;=ZteBeIaA j??_THmZewReZAq _>O__>O__vpvnFpvQrrsP=MLP=MLAu[G>JdxaCrs_<MLyyYOzEQtz]cwKmcwKeBrKeBrjmU?URkJvW=CN^kNqaU?XeBvYFi_;vi_YnxZf[z_DdD ;QGeYNxZg;j_FDT [EVXz\;;EbGo;jHPZjtAZjt>;rX>DMdjzEkU[EWG[ETC^;pC^;pBOsfIpLYvQGAylE<<NKBC?sCF>nbC>nbC_ftN YJ;R]]roYJuoYJw>EVw>EYkDUYkDU@pUMlpDUKPUMe@eEsPw]c_Hb] YyDo<ajoC^WobVtP_RtE mKz_YH? fv@B_wMcFvHTqaHkCna[<Q^[Qp[[Qp[zYfVEfYcwbOjwbARUrARwmPWMpaRMpyV\hUVMprv\h\fm JvPHZyoweG>?sL@@LsAX_u>gNuAWMJ>cOOA\ppcep=C<pxz[gxEwXQkxgnkxgi; Ci_xtq Gbuu_EJdGbBuZ=vu[RjOKRjOKDZ^ShZOKOz^Sajn[wzIsguvLXKfDN@X;p?Xcbyg\syXlpFgXrCXgL<z^Lq[GMtb Zt\Gu]>xJbAMHgcrwX\FuM>IJrnH\" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "vQwcB@?u=>@KBAd<kpZCTOoqQOpNnOpNnRxXemGgZuOqSJpNlZxXaeGgU<Oq\CpNcdtXh?<NaACq^AhzwpXzwOmHrOBwMOBwMQJaFnu^yw=HpIBwOYJaBfu^vAqJuXy]<gFcCxNuHGqJw]y]>bFcAbaPhAqPh<hBm^v=RaCoWB\Ph?cBm\==RbH_W@v h MAm=]FU\ErMcz[YBc<f=]Ab\Ev]czDiBbcV=]^^\EqaczLeBbkZ=]Vn\EyQczDYBbcf=]^^\EqaczgqBb@N=\=B=F_==F_=>z\x>do<OTo<OLOyOLOynDYtP;fAs?pHowfCPHX<yLOuyqp\[Ap\yYaYFlc\dS\c[f^fTyaYTyeYV>qY?zf^?zf^TtB^TtB_A<TT?Ckk?SkV CkVA[G@>dzPZ<UodCB?dj @@cv??\HJ_EKa pId_Ov[ pIeVt^bVt^jwljjHR<nYK[QxStYGlIIRtfv?DYvk@Pr[KM=lOZtxGM?Gxs@@wQCbCLw]vNr=IqMbYbuCD>y<zBm<zARFJARgV]XXiaLXifszYfsEhtvgWKIXbI\m=vcVQqYs@=GM>@WrRGhD][jf@[i\_K<\_DPMCX" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "PMC[dwS[dwSUDfKyDwS^dfO@tfOK<E_K<xGXyZXgFy VCGWtFeHKy_R[<_RQVNK=VoR[RPmgjAqxUAq_Mba_M_yMH=frw_ZSr iqwBVNHAjO]QN]j=? >mfG>M>ibsAUZMIZeNNngAFx >yF_>yF_<Wj_s^=XM BgM BfmxnfRGRZw^=eI A]rLFbW\K=hcvEVNqzVsRMCku]AURiAURjyQDaYYRhffm]@bzZ@bzZQzVZDbxBtAVRVsookkmjVTRUGD]Mb\sU]ceE?;JzAD\jV\sUz<MMX=MIfMaMDt@HfMaMhu X\SSZxWEQ\_QRb ngGhxnxWG[GvHriywMVFHpA^gOqr@[SB@SrXAVq_RVO dnl_[Q^BJL^BiNoG?Em;=@RiOD^Vq;IN^;ybxoHRxgwdJbwku]wku]lccVS\\iWR>juasYJWA\hi>cW_<vNqCI^QPNaaPN^WbK<h]tC^oqcaPN?@Sv^\LkacqGacrxCSrx<eA=^[?Bal]WoSbh;DmjbM;a]sD^FzRUyEmjxNueUnIgpvfgOI[Gbydxs=m<ktzwTKEHOCsCq<M<uwTsXWhb;OGpDpzPffaoYSekfeWnDZh" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "Q;lZTYSekfeF>hZxACmsC[eeHdZZw=wRD_fPM QRXBNmg=x_r_F M qRH@Nmw]?nO=gCKBY?;g@QDY?lhziwW<laSCS^lX[HggdwX?maS@R^lAYBclh?aMyparFMQS^jnlaW^L>harAUMSYzrlfG^RnHa=i@qfaWvY^hIY^hIxFDIGyyebaVZ]^krl=DMHEHBHEHBQM^Inravt;v=JDHBKOPMfolOVf;OtQc;KgQ>iXoAVo=TtQBkKgpfHXOYLI]oxbD ]iYobXxzagGECZMr<lN?eCp@qWbIPONiopsMJh\ruWa^Xw^a[GVeY;TSIcFdv];<ThyCk^kVIaTivWfduhY[qyKmERSbdZvD[kWQdThn[bZky]eTFkWQdThn[bK;U]uDt=JFJBwokZXPTeeLdmrsMuc<rJ]EeBKN[=tqZbVrFZG=yeyFnmoMQRPrP=rqwUc>Hj]Ejv]vHm\sjvMv[Mls[R=v[R=vxWj=BR=tBGB] wB]BLSXaSRMCGZI=<KL^GjI=<KL?FZYofHn_mTasi@b_mVkqiA XlVkYgJdtWwfBXhfo]<eBXjlo]<gpA>baXPRpH^fePpVI Nr@dGvpo[" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "yQkMpsoZ;pSX>NGkzlxTEL@u@OprxqI]<SvcCsNBFq>H>Ov[z>IdE>FE@>FE@CBSK^NQN^UpB^UpBcPfIWlLBFtkbWhtnWhr>uXr>Wes;YYCnR^LlkZ[kkZ[izBwikZPaMtwIMtwIqpaBm<cG=dONlt@^=lgfltH^\tGNhpQGJLzlJqKihnjlJPkikMJlJMuluromdj@RZbOJ;bsKD]o<UEACkMN[JMrYurlMdjCrZbLj;bpiD]nXUEAgkMO?JMs;urRqdk=NZbrV;bNSD]mhUEBWkMMOJMqIurTOdk;pZbth;bHoD]naUEA^kMNFJMrNur\\djscZc=;;b@rD]piUE_VEMq>uEdvDuABDzpGDzpGuJoluU^iuU^iJQHbpT^irQTbaIyhuQ^@EYJHgkR<EUryhuNyEUryPM]y@ezQP=VUQux=DmU=DEsU>Ae^<EfY<Ef^m]J^=UevE]irTEMsE]b_UUMwoXIsU]_xTYUqo]CzSYUsj]Cxia@=TvOyvIpFVwaCUGg;jd=?HZC@hdREkTX=TxgyKwXF]v=]XsiFZAzXtB?teYrerMf G[SumnR_NOy;TMQ;BmXCjJyxsgW>vOr" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "CO=PTpADL[WzrtVoE\>BFCRQscM<fo[h<eoliPL\lP kSl\\yT;EtsbjyDDVN=k[uwWXxeo<M@_YqISCCJuJJKnni]wbBTqh[rdNhx@msq<__HWjaHohVi[[s[[xW?szYyyCpe_]MPNKJjgXVnKe;<uvLO<nJFDSXQFgx^REZBkLcaZGBrCHV@SCIE^NaXCshdvyLjLuvA^nDdoMT=vcvp?lLCYAHZ=Uqyx>Tj<g_NNpil;yAQcMJkwL_c<y_kqcrg?v[iV_R[?VOsvPaLbrdXFT_<go^t>PzXkys;lMWl[?cIuvj=U@HtOwB[QLkXkhO?uCf@PhYgO\AgRlENPjaNDAfr^haMCajuh^TmNAnfdPb^ezFYvFXEBd lJ VjJGXZHzcuQhsUSLVAr=bI^uE@]OaPykrzi^iGv; @E;]_ToylRdl>;agxbBepR?mzwi@e^?XALUHlqS^kVCXhskXJSW\=f<ctyJQsbYxfjWyZ;oy;];YA_ggTh^\O@wUpEhhU^VfwS_iVDcvW?Kklpcy=rK>Hu>aeKdnRha_HVbFKHnFJJRFnU<Z>cdPrLDmCKVg<SWye>aTdMNDBO;iYqrn_uP" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "ZBeQmmjygo<\=;J\oUQ tNifQa?VhWyZMa>@lRzdGS o?y=_\PX@Zlpd^Yt>JrDHbdaJC?[gR@YHRlGps\X i^ydwOFb^OODORwHdRkmtV=u]ucM\v_PTUpeOkqM_IZLIbzWCJZWw^>[ORGurXeld\qeN\^;GQxdaKTemjd nFyVnchCOrGd[zEngZKHYz WHB^GUTnuNL^mTxLXzZQ>\YsO;ErxwJJwhCKICBPOJlavWIWfczox_F?f@wQMjH]BVVlLuAsBRjAtTgL[PhhK?MXCaoporYMlIM  TQKrujPlr\LgOWdc_SkBfR?;F_ zmYWF_SvhuVnjkZK RM]sIdIGCw@RW>sfHTQLvZGpnGtCvRf_LAfDizie;PMXordZEt<ymLJnAp<FjoDsv\RoANlGDmmpeWO]T=vhULZQfRtCtEuua@v@e<H <X<CQmeJcuwsJhe<GTvk GXswQT];bwKXOe]IDtXj_V?CZYDgG;x^CIwInJ\@xYzUDVwAfCP\_[ZJPxrjLbHqZpwiPJhJoVZv<Gh?hmzFiL;UKYhGsGRX<pr_yq>BZ_@Ztr]yLMy<gUdA?mA[aX?w[skvpJwyK g" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & ">YZr=?INFSs\kwwyWihhrZLRemwzDsZx;DVJ;\\RDQVoyOcPesSuI]i x>nGbeDKXlw[;>ITa=pcoWLHDBJEa;_I_QgarpPm;mfCwPlQeUXpOayKYsm>p pDRzvcg<eRdNl=io\sZ<BkrAEj<N N>b]MMhhSOvWOFxjVB\fYBvp_WgkMk=UAUCrJkt@pmmHRgKwky\Qn\SwiQjpVYEyqX=kcv[^l;ro^?AgKVAW_hmqAmgAdMGjodtDsWy ZLrzkfBi<Vhpd=zrA^y@PpBUNbgYRLAcY>BXP;XQ@pa?E A ??FPeaOPp\tMpRP;eaJHB_YUe??Tvp>wvIAEcuu;g\]D<LJc]waP]DDitnaZyuR;kw?]@aYNwxxrFoc]JIQFQz>JOFEyFlL[zYUpOWKhKIIasEAOGlF?kqPNzZr OH;V;pmADvzvwgJ]husxg]RkU_hlZWiCVPYKTpHxPrBq=kEoNM;  Ee<abH^cm[zr=ukppWbOeVJlyEFaDMxbcSmCHmKW qGLVO[Yj twqG]JboOtqZUMHogQqC\QKAymywNWoxRnIt=oUsvyYTMXRXJNp\Vw_ bQsid g_N>]@Zk Jqf" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "q?DKLKtTtDSsNrobG;?Ud>^>OGMrFuYwbM<RZqd\szjxfQWvr==aCQQiUaFngPEVXV;EGBX;oUOH=iEP?Rj@n;pXxm^sagLRew[V>HSHsC<khx]<uiACWGOi\^nk ZwU=HYx;zMBynlPMp>?qfTOq<DyjFjFGxTCmQc^mzpq@<LH\D_WIKn>la<Il=UlpVfBPtK?GgZF?UMsDYY]=Vj ;>\lrCI_Iqui ;Ft[k;zpyZAVlf^u;ASqbUr@zkZGSI_LshXjDSjYHaomm_tzn>PU YWdTo\xtNolMLR];v;;qcKfKz?jgJWx<rOjdELyZuNrYR L]YVKxCB?cAnF^SZhdnVMyryoV GxcwrlRZMm^sXyLmS]zJC ?qpKrm;aiqFpo_YgV[cZZxe[wErvTeaqd][Lboql^n]tgybWAW>xr]ScBjmTzQSHe ^XwqUuP \lJbs]vVpgMlHaUzgYj AgNO>r idgjRlcufJnTBaNTH>BktYgFT]?lNOjibDG=;==gvQFxlGb<kyomOE]SPFs[pvSSV>[ZekdrxrH[uBVWDnc;qgt?FEC<XuwhfhSLt_<HBGqbV<t<pbIcbrwo;NiJWk" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "EQVW<QB tflzxNobcYzzYx_Cr?J[xgPXzekuPKDxq[[ukO[RkTh[<CEB?ZGc<liS<h@PnSz\^jYm[zRlUlMGcMUk>>vdCB?rhNq>D<vwoWnjHESaME^zNh]FHtJTnx??Ud?^Ih cNGXUCBYkU@dPwN?nNTrQBuc=sLdf;i=WGKxHt]pJJKNCsHweKnBOA]JUSKlbSkASRxis[dR^H_EuHQKtQVuQYhxF?mOL?QOQ\>oUPHOAF]aN<sSbHFVqA[GbLVcYk=GPB;kCv<RaKkcD_JNpAxaOVTLMABvruHDXwjyB]CuKKAt?W^MHKeNxgcaHlQFk_WAYaWqPGHCTqS?<N<ehJU?\K;UKi ^?<mzdWTVCXs=pQhp]kNSCYZyosOJR[wR?SiI?N[;gP_d<[]@rkmJkPJKvK?jgaPXkR<j^LPnnAiVEm]\l@r^kwlNkFNw<M<X@Hwj@CwyQKzme^@acwGTej>v?XGwNpjxt=K[C@P[cnJ\bUR[?r[<ySKg_>BEbK]Qa?vCsENjRE?WTFeqtRJl^Kaujy SWOByEzyXiXWmutJ]ggmYJ=J<[M]hu<eOMgH]G[V>L@wizYnNDJWONFQ_K" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "jz;kOg<?;lo@qdSlEVTwDiEpu>>x?FRXT<<eDo\sTC\<X?EuDv<y@nt[NujtMi^But?iN?TkqJdIjZXNDSLEeQ;r;OoAmqal\IZxvqIq<QRbCZ_ddaG;GTg^sKDZ;Dp@bQVLmoZhnsgekrA uFzN? Cy<@vfk=grOebA^hKLM=qCp?ctzKnLIKHWoHjYC[^umgY=ZoHVfUHCArbD>xxlcfTvCLqH\a=iUn\KuIHWYYuxea]qI^T;nvv@X>\LbJ[P?K?***;SlAzJI;?PWuVQJzyLc;S;AMOEeK;KswLx^=^@uoZ[vbgrU;hnW<_ CqkJh_HpD>uEhkHJB^dDimM? LMlPXMWbWXeQfN]fd[cTePN^ooLupFZ xpYRv?>g[pYRRD>FIbiSwGlO@vKFtSTuiDGBK;Ow;lLwM^A[FTskfSmq;ifKFHFxawU;eeYR=]lfArjqvOaPS=FdCz JHKH\dEy@OqFmv\liYzWk^\\tc^DMLfXkqY@Bx[=kDoRwQCa@elG@rsHt]\]iXGfL]mQjehYSQZF>G^LgptifkcMlzLorAaJhcrWBjkkIKAI?eoeE^ t;LQq GdnJ] AkpyvH?XL" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "MgBuAMaswVPE_svq_;?qMcEtacB<KUq@ zQuRva<V=T><Y\IGIX^[lKzaRJJBUr^hQdRBQ>>m^iNHi?OgMLr\KfH_>BahQNt Pu< hT??DLPMY]BrAV]A]<dn> ZvN m?TYJT =sD<ktzPvyp@Uysb\>If AKmFg=PpgeLWe@xpiH<xbMHcRapBUFE;HeostSqBa PpPnUfxz\DkBCv]<^qNgP YsSY@ZTqzIHoCGA]pZuI^?SCdBCX^mhK>Gr]Mhh_ZlUapTT@X]DPlYVkXp=x\vloWG\SrzBvyxkimKP<hySDXxVwAhn=IxjWsiuP=KqiGYrJnuqiFPWf dJEfm=FNLnD=h]@l=AQDb=slhCyHOTpRM_@Gd;oaBjbBz^eoNB ?Jftq]Fe PflqPE]u@CrSFH=FeZRBMsKK_[azi[MB<K;kyUqZsalq=fgqpt\]qYJNqyheRdHn[iCfZTcpQ=KI=FCYdW=i=y?TvEASOM?Aq_qLj@HpXYnH]XinT? CkNsalShhPnaKjq@tQVNJ^y\vRoN]HzexKI@i;X?ro[mYBN^o[dkaN[NdSmrNC_Pn<@WjgrLXO]FPhSRCi_KRbSwU" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "_@][[?mi vgdp>riP<xomE@N;[uoNATi\@<RX?fWCILVU=AUFwH=VDzM[Ob_u_BW]YLc\QaWlnHE>J_VoobJyCQheq<KE@y>zBeshwj=uFP=tuarxeKxHfQ\mW;NDYmHC\enIJZ?YGTn\iOdjhbmnNKewrYuDgqpI <SYvxGWtfiZrMpp\WrxJkM?nf;]?Ski@qa@rTQQ@Ca\DgOHtvSkeN_>LtJwMOzbOH>RZ_^hhr\O@CyZFypINO;F??Ei?ABvZ?Z^u[>>tY[q?JkoodoIcyQLlyXc<WV@WS=ompoAF\NIexPLgLbo[@SxI_z<wq[ofVdtvppsO@khzmQKsP^TbM@ aXYKLhAsa_[XKbRs^Uk^ifllsK]dn;SA;Xaur_<qsNi<ab_uiPs]SyWH_^FRNERGtnM_]LznCdpqL?vAHQqBs rrZ^zfKqjovwpD@SIQptL_UmCmyK=jI=es[zC^Tqi<bVzQYe^SiXkd\hBGoEMZd_TI[AIyX\=gDvH?i_BVgBKaG_grYyFGbh[jrYgMjElrYOeLhwlBwmvpQb@=G?ko>NINHECqgqq<zlfabRdPQNnlmAfc[t^fkbT?@HgJbvA" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "MSFnT=dpWA<SXAaVPqXdAyD_MgMpWHA^odBSGmxh<KKWnWpHE>UQqH]WawnrQbs Cj^DwlRK?QoO <sIB^^nD=sSWX;QTo<gsoRZ^WBQ?T<OrfM<qpEYZC>uySWzMV]Oa@iXllcXhymbv \PjIlaKN\sD@UUG]nP[]YrTKQbft NEDJUyiOUR NccEyKtONn[Vp@pVAt?[mIoPe^=;VjEn\dG URTxyeOAfaLg@Q[FM_QRwnX_syYcMzUd[YLOchwjHPD=NnIutIeLdKeOBN^LxAk>KZ?XfkEGQAxrGN?MAYiZrzGGEBtvnwrv<<]Kx]^x?Nt@\y<eSBt;^ijikCkTBeQTxmKEAEbY<OnwobjvrVzKlTv ZqD^E;>C@hpyY<OtnHLtEPBODTqhhQVrGPBKCjXxOdPJzbzGfgXoeGdb;sZunqd[g?\V>QyCC]BKRCJEjUO\>SN]pQ<FmhwonCsVM[xRStyYsDNlmAjvfqFsVnv=rqsToG[rDgw;T;rm^j<TJH>aQg?nXAQsCwdVlgNoV[VWxkuw ;O iE ^TJSD_A]sjUD?KoNUJHCKLeeLOuscn^QLoJjlKmuM>fBTtRqalW" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "UcYs;wC z_lvADVOnpRcWlhpMROu^ _>TtpUCcXHBHtYhVNR>KSIhhCbnzUIvCZv;AHAImjZ;UHfc\LIo[\lyImq[JXRiXjdbI@cmgoevJLWCLsIybwL _npUq\EkQlX]oQRZ=D<wLii<SmS?gYEtwXLTcbT[VzflM@\Qthmp<MbYibQONPje=M]rAr@QcoTgLs>EudxZ^=Zh@Q;GPbqyat IW?enNA>dJl;kVsHhuvCU@XlXhCFhwoclOQ?ejVEIGCoBkBraAC>gImZzGXQY^__gKcIQURO@gXrfimwj[OeP>XshPhUgecevumECZDCxVYixKCYrOfTsIqHeYk^Ee\CV\REad\YQ?FxVdo^YeTYXlMtIsnplDL;[]<YwIS;YL;X_KwkBp?dIAqrGs@O <dpbNTdTel<lTZqOlO?nUkxoS Hv>TMkaRjz_xwGB_WSTPHcLs[svzHUEehkQjBdyrROhcdgiwWmlvGq[VMrz_GiCap;LxGKCeQNJIkQyqfk@JbpErVAC=GEZONiIrHegUOYFmTDuVJ[ZtMTfbE;lRe=A@b>pPiXKxO@RhLWTbfsM]yBqPi^WLzgPxVywVOTcMY" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "D[v=B]]TT_TrqA]wrzJMxE=R@nw\RH]eUHuSBo[YTubaR; NGQPsbSK>TLlFyYLoMXrwKvFtcf@GE@BhfBL]aMeUa\]Ko@nc^<A=xqyyOCh_pYLf\I@=[lywkV;YMpFcW] OpAniXpUYCGeBy\UCrwmNPt>cKl? ugDH]HwueEBTcPUA^tI;wzGm_MZXFJOeJRlrAe_pJlHMWKcwZlLKnqd^mUGXBAtiELWXEgWV MY?yqOa\B;k<CZ<?RRCtfG>\oAOskYNEzJ?^AgdiDIKn[teuCfOrKak]<Yv]LpDb ge[D?^F@YwEBtyvPYT[V^U<FlG=MPTtdxklncGrxBv^;WMMgRnGLIZoZrMRHGHtUeI;PeEJsgX[c?EZThLQ??tI><;nhWhGFf]csym^AeRhb^Dh I_q?YjcjeSUdezJIIV[doPk>^>dyiE@kd]WBlja]=n<MsKb=aoqyZ=?jrudpMuphzKXbr<Tq]Yc Qg=UbRDN[<NkwRVmVyegynz;iRuMkEZJ=^yVxDZadY<spywSLJX];S[C?WgHDsnIJDOcOWYarurKZe_F_GpU_lyyvz=_zVLjSEtgV?YKq<TUY?dDZd" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "MF\U]C]wQqZzGEE^kJuDY=YA_u\]zaKE]<;MXoZpIu]j?ayiCcGEOing<cgzo[jmg;zlmZ\ic>>dNOCXv>F?@]HXzSHCvi^pdR;^ouRjHxuFNu^fovQIDSD?kNdIPgkOOJJHBY@acNiAB]QlDQD=_ OAPpT^DWDVxz^bZjs=nQ_aRQRqku?QtfDob;PKkziQ_ vpdNrHnKisKxcGF[Y=uKCEsrhoukoX@kyTwXEvOw\r=sBXs;@JQFmzg;]bYmJ?AGHZ<jqHwIXmrGPbRA[YEpJ;aeP@o<Ci>_;v@q^hH?qjWdr pOm;nFinKZEGE;gymyH[HHNNuiJ>OkbchgqRwLIyle<EVUESeV<dR fjU]nw^fCgSDJP@Z <<kZPXO;>qx@ddmrnZV;wANPcmyHOcOzsnemAW_dyXKxqfQ_YSBCKOZZlz;mwQ;RfHLJY@F]j=T?WvdAirnFG<uCcVz[OG^IyA @bPZzNl?J[gjYRnruhROW[odOwAj?bMiX [kweAZ P v;<BAqzOG@bUj[gwXy?[PSBy f c;A^FsBg JSBpuX=JHTFY[o=OZqFPVom^v?_>?y@orNziJt?A_jzEGVq" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "i[Zi_xkQhET^wtfi@aoSmcqu;mCHcwvuhoDmsZptTCxKwGqtG;s^?GhD \RSc]]eUNXgCdd;A[OiIIkgQp;?^wv_P iIGYgo>;<BC=dl@cmq\zTOacG@R;YyDeNXc?nYs[QygZ=zKyxC]EhyEwGSRhaDuEGlY@=LDY[Uy@W@gZF^;FVenBMeQA>NhBqasm]=I buDEeLoXuP]KgNcfvvanedi>fqckCSiLGpEmCWfwmgZ=?rwnBknInYjq[C=mM nonGzAkVyDlAOT;fwEWI>qSeNmAvNPCDyVph<r]CRbgrWqWft;]qSmBLp[a[;UsSMpB\>NX]tc\bdcjgoODir\<FoTXO gx?ZbTxBVzrxMwttI@LA?>^AhUa^Sk>fjua>IfQmOS?cDVepgnUXqqSpHbEtXMIDKk_EvZXHg@dxQ[idP_cfRnIxZit>Y@K<Xmo]Z_bJtGbDT[_celvJlYoCCVnqSz_g@Hw;dWkfIGdM?WovRelcWtoAJewxLyBiR=nPLqMu_]zD>ICPB>gNSWikyqE@;<kel\jjgfe_lekVvT<x;CxmYthDM<wIa@azULmfs<dOABSXi=Icf\t<bbiHlAH" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "eK@PJx@OhB@SyOYBGFm_Whf_jTR;ni@RkxVs_OL\WyCXawNHuOm\INwENXsBXhvjnxs=IIaq[X?SLfuWQnPoWjY>\q]Rz^RHiHqXIIxUlY_ohZx?xOIwq_@PO?sE_xhowk^dM=jhv;dX>WfpjxlvIlOyXyAHF]pA=yaeoHpsj>RKVJrgYb<gbBnaRM@F> >Ta\L;Mpg^fxG gMh?TqUjKJxy\gwN;Iiq;oq=uSiY[I[itDhHFxbf]BsHPfWAEG;[zwf?HssKjEJbfT@PlFdYhWuvzeTD\pE]rSm?_B^^[OViVqrRu<@fQRxcC^ZkUfFJgW< vu<dTNlVU?thMxszJviJGLapWYDj;gs=PsgsFiFbORdRk;IJ=cMc<<=GdAiOGt\gqZU_]fhsfxUQYzqKp[R;=DveE@nCZNVknnkcx=\CDWVsTVYVtgdX[cmgigpZywmmWPMNRK;\<aI=\@ksEQuYArk]vA<zehaY d][RVM]cHIBJaM@MTsWVf]JfhamBtgvz lMrqMFrVeF[wkINnjnK@RLtIwmkrLdni@FWkWCnpZy\q SyhYrOg]aqQqzp\zdsa>;vYKqEOt<j\Kkoe=a" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & ">ZmMr;;daoVu[ZQOOARhyQOCHsaWrhy^JtjSWj;VfmIxxoE__mjP[LKU>GU<WqZbMx?ATQAbCXwlkahOaQogiPpaicKJsQm=es;mRGjVqGbFDt^\BuhsCWKsGqID TrOndgepBzH]gVoJOZfioixwF;XX[ac>W]Ioo;c>q[tJfxBNB]=k\hBcuZ=<PHcmKr\zlYzenARPW;MR;rQEmeqod=ZgSk\tMmEFfG?_n<Qtm=t?eEWQ=L_NZNRd_p\tCaNVb^lSskge?\wya=uLyAFDlVekaNDu^oQPrRHx e>zl]KJxdvsPuJgK>Q<lLyJML< noyOvqwNwQKqQmg;UpKYn@n OhDj^gbZuupLu\Vcb;RjYsMsbAUXNR\sEpaG=JyTwBO<PBFimAlpFqecfyMIgy>WxqLr^YTWpMIv;tpNT rGv@EljuM<pJ@YqZMIRtNsOBRKKIKIPWM_Zb__fwSWHw]TMkVO un[ICb;vuxK@oJJHxPUzW_VafXGys?\EWa;FIpGSKgcsn@HteNIDHRGrNEoK]Z\WmXrMHBgOuUt[d[;;X\ipH[XsE[sykUGIqHdAyIvB_OMo\noUeQ;ZT;\;cb" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "BP>BF]]pShn^bSs]wfSp=idzOUbLG\ULpSQPdAfTKHzgjv@qMdUr IkSJNE?faAYPtiZyopq<>Q xJjPcy?Fba^l_RjJhb_huAwYgjFYnlTT QXUwWgTmf<pY_XLCiHNw=mru]glI<GhSEE[frpZUwnD=KBp_swy<^H ]E<Hsgn[nTsIwrtB?;IbFDZOd<e\dh<yjk[^Q@A^__GthvM=wisFbM[Z<gqGBPuU?J^<@v]VhGh@Gu=UWchCh<K^TZDE=u^qBpDJ]RkwErYUumfhEtixdKy t\Lhcevle[WnZDGNixOYVP_@gTU?XVWw^ShKAUrtCjJrGvHSEYxp]yYocy[bE=X]ty^LRiqrf =VNjBuBl[SFsbYBqvxEtYnA<zF_DK LHc=iseENNMTi=@PgAlw kPC?\jqYx=QFl@eYgjbTgFmBryAFXSoGhYEc<pC\htfI;KiziW<s^znzf<G>=wcjLrcj@ysKGiWiAC<EztcU@rUaEbSEuAJjNkYgBoAWqfxuFWCPD^SwwISpBhGHr^ZmfK<BGlLo>S>\gf>PfsYvx>PRLJ<^Xz=jiZqeSFoDlue@ciAT\<rXYjdy^=T<Aeu" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "PbFd=EJsEcxtAk@W_oK;lf][=_<;lXsThfqLxpCqcCIFC\P fomnv_]qVj=kdqNNV]aNXWxRHr=TXUL^ivh<mZiYuh\Oc\w<Jq\gp]?lGMpFCeY_thdGc[Nhr]Irbo>n?WqGIbGi@rAEFPYYJf\@oOc<>xx?HMRJ>ourWtj@c[HuaEflEKe<sdYIMZ>y?fMGm?rf>EKkAnGTihCyJ\tuyF[vcoVaodNWOL<wsyuzWFGFeux>CCEHDc??lCs@e tTZi_h?NwG><yYzg;KTkNm_>]TQJe[]JmM?fhupiwoS ow UUWNi>inJnE[\BRY_efN[PiHB>f=\X]t\VScQJwsaJx ZBL=relG=bQnsaswoEV?CnHJVmSHDEDV@ooVF<c;A>k?nVWn@xaejO^OdfZt;KQiOxBKnSLJfkAQ=^RKC\GVRwRcAQEoOiWkjzNoWW>>S<w@Kgss_;H?k[w^[]pU bpioxkEC mdGLz\VEW[J=ECK^UHvQRCH\bBGMiJsAgrjKdANswnRbrCCbWo^fA\EjxUn\pHgckI?>ERV^>V[IermFi@[wHxnIlExoYdnHRhPJTXKq^k\Fv> gJDzhTsX_i" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "LD vzBowR  AMvLt[H<S\auaYTWmCcFOGkZ_rqSsyj]WTpIk\uQshWmB\dtgPOMirgCmBlWXRcKov>GQpQYrBfhpc<sm;C=;>OAgOuOUHw RFgguOK@elC=ah fO]Cjvs\yEBUfQycoHAf\Wstie<MOYB>?SYHXcraFTmBTnGgnJrnOJ\dqiXejayLRpjscqq[mE?SmahTEC_GPqhcMpQNHUcRYmyS>[^UyJCnfdco\hTjRMGOWPzeOQ^rgXjuFRnaUClzokEzFaA]>;J\<^xGbziml]kys;zqKAKyYFuVBRHSuh?ZkFs =^gbUbHkaFRYICa@xq><v]D^FCOHZVKaFRt=oWYQq_OZQZn=yNyJO=k^oLdqbUOdFPLM_f@?>sOn?bLbcaOk_JeJccpyj_sqP^pD[>SsTVGqDiC;?Yfa;g=P??bLSWqOuXCYIQjv]CR;VUQbHEt_GzGVIuQBClye<cizUxK_?GRCv[ZpFTzF@WMLPiF O\HcpvX_Lf=[JPHAM>cFHbkB]RfjIpMevxFbf?NDvnril@ UaHnhC?VhdBCnsCl<Ly =HsTlMpVlLkY>SJRyx_;Xk?<;fMpSBPOgfO" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "lGvd<D^iNy_PX@\YZbIY^fKxdVk p_QjvMoDkr\ueWf< j?FFd;Cl<]wHAmZuWxuUbQUZbMHXFT^TtUli;AxwYnlFlbSTg=^_;@rKiBDYf<>J;FSWTJKoVt=PgvJdYACGQGV? ORfo^j?HQqt@[>m>zrbB;@cqwG\ gXi];Mx^LPOs[AaRs;FfFaOscxZgnh>Oom<HjjmYxke\ \ ImE>\NScAvpk;E\ChVHV;BWcgrg\A;RZKtASAu_ UlkzsyNSHlhzP>;sI=>YsECutE<nFrgfqmKJJVq=taGFI_ppfHMMm[qF@oz<XekmjiYScAxWcCucQCqlywVo kdGiwSfxfuEI]dREo@uJeUqtB lVNl kKMuKX]Uve=]MZEiIJE?]kJvzC_R\bZ_IuZBbEiAz _RILj<_xKSWVrViHo?Uq]UnmfECpCnpvhNf=tUdLF]u UWV_=NGNWtLa<jpEWNDw<JHiy>]Or^[?iacUHrWgpFmq<@qVP_zvGFToHM E;y[Ale?XNArjM=vzuMfTL\hBCJpfrfWLAVVGCV]bD@AxPKy^htvf\=iddBQZw_;@rU@@=jcS TlDhqdAnQc^COqne" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "EiUa?H=_TF[WvgcLfqtJlM@;fzKbi?^bc gwbsoRyP[Giw[]ifjPeBJheSuwLZOE[l?^T]jOykSI^?\NFVRcY?CPldpPuAFw^RKE^@lHWJbPKO^[FI? nnXtxG<CxOGjnjuuo@?TVz^mc Ii>dLECPf Cr_cULmoO_drsaus@BXBWBHf]Fkmz<O?<fHWYFRMnYz]iXbuGDGDk@nzlI z?u<pJJ_yVjoPaY;yivnBAedXyp]YHK<HjJlZBlD@BiVUHc tmJ<^?>dPATjPiaUqoamKFGkBk?<=a<NndOS=edpHqbz[fX]cSwHe>=HhnrDpArxREt^AwT_==T>MQDuh?xmK^z^<[gUjXieT_PvuIe Znihsl<FRO=\VGe]WAjwGHb=NaZAnBUpwlRuD>iSqRhCOhvdw=Y_VPRM[I;]@dU<t\FPRFhKS_m?\PGVi<A?eDVdN><^^nOMZyLKm_[AdtRbtbzzvGY?FTiO\=r@zVfbXOnGjEz_QMXPDI<QFCo=lXPWeD;KOQhzpq[aM@Lli nFROWk>hLcfQ]BM?Kq I]kklGogqCJ;MX@N[idXl?^lGlknuMJ@RONsTe_wOiFoQHTO" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "q__vswbF[ iQp=KaWtmptdAe\o>lTA[Wmah xdaaCMwyDoZodEs=LmpC]gQiqmeuZvpMYwOe_]]l=JsNzpVEQco>O@pDb@YX tOACzVR]PefQHphBg_hzOaL_Iwmt@bYLlZiQT]Vs_c<_NklCZfqX f=_rM@?=<lQ_aArbvZfl@oVqmLYnvY>Em<RTbAZzr<MV=i^zSMo<MkHdppRbl_?v@dWsQPwfsIHLRlUDvMD>Zl ThUlV>S?FIhgYygb[Bz^PCmL@;V<MV]rHLBZlSpHC_Xqb\?izve_w^C^Z[Bv;dTPZZokgdHHp;uxPzGYd[djqojeClG>\lA\[sMao<uEcwJbr\jQfH S]LeDj mP]zdJQpEZ?jAiV?NPYiEWTClyNSGoggtRrph@XJShrkRb];pWL]m^nolJZEvh[p<NkdaJHOp^YDSHz]@ IOC;o[l;>dmR<M[]DpuC^KQvpUqNzxdGs]NRRuazfVCjxzCeQDRjNSN=@n?A<Y@_ciXaImG>^r]CBrBUklDk[AZ[aCRsow@VKHSeLhc<ivIUEvKeBQASjoxO]kwIZBak@ k^; ER\qrvItl<RyW[baoN^CFXl^@" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "\VAmkR\tej^epaRoIUoLVAr=uvfMoizeJ;y;pMN;JyoyoIj;MXS@ KUHbM>quIBI@FR@yVOhxFLIeBqQ^gveh;aCT[E JtXoYM bzlkQHJg\afGLVEGQtqgDYEzcL><S?=_ZgFlKRV]r^mOMLIA[hrhH_wGvoqjRF>oZo]sT^nyX<wQ _ a>BkohVa zo\GSVyAe?evNwERmixbKFoByHHqFrh<ocaq^XqJa=ALSgFUd<s>XjkWbmV\SrjixwzutDCBKvv=GF@rZayZgYpEkEZBQZf>wUur^pjyKXVx=fh=n=jk?KXX@HFNYygioeRUjRaQXHLh=^QTi<Zwg_jOl\_?pMaxwGQ D iK\HNX?zRI[<fj[IUJCnqpy@gPrSyJ fCq\GWAMrLbMD@o=S=?\kLyeuU qivDxMHNttQSet;M\=UWAEM>UVZ[JNjENYrjgYl>_[@Cdx\iMDSz?uk>uNIbC<DOn fL_zXcyKdsu gde@DtjSByn^tyDW\VI=ZQePskJWKSCra;e?nwGfcqrxREhN?mNeCpZHUDOnBggMk<vHUXVVWOn>scy@tPQ@gLEe]w pKKkbod;BoRJxTOiMEpf" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "nQKUAgKW\iKT@mLwRHLCucqpnTRoV\eNhNk?mmISD@=Ot\NRJwOFCYMfY_NNAWrbCUJSKUI[ug\X^]ePsKUd isvDD\xUE<vHPDfZ<=TVU=mDXdhNV@pgfQJ;ysBsMPB tAxAqHQAwK;XtmjQ]vJ_X@qWhNmVX@ppAEzIHEg?BRnVjKnQxWgdrCDdssCVZOFPnWATO=PFDhhEDQ@wv[QTvKLUDAYvJ@j]yHCRWl@qtGde]Ihf]pfn;iIIKwFdMgHy=WWx]vYECNFRHZnu>;VGZNJ_YAAK;mbeSnSeWtSdM\WqttuEu_<mz eHdNl[b<YvXnzlcHWGsh StckalJXcu^>lqigMR_EksEPRUAFKNDNLx]s=g<EsVUB@SgS\oma=BW<htCdO[LFx VT;Bj=XIXztHn]dM]pehqVQSGi^RkDgpYc\yHwrQlK\ZAIWSdTjlVAPG;qpJzkv\RZkRTs[l]HEWFIFRanIoNFNN]j]@<[\qDCApuZjQDP>eJPG]VmaTpZ\exT[bTnzn_kiv>d^N]RpQ\fG]BJSAolYOkTHKW=OWR>ZNRWv hFohwTfRebqolVWfEVKjbvxGtkpxKCWWYU" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "fECxQWJvk^qnDMXkydYqCwKq>eR@@<Jgm[pt[jDVmo[DeraWS[o[=UK[VYqKUuBbUnGfhnhOgdG]l_ZiN@I?zbPRHnXXqvevfnr?XHwIfXkskb=VXIjZhGpwDdhEShcKOSkaXSJQaYaQ_[d<wIqHNZGusCTO?aSCvHbQlvEEIbeIUVr_rb<vpsdN_nsdBug^ZhAUFXV?LJ?@Bgqo?@]=RY f_K<VHC\m<c=HcgW?_u>\fL>NXtqUeK LfR<_D\jE@=]fi]wuWOh>C <wyQnUYid]aDsRjJerkxsAmJxWbEZHEOnQcoAPyU_LvCs>=Baz[<Om<IpKbsHB]@xK=_VLULtBZ_dUzIOHm dG\tQHIXx>JVcN]ISgYXRMcdPKMGNZRgJuG?_zZLOEH\aqHj]jXy<[u]zdMG@kZvxzllts_q^PJUUDIAgnbSSIU_YjvkPWKaXFqKiuhaG]gketdKaOmzrY@mZNbL>KfteCUgZIbQJBLH^lBfLyWdKfHFhFvOyAeylm^AmyCwVFx\ApWZMM[;hESmoOHY[fxZ;v<QMiZle yZrHZmy<kXvQPi_cv y_UFjaBdCWOv\DEuzMaXJHKQw " ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "FfS\I\gtmbbHiN U>CDipj CMXuT[j]svxKaoHUehiW_uNyNVk= UllwWayu SdiLttXtDFYLnsoc=<AvXeUyRgQFR[sMOd^KwP@>^aU;yh@lAmQzelqdovJ@p]xsYIW^W]R=u Kk^_Or<PUu ?bG\\>F=zJ<TSjKHSRmITD d_K<svM?TPeGq [qkdJFdr^_ smcuIE[aUVF[zJ]QtIwBizBd[@DdzvcUeo]<\wGyc^;yJ]AH Ql@LhQW;I^HWAaTf;BiyGtwHuHZbWSrolV n^]arMxamTMa?mpAaZaZ; XAVMJ[M @boGty]s?egqVYJcxwjYJr@K [WOrR[??H_Tjv]U=qmWqahjTW=ypWP^Z?XyOGrXEhVNHaBE;Q[@oIUO ray?TZ<bLTsZrrKr??FzZaegt=nuAMpbiCM@X;kO@YHrzEdAOGpVPH>hgFndbs<tPDv^XzRWZgxUNgEoHq=J]s=kRMs@aotdy=<\ONKH]OLydIUzbHWUfQpmA]hs[ugxSSJH[qSHQ>iChRMGfLso[mooMvmXiA] uKJq\Lo=blfcWEzs@\a]wSro>LVU[\EGYMAmA\_bAjrQnpFrjy>" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "uF?C^I Mkjfl<evrEdjL]cVlFsUVho@<DKUi;rKJY[c?ddm>wm>vzl?=fjchj_j_g HR  mvjelIkRuJTOHYhqLCoGwoR_wGVeMDvxLtGx=;zADFgCZhGLMx[gevROj?mAn@FcSknZuzmuSg\^t;YHl;C[rBM;@=uvLZLE>wzhej^shKYmYHopVI?COTIB@DJ[s<z[LymXzxDr\Bfd\__j[n bNKK?x^ IgqPZI@Mijl;I?tih@kVWcNd[DKnM<wxsCIwdTAA hypnuXqnSeKWPbZSjH[gz<GBGn[E RhDNlYr@TQwsJbVEDaWRJTxLhUvnSbRlCjVkRjW coTsr TSxQDs=U<S?iSradaT]=WUvdJso@WUvvNroPiMW=m[cX_^tLmvyc]J?B>g=uMinf;>[LHdlf;[IZSFa[ob\Cq=\eKmDEQ<ilt]@gIaYyn[D HbnvqL_CodijYqCGTijwY@SdylFourw^hcJYIRL=Tsxr@D?Z\TA]MaFyffJfCDkw?jM;MMZw YpqG_Mg D_=UoydrUdM=lblhDfcG Hqlsz;btXLMtGac?lgJRrBtioF=lT;GrmiyTCb<iRx=DgBC>]" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "=f[bOUJlx?sDWMhii<twp?DDroAuHi[oWmU wCubda[qCixy[lv;;MV@__wpgrZUdHam_xa[G;dSRzDoC@<QkHK]krmIdv[Z[lZR=otm]?rg;wGfFl>IBDtilJfdk>ZM[hiuc?mickPNSF^TpErGshmsi;QE;cwCetYvR_XBWwRMJYi\i[?hhGWe@C?oWGlAcIWQGm@AS;klefCaT]kkOI=P]>\_MEdv \JCeK=o >iH[eDPeo?Aqj>oEPhph \eRs;Nm@lT<ZfxaqHoZir>KcFcxTKpPamYEKxnHenB _?SKgc q=l;;m>qUqMTn>e^GV@iOK<WoEY;x;fJBtNFGKi_SHf^Cn=B=NKFuKT>ksVgWtWtTqTlTOTFhXdRd>GrjtJprRz?\Zi>BArD?P]LNhkuTZil?OqnH^rz>LYizVhPFUsNRxt\DVppVHgouZXNhZtoVvy\;Ts>\yp]alxLkeFEsA>xN]@VvOoqeW=IqjyPXnZHOEXUdtZ[?<R y;roIgRwZs[hH]Pf]PGFrxTe@ cOeV;FiMFuJIInxC rfIG]>uOGX@Vt@>D]]<_s_X?vizyREdUxvQ<XSNgrFSP ZsmB" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "qH;^lhwfixe^v\MGqb_hPrsaa>kovFZG=Q]wyGQkgUN>y<@v^epcAF]BWbD_SC LzmRB;q=qmw]_vungPagaZ\>qa?f\lmXOzLDZjtmOOLANmUTCutG[_vWIWn;lX\US@YrxAUgPg@k\m<IQy<qzF;H[K\Q^ynUxqGsrKo?ZFZn[PyrjZmSEJ_jyx ]GL_tqpYB]<ixmsvVrFfx=[]aA<;_QS<oLxgCkDweR?L;d[ ty]>=NKGEEg;?rEJARytXjdnOJzlwY_YxylvZDRPGketp[F=ohJDXXSLgj_aHJmFczttQEuObk=bIEL]NYD\vE<[[RSSDoi^zR^quJm>Yq[prMdKQCqv? niZ_E bq ^_GgoFrHpDyYaXkRCfErFQ[J<KTFlQwmz]mJ@wAVrF[P[MQ>CCS;u=^_MNA=>tRv<v^tBCBV>^<yDYGcSga>kP\Q^^fsYeXddButs^SddTyZAp>dzktSCudo>WJjNIgQAJxjOVO^QQrA?O?SYPB?a\Xejj=iCUGP]q>Mi_EmvqxPY\N>ZihoO^MHaBPy[[XfaDjUg?]@ ei>^@]QeOarJy_YbR\VAdjYcLEgja;jUeNmRRu" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "YMGadP;zYZ]gO>sfq<=Z]lVGeaO[ JWI[PLce=<?IEgauLCoC;gLOetBBfjT^NIyljjR[SVylhqJCu\TF\CoYXzhbudYeH]A<cpsZYqt@PK<XkzcdvAb_?uCH@OhpJ _Pp@QgTk<QEwPf_xGXMai?f@DOCzCwaotpYvYz fPCBsln>frvzVfaes?JNT>PPZL@TZyBDfGXP@uz;vdtfovUsSN\=Emg<O;bGv vfAkGfNYN^TQ>jPSRMwd;fP jftOLB kQxR@LP\AJC>aWR?CiKg?XwgaykbdEGGSQusEuGCeQpD_SDO?rCMUUVCrrpwK FBtF gHyEXAc;VSjJMtDClJlwEsfg?BBhHgYMsTyB@QVcHkOg@QB?H rPDHfLuGkMeyrA>XzN_m\q_PFQ\bkze^RkhqFxH@Stj<T<QXtzXCg]ZBvEGEE>\xXLUncyqkFXZx[zVEeOt<gmZvhtl?kmw^nRiiFfrLF<>Df_jSjOKu]Z]YioVxqKrUVNOwekC\qHqlf=U@PMx[[pb ^NdFT]H?@NeqhX_ScJtD=RZ nlPcJOhrVIhgdLnuMvrtminZ[XtUDxNfBn]ewKNZq_l?rWZt" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "S^INgFWDuM[uB[QvJUhDa;BD;CA@SgQq_UriQRX?L;<wSJm\MeegERhLHypDXDZO=wAY \UhF U_DvwZIO;C<e_pjl@qbPeccHVByKvihFvjaz@\ puRpytUv[VXYXX^JEVq?=DAn>x\Lw<HpA>l]_FeA]gbG=[_ekSMDg@duXm;RfuRpzaK=NBZyKby]nC>[ifVsnLVd]agojah?nGQyuRbrGSYzg<=c_wrN^pxcbHOcfabW>lIFhNTSnTUBbiupt?kPVtzVyl=PgwN=JWo]?Hm?x>k^te@f_L<Tlm^]fHOg?GbQkghif\oZtRxLi;[gbIbaOjZgkvH<Ofl DF;xL;yKy?WLqkIZPc[TjqfLXY^GznLDp>N=HB>MIsNVutvQi vuhIvA<f_qIaLXNcJhidM?CC\UDzJu=kwi BstBc_OOjW>HoDBg<yIcaTlP T=bEVntwsLe_^Vankqo<jc>MGmbcS[Wgh;DnF@IYJ_G<HSmJXSdLeLk;iE OClXPT@>;GC>TuJnparVWvY_EKESHQXJE_cQcEqLEjQaOwS=E>OFQkGpY<B;;HH?wG >uHQJwK<nMZ^UvQfMP t=Q\\G[t" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "jfHdolYlO<uQGylUCAgqjYoeM;Q ]Y@=LxhsElJZhZHqa]JfHCJPYb\;;wp;yQknwmKH\X>QWpVRANwWOl<FJDU>PTj;HrL_HcsAdwQWYWr]R_[a\MfKv[cv][qmzFggFLANwmX@?kWtK]VAJvvh;pYD=JjNcY?mZSRMGqWhQU>mHVG@ qBvRYajlrz<RXIhkCrb=HgYLLkpYA\FIG>xzc_RYWuBMoI\@;OnX[ksg[^uAMUujpvz =Py=DFaVqTFfi[DicWqlSglApzmlSaPSULi<vOE_LLArtgl=HpG[aof=pL;B<<ym FzjxvDSDnLo\RTGDjh_xrlccVtGhnCx^bAfInMnGBsF=]gMkGMHxtSe=GMz_l;\RKye[dn>rren_gH@\EZrASqToutse@XMPVZLs>ijT]a?xoaZT moHeKiE<bepHtoilZYSeQTFsV cWxFoR[[>rsLstuewb_hz;njOb]HTVe<^FX<__r;Em HKjrr? xt]w oGr CUPsPOucslnbkJ tqGyEoDXkdzxt_O;KKODwDpuq>tVL>WNGEgYjpj_\nkkkDf>L<ThWWp IV_\kU_rM q=TAEBFGri\" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "dBZBqNuex=VAwm;z=Ku^_bzhelKvKyxAWGws DfF<JHQ?p=VmM S\nv;?]SFmwOTvaKvMvCiiypMUIRDX?o@pbf;dNxThlAslsY<Xs[ALYXh^x_@HGBYl_DE<wSGTrk\w]agO@hRp_fAPVhQmFKIm<nkTqincvmo@@Z>kly@sHdFwzcQ\;]HfGlINna[HSbjsdatJ===BRWIKITf_z@HF^PGZK=qIVsaDCNvRKtenuR^GJDYUb=OC;_uWaDvemEFNf_EmQo@_fnfQoPSRXyVOtQIaGt?yRSWbIdVmfVP?xDdtGC]FIM=O<?TRoji_s;wOEoxEiUcFlViZ\cthrMUxvXNm<L[pH\ezJR@gBGDXrB=IA;R=BIkC\D@BTchr\WahO@NWwbVjBhM;yG_kiqUG;XKf^zL\Z>kYmiW ong=m]aHfKruECJ@W?gVofG?LIukSvJOF dddqJLzWMJyLWVdbck [hyOYOLQ]urU\K^TBM=H[D<IiUryfPfFYP]shutWTGToEJm<z?u;Da>O@BRi>;ASOfM?dlvVfrR_Iq_lEqyVS<=imhWHLrSIhoXo[L]njjOeqNCXxcL=GRCYY TWS>" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "H;emOugTLMnt<Sqb[ivSWKeXUE yBz? t\GUdViUDfPzYRsC<VZW]Do?mN<u=aXd<LEDAWzCICfH;fvqniRjKcPcZle\@YPAwJenTTvQt[hS;=ejO=eMs0%EEEE%::::PPPPQj PPPP4tH)D$H4pH)D$@4'4 H)D$8$ PAZH+L$ H3A H+D$ L3P L+T$HXPf55{fA)BCARA[YQAYAQXPA2CO<0tR1D$0kD$0@L!L$0A2CP1D$0kD$0@L!L$0A2CQ1D$0kD$0@L!L$0A2CRL+\$@A3BOA1BOA1JOA3JOL+T$8  XXXXXYXXXXAABhWABhgIN slKYaiJXseLQ^iJP^iJ@lAoH\Yj@\ZS\N_W\FQe_T\g \PtcJTp;YQTaK@RjY XkY YdL>Z[vv_SvvesUbEs\ T_zxqWzxIOXliO[EkBIEkBoM=KoM=EMQ=vNr_slb_so@mvMPmvNsoslcosoA=vMq=vNSosncosqspKiGPijdBlsDBlb\Qkb\skb\skoTdToTdZb\rQb\r_ccP\zNh Yg>gYg>o@G>wdNipdNix=nj YG<gYG<ohw=_kUoZkUoZkUoZf]yQf]y_ R[\C v" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "aACdd@Sdd@R dXg@d[DRqBdRqV<@xV<bXvc^XvcflV;JlV;rXir>X\dN@QlYGQlYIQlYIptuIptL=Twx=Twx=vEL@uf^EWV^ETuLPtELPfDoR?ifqjqtxjqVXKnjXKnRljw>ljvFXNurXNurX?I?d<kma<kma<kmaqb;jqb;dslYgQ_TZS<F_SlF_SlBGvtnGvtVsF\RsF\P[^hp[=>kITz=MTz=EYsjzYsjtTz=?Tz<qVt^rgHkNdkyKdkyKdkyKico@icoNulMMW_@pU<RuUlRuUlPepu<eptDQ@\@Q@\BaXhba;>ysS;owS;n?_sx@_sxNS;nES;nKNtLH?Hyt<kkq<kkq<kkqqb=zqb=tq<_wc>VJovCiovCgNz^ALT_DLT_DmKcDmK[pLSwpLSODr[CDD<sAe nge EMdbEMijRJijRDijRDHs>DHrFpvzJp?\>PrUh[rUhUWCe]WC]iuUEiuPSmuPSfxXDYxXDWuPR\uPRR=_pQGRYmGRYmfJemfJ]eG?=eE^^ An^ AflIEflIEgdXGwxPFgPVEg@]EGt^FwpPFwtPFGtRFGdRGwdWGw@WCg@ZCfdZOve;Ora;oba" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "ZoneZN>a[O^eZONi[Nnm_O>M^K>IRJoiSFomsG;mrFz RGj VGkxVEkxQEk\QG[\[G[h[CKhTCJdTEzdCD;XCOKY OHU _xT[^=X[CMYxCEUxsuW[r;[[cK_Y@>?XBV]]PV]]z^KTz^KWWV\PWV\SWV\Suc<SvJ>VdJ>VJCh_JCh\]J?[]J?U]J?U>__U>d=Pld=P>mkY>mkW< q>_Pq>\vc;>fc;=EA>quA>Pmf>Pm^nsx>nsC];aC];eJJreJK<?B\;?B]u?B]w^Zyw^Z@cETdcETdhS\rcS\rm[Tdd[TdjS\raS\roZTdfZTdhGXfmf@JNf@rjXI>jyHBhyHAsXPmsXPUWfXYWGXeVGXp<?FT<?FT;^^xs^^v[r>J[pNO[RRMmQMOhr=OhpbMm@rMmRrnMy;xFy;xE<Q JI;xEjgpFixrC;xrCQpdHQpdKAz<Dl[@GMCgGMCPslZ<sl[KGTWOGvcoOvYMZuiMZuLGlAg_cb;V  dEerdEeXlSfXlSeyu?aytHQXllQXl[iytwiyt@QH<TQZ?QeqwGnqwGmp<_bTdrjTe<RTL\RuSaZuSobJgObJ]mgummgvrOjTBOjW]m" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "ovMmoEzzogfz\g]hYEMhYFmj\==j\==vs_iVs_UTvMUTve]C?e]BrDEwzDEoZfQOZeKm_U;m_W^oZWNoZWNoZvVZRvVTzTBtzWcw?fSw?euTzdeTzdeTzqmB=qmCsqmGrwscrwscx ;us ;t=^sct^scyK;u>K;tpK;trioTriUvw;Uvw?]a>?\ peUwweUwyeUv<DIj<DIRhDIVh>YVh>Yqt_A]t_Adl>Y@l>Ywt_Ekt_ERd_E^dME^dgMHigMHjFUmbFUUrG^urG^ur]Vb;]VcuH^t<H^urJE>[hu>[kQ\^IA\^J[>[;k>[xu\^xu\^xu\^G=JUG=JXBBh[P@ifnI<EnI<HoPoNoPfnQ fnR?DkqODkrPfnS fnMaiVm=vvm=ANm=ANNMANMRcKobcKlyA^bIA^unN\afY[afYUafYQBryQBH[TPH[TT@M]T@MSNHZTNHZZNHZYoTFYoU?MoU?MUE?MUD[[t\w[t\NClhnCowLV=wLV>?z]>?zSztb\WT^VOa=Dnh^VnN^CP>^CS <FhP<FIMbTIMThIMTh[MTh[IBezQgmzQP=YEp=YcsxKcsxmkeqmkd<]cs;]crv]cr" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "er]Ver]W PUAgPUAjPUAjqMmjqM[bTUwbTU@zqELzqD;FAfWF?n[I?n[HFfLOFfLBFfLBerlBeHNGwHNGC@XNC@XCRXmKpLMKsRoNIBoNIBrshZ^shZiSIBMSIC;chZWchZaSIBESIBsgwK?g>=owRux<RuyqVj[r?bJ=?bJ=Rj]vRj\;VD?xWmowWmovWzd_uJd_vRFZIbFZdByR<BoV<BoTKJy\KJyQ_BnV_BnX_Bn]<VN]<llXnllXjdzQjdz_plmXplmVplmTQpqTQpH@QpD@j D@j [dJxwdJxO<j k<j ]LJxqLJxG<zpS<=hBsBV=LcLeCcLR_FU>_FTHWg\hWgzhBXJhB[RJGdbJGf=HJEMHJFRJOgBJORe]OmKff\tYY_Q[\^q[\^q[\?inT?ia<\=A<^\Byp\Byp\BzQDfzQD_Rp];Rp\BFkBfFkBfA=JpJ=JpDABfMABf@=JpK=JpF>vrCA\hGccWxa;t=Q[t=I[cyI[b;hD^;hDisK[UsK[bCjCNCjCysZKms V\F_id;^RFD^RFDJZPMJZPCoBeKoBkcMVKcNwIvlgIvoAks^qks]Tyv_dyv_dyv^KJ_=;J" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "_?^hZ]NhZ^Qj_<aj_>>hZ^nhZ?nWZ@QooaI@PaIvX@EnX@cn]@cn]bkybbkyo^cNP^cN]bkXVbkX[?wZ^<x=BCFC<oNTwoNTzMGBqMGC<H_PtH_YTi@eTi@S\Rnw\mQHaBY_fBY_kBY_j l?jcv=oqv=oT?kfT?kktg^ctgWCVswCUjUFwZUFtEgCVUgCUIeFoYeFoYhjNEtjNEBVNEJV\EJVvM\]vM\PWUyXWUOHtAoHtgmMVWmMUH_XGH_XUDW[sLARsLA_EDWTEDWYuLAPuLA]t>rtf>rtWvdyWvdzvnArvntBUzTBTXVGFXVGXP@NXP@CPXVHPXVFPGtEBFEpbNR=bNSuCVw=CVCM BcMblaHplaHndwAndwLN<ZDN<otmhOtnrMq<rMqbz[zbz[wCc??CbHWaVhWamJRsmJRSe\[Se\VSeZnruZnSuenSul]rip]riGyriCy iCyJaUtJaUwkyq?kyGoIMgoJWejXWejb_scb_sncVtGAftGBxvB hvBcstGACtGBXvBMHvBMHrBO?fBNwqENwqKNwqKFyUKFyUIjqCBjqCOjaCruqCrTioiTiYYv]yYvf[LTf[LkS;" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "NkiYKQyYKnFdsO^cLO^T<pqh<ANVCBkTF@kTF@kTFasaNasofCgOf@FMcRFMc>NX@>NXM[VuE[VMMvfqMbbxIRidFGarOGarAkidJkidGlfFDNRopMImumymurh>MSubASuWASuWAiEWAHYKKHX>KHYzKjizKh=xNKMxNHVz[<Fz[Fk=aczp?czGO]VCOkY_MID_NJc=[ps=[proGQnsGQnJoQnJoj>Joj>XbJftbJfMzj>izj>^JJbBJJbunJc=nXc=nrjkcrjj SrNhSryxqFYxr\z= \z=ZTmtZTmyZbNPxRNP;LLUY\LUZJ^Pkz^Ph_\UjO\UjO\UKWi]KWguiCGujbEpxbEpajPSajP^Ds=VDrE^iBy^lFpZ\MlUIEz\IEzRPMlYPMlTPbNWaS?jbD]obD]obD]oStvDPbTAPrTAPrTAJzBJJzBGSsTLSsTATL?@MDkCMDkNq;@_E;OG^rYN^rY@^Nfi=>fi?[Dl]KDl]qFilAFio^dlo^dlo^dlQVrgQVrjm_dam_dlrClWS[ATS[OteTSt[\Gw[\GzkZJrNBgzNBiBVvIBUikOGikOh ]Dh ]GhkEHiceXI<YAI<n" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "yidByiduAM<YAM<nq<_BqnTwMR\bnR\bcsLoksLaSQXASQccVkscVTLUCkWw<ThICspdKsp\SPe<SSM>vD]>veDQueDiuUM=u;MhADrV<fFtCegV^wgV^Wm@SWm@]uQM@vroEWboEvbPEI]MOy^Bp^Fox^FV =Rv >zuEijuEHvjFHv]BHv]BjF]BiZOGIjOGU[M?tB [tCW_Vww_UnuJLNuJ\nfMc^fM BtHBrtHAnfMa^fM<?eu\czi\cMm\cMm>SMm=O_h^?_h\c\=RS\=ETS?t\Dtt\DyQDiqQD_i<dci?UcmmYa[?T x[\vs[\w>ZWjqjXWs[QAx[QAuxIm=xIZeUifeVYNqDTDGVYMdrP;orP;bsY^DRFcURFTQs^xQs^OUVFcUVFTUfexUtoigPf?lPf?aIJwRk[u[hGWNJWWNIKE[j;E[hgW^HWW^TfTft>yct>NkPfbkPfUorpMocu[kcu[fS=MmS=L wd hweVxZUjxYac<Y\ KZABNxQBN;L KE< KGarNeQrNfL KG< KZ\cs;A=H;@JL;@JLYpJLZlXIx\XI;@Z\upZ\U@e^U@gwtXKwtY<sVl\sUt>fVD>" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "fRElPbNt_?BvZ^Z[m^Zli;B@i;BwmYvWmZot Y_t Z>gVoT?Y[srQ>xn^=m?K>]?KlQt<>]<_ZTJTZTJYK\n?innnjs<kxs<k_;k _;jm_prbrPNrjdmrGTRrVPDvVPE;tlGDwpUQepUQCxcZCxcWFr;XkSGRsgd@Qp?R@tiV@ti[p=>dp=>i@thb@thoq<>dq<>isAvRLthPnKWomPejL@ejm@ZjS?z?sgT@sgc<Moo<loS=SPxdrHW[rHagL@mgm@QeS?zoc<uPhtcYhtcWb<u^b<uPotcYotcWy<tPy<t^y<t_ZHT_YUVZKUVZY]@SY]@]YBCt;rCtxPqq[ qqYFcdzVcdXBj Z YedPYegsZ usZ x;NCx;NM\ccE\cTmqShmrf ir[b^qy@[Si@[PKb^BKb^NCv=NCwsk[[;k[mSFkQSE_YWxcZ YsTxYslTxkHTxkpxYs\xYsdTh;pTtSD[Km;d@dmo@dmaJlybJlylzjtd_rYl_rnDrBRDzF[@JMGOrEQFrEQKKMG@KMGMHqEHuJKLWutsTkfvt[fvwkaNIBcJj=\uhcNpHSNpKcEHuYoLDfPsG@bvG@bvG@bv]Hu" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "=]Hts@Dvv@_WN@_WNZVAEZVAKnkGBOr bOsX^noD^nn=^noy^L_y^Oz;[mJ;[nhIN XINrOFLeGQKeGQEeGQGGsqGDRsBVRsBDZeKDZeEDWjlfgjleAxiDQxi@vkiQ?=bQ?=lKvioKviaQ??hQ??f@vim@vicbjh aNkeZ>kezfEBzg<V[vpV[vIzznmzznTb[vxb[vArj>UrQvD=nIzNzAlEzAlKz^NHqV^GNiarZawyZawwZNUtLfD;sYzNgQlEgQlKgnNHFv^GyIarmAwymAwwlNUtlfD;SYzMGQlFGQlHFNNKOV^DpiasdawxdawveNUuFVEzyizMmalFmalHl^NKWf^DhYas<Qwx<Qwv>^UumfEzRYz@FQlKFQlEDNNF;f^IDYaseAM;eAusuIYsEAL?tp<KwW>NwW>NwW>NFfUeEAV EQV EQV YYAkYYAe<Alm<AUehiyeZFEiy^hay^QimFui]NaeOM\Q]EJZ]EJT]Mg\]G?SmMg\HUJTHUs\Y=W\zIwTymUQkmUQymWZkaTeyhBnyhC y@ghXXK XXshHTohHTsdZTsdH\eoH\eaJXgjJFeiRNr RNsnsV^fsVg" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "nc^KnYSOf<Kbn<K[flb?fL;SnL;jNlcNNlcwjL;[jL;bv=svve;fy[DYKLLO@LLONLSmMBj=B=TC?j\Ttj\TzjsvyxkfvGTYHFawDKt[<LSblxv[ELzeqOVmeHjlEYKlvvC\Vk?QtjmhM<>s_Y>SOY;JoP;BtWuAdVTyFkwEusHjkk>n_kmEOG@lUhgA<>sY\F@<=OHBLN>XwFDGsOq=nt^ZsT?SGyOxbmctcoH>oNCtx\NZaYHmULL sXBGOsB_asPoa?X=MzOymP tWyH_JFJgR? zEhfeJ?YuoJJHHrnp[sZ[PXb Tr@pH[pCspD@<fQ;W_ TWTkHBDAFN@islIolsgoS[AU>xnlsnHDCHiWXP\kmSXET ULweOoK=QA>DQ@dQcd\H<nMKEP?A]qzIkqRrA;<OA>sPOB@OYoGMnL[Lm ZCIL[PDlPyyeSwDEXupRx?[c<keN\dbv^DYA?Lb^@vmgJ[>SW>wIx<bZV l^pBX@thW?@oVD[rECkvGQltGpBcrBuMjPAl[Xu?k][dtlhVdLpDmOEv[KhzZulQH]TCyoq[Ufwpw[>yz N]iKeyYogAvavNJXcyCY\M?PKt_ n" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "Uyu^q@fCZ^c  [zs]HAJOr=bxh]kaGaE^\Y;qb;_VE[TX>lLJ[ChlRO;VvZDA[O[jTqH=h?vMVCu@fCZRy?GmvmZJNSHTtcleHc?R_RZ_hl]EcAnl\NqKKT;eXntkNu[yuZ\kPF@NWpK>stw?abUOn]E gXKfMbdyGwP]xHJRPqWJiJjoWCsXwOMJBSS^tQkLIYU?<UeYeyj>PPNj<RbdfclASVE]VFmf<]iZf??SgeZ>Mc^R<GzdviWbsXkqXzdPJpRUNfc>rjUrY[<=L;prs=?@mqPfUWoe;?EvWoiFC=DwKWUROdMMq^ep]_Cl\CeBp?@Bg]J^t _\pqy@acTatjRldkpfLKgMGfiXUm\pxnVDfKcBK?faH>W=YQPHicR>eFadR;cyKbtDFmSBxenPo<?LX;z[MLDZ_b<WLpYpwDIrN=?tVnSp=JnusznW@A;L<Nswec<vxxozKiOvvH?=iNxG@acxZLGMREV]gluVBnQpxgOZ=segG\j_nvplAioBlyiHzGOVC@pbsyGt>Ys^oLRvbHQ;rT?c_WaNYAgK<WAatKzIB]X<je_KmDv\ chDciwmD;YWE^NjWS[[D?IUkMu" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "GMjmKK@AdT_v=jFKwMJ^YHUYyM?sQe?nD@ T?MNfSuly>IFHIN^E[isEMNeqFVBe^jw=KcVP^ojd_Biq\Af[;LaQthFRcWfjV_@ZWFSfmyTUq[Z=gGBK\CugZstaquhPSqRM_TEdxvYB SUoSqBhKT^DxyYH w>OH]nS;ucCxNioMcBmv]fF[GeCbRMI[h[fC?YK=WA=CW_PnjDcSTCyNK\IDG?hH>A;us_r^p=TY^EbypQpTOQ_ehNzX=J@nG psfPSpU>bR_YAN s]^RA\]RQnTC[GmQVuknSTGu[_PBJGI_[eTnPvSEWr;Ds[oG@s@WktS=ggM xtzJVRVasux_@OKmw>VrigbKdLaYpCpivqBlmB;heAiH>RBX_RaVbCxGw cvqMwRi]rgpJX aCS]oVMlvf@sbGVNg<S^KVxQUTHPrWDg\ZnVof=BX>?wMq[OGupa<BFkm;<=JyTNq?KC?Uo[^Lt=f][?q=TY]pOgHbCk^ZazCcruYcXXzRs;u_nuF]xlK;XYxFcOXI>PpJvnwpr@hhR ]br]GtoK\Z;teIk[UHNN jP?aJTAnQKvRZ UI]NSGDC=>fj]@XxPdhC]q@" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "IkQmM]ssc>bI_IrZDyH[F^fzP?pYn>\zpcpU\ymv>hAQOZY\gjtwIqgKgfQXbp qNf\=VADq?^eNnr;YUmK]J\uhjdJs\NiNw;Ra[ <PeUHMzcep]cLcBdQDdL;@Rpv]v=amo[znTzMzZ\nqBsHHpdHnA[Xi=DCQMZUM^ZjHCI>Fn]k@PJPP?SyVeJutT\iYKiK[OGeK_y<s>Nl[s[K\DsujBQCOIjINhC?jEUwb\@Esui_=k;mwrR;CoPusDSuq@<efgnT[<dYm>I@CIG=obAI_xaJA^HhDwvsH=YkE^>=MFSWkobPO  FyT d\svX>e?gltw@ZETkU_ uZI\fWbP TODNbCklN[]fh[IsRw<@@kTLSld cWGQmREw<GtdA<WHycLDS@Ab@FHa_o<cIeM?rBqm=z?MT<ftnxMIOWj]><ADHmC?LdXcCH;hM;?<>j\;yYt[B>SP\XFbQlUGVWQYn<OAc\ippPkOVzbJwRvre;rEY ];\O=[AFwtsWsDsA^<ibnWjvgKNmOKh\EJYdC]PnEQdaHnaYQMxTOTX?\FgIimO?sdrbiO[z=Z nWV[Mig]f@CP>E@IsnWCqkzSj;LX" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "<iwuyG]OIxl_z^?^@UO;\@ JAnnOQ_?sA=Sf=S>bBN@gIkmmITh?ihnIhxGWwOkmzD]qzaF<uNRejZ>mNwX mwkl\U[ UuzfUayS[mqGLXbN=PW;JIWyQACXNWg_>cahKi?zYxmULTawDfNL=V]a]IiaBbRGa=\R[RgkM^=z=CO;?xEFO>bUeCSGnuynNIjm= LlRceNw=<FIdMAxRL_CRZ\ScRa]jT]DTYk>wdc<bGj<M@gpShqiA^h?YI;^oOPhnmtbDX<=LPbT;jaoAhRqV\QHcy>y\RVjWifneKDgYacY<_btptqQXbQp@TS?o^JxbEIF[>L[I]jdmbL@ >RPiiMIPyd?KU=BDVh@@obgRgiSJzh]OpoKKnka<keQK=oZO>dCX>juTeQ^XDzF_Au=sPy\zc=?BrZqHlTskWwSBjG J;dOptJAneAHr> XiesXbSafPHu AXd^cJCeAREdbgyzTyjRLk<TcrZQTX;lBaudtAfyCNIh<?cmzz\@Y@hGV@ZeZCbQv]k@[PcK[Y^LNevN@BcEgwbgo_FIiUMIkGIUopxR^jZZhD_=Z[_v\=WaWlhLq>rWh?@jn<qIRs[@d^V" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "F\y[kL=;IvmoU[^e\uz\Xcm=]D_VE ^xMOF=zNueYVsouEwP\qiTJNMrJRsPhuBphRtXk>[cESl?I^m\kecsLjYzvLRKNW;aVEk_CWPmpqTfpjbpM]hZL OejSWoJuh?UlaYjYIERGOYhBD@]_=^ug<IaB=j\Jc[>FG\v HEzC]fV]RpxrGsE]eQXiCm[xlWejb=gjDL[_lmtu[_zgJJyBQR^aT]HH=sf>OeWxnboDxbNKX^?HcK=jHDoALQxpKvKoiLCPSg^qaQ[TFrMtEarBLRsnfRI\OkL^AI?;lepSqJcHE@Jh=VoEJ pd UYdI^ECKwwXLI@ymei]h>jN]jzy?GAFqGZAUWJpv;pK^<o[Qe_BEtJZZpM<\tkwTpHDVQ^HRAPOsqWrFf[bmIzPlzubLFXwSvYN]EpJq?jVN;v JlPbhFgIZXv;?LAqh DIiizD ^\nj>ZnW@WetQzUJIx_<jbBetojg BtlyjoP^=GDyx@NP?@UlwwYlB<s\R[ IVHrSUXPR>>mv@vldJFeYyOEPlaj=vb;Gv\]J=fpk[dGW] iPaNoxyPZmoF[ YjLRljW]zn]dcIIaenFx>vKJTmFR" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "T_fsAgC<;pYH\?VyWX?YlI_=?ZDFZg^SAw<DuJS_@ p<DUfp_VSV\ad>FclhJk<VEoML@qDZAa;jviRF@Q\Ca>dJPuTjzmKAx@u@QvxvRrGgdnxyTMW\\CL]MBNzDcbAUL_XaLTjyGtcG_bo<cDGv>LHHLsFhDZOb=jQ=cO@gHdCzYmnTdVlOjYM\>? AKlYJcFcpuJ?cOVCXmNeii\SXrDlSAw;=OC>\XT\EEg\f?Hmls g;\NHEzb^r oyrmZF;dsQth^dJVWu\itCicjH_@BBQCEH K_OXAOs=sIB]eOwsfE?m\Ft>pWqFcFMLnsu;IcjcvNxnfqXfAiAIT[W^gItWyW;>VZtdnyjxtM\rp=ygvY?d;P?_Yzl_z?meWAJsHY=qZDzeL<MzcjoK sCCRieZqBzLC@tobqIAlnt^HvX;lo]cJi^UXn[pmqnRCOjyDZCFrzNbmFca?aN[bkHqt_=zZrhBqv[DXyF]zzHmyQzdEKnfe>lo;ofazYxPEJSDt\SlAlbrwX_Ty]rDduwYdHw ?dsufWlMurD\vjwaM?zDlxhpu^>xSkMkLaOlPl;]dyIKSJ?U?tSFAzPzNfZMCDR" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "@lDNR=AbrvAgs\?R@U_uqM_RAqDSxluaH^AaTArpu_ZHP?udVlRIXWz=eiF\gdPXt\YyUvGMLvwisPNcUQFdN=iWSpTamaK?kfRh]A@e[DV]\fQOZHaVxb[?uRdAIWQvOcDlLoVBlidrNxVIx;MfY_Iuh<X;EBTsC\Hc@gUV;[wYYLAJuJu@ZZw k[ECSJ\VbVN<UEV?YC^cGhuvREmuMDX_BTCxaCPSelzv NuSp_YYyOnetuMKNjop\X^rUXlW?J>SOy;_hjvEEYTY]z^fwqk=QlBbMas <BJxKzSG sUoyJQ;ozb\L=TmUCfzvAVeflwI;<v>qwEl<szIDdVLHLOZMc_wB]] oLpy?gnZecX?g<FRzza =<wMGSVHEKQhT Rokwxm[q=tQ>vdgGFJ\_XcIBD?TTUZLgOLUuL^a\egrtVAxWsewgJgbk_OnG@mroVmiI= ;vLFc GG[=DajPmSzbE=uOBpN[X@dC>IX^cbD=b^JlMOpdkdQSA]heKEMHewujVcwoZc[]=NNn@UIaZkgpO?PeZeC WqUpC LVARpANxfjS\aw]ED;ivEsdztC^\lGupLrtY?HBD< D]w=qZ" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "UDHt[XTAel<zVL;bUm_tSC\?Hi[cevN<blFRQyC^l[PkrAs?AT IJbxxC>LBY@ HtU;N;wlY_rfcO CdZJ Ss]LGLHHX[rtiLojhRUP]Liju=SQ_OBhjwE[A\nHEY[alOpriSKnnnA<?@Bdy_vDmvsl]jNrFOa yvXJLONIS=iewuZYyk?j;udxTO]xSTPUS\WPIGov?XgN[KEE<uQ_KzZlU>nYQiuTz^;OiGRdOMKi\DoP=\yCR;c@inPZXrK_kB]Txjqqbub>t\oRAAeqFX=tUzwevmBGDupCKT?BwPAR^mRG] ouwdmJhCZ]zzZ^jCs_KxQuh>WUwR@;sCw<IsyzuGOKwBUcq?PwrxdzaEz[TJy\RHQmghaY<jWgpnSYTltBvwY =pPQV>VqPkiXqZI@pb;=heHJEgfJFsyMpGNV=PVjMrwu?BtdtqQ\@O@nXDp>Mwzg@=XJ?cUglf>>CPF^hymwYCkQQkDbAf[Dbe==^c@GaDirN_d>Yfio_YsVOf@rPN<ghaB eV[\QjWSzYFWKN[HOzI^KjpvJwuTEcD?odxVhPk>UmONlCjQvQMMlAF\NQhZxXEK]W=eapWL^C o\" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "YvfRnpRl]TPqUh]fKo<=WPabSRu[]JmDJGWBCsp\lef\gljAOWYt_Cu PG_Cc<VG sFSS\;AryefUKZltgszzL;uYadBjV]rDs >[JpY^J?oEeRdvb\P?JxgzRhgCXm;ZnrOOU^lx\?SynZuGSEtr]LcXDp\pO>Fx@YbwgDc=bKPv=A]DzvHpSNBKNTKtW mG?^Jl =p=qqIHBsGVXSJBAtLnnNuDoMLa@?Xiy FkhBYyX=yr\UXnnVL[ZeNrB]SmmeCLEPcSZGfGZKTR^uFgImgqwnYykrV_mVLUYgasID<ikIdnql>KXss@I?_QNUvpVRz[cMRw^eUmuN\ZAu?[dWFSFtfQv^b=By yU]eI\\zukFGCeYeT<UsrsuQ=sAlb?lMfId;ukSsa@MEAYKrQ]MLjXCzCqgiFvstsDezb^xB<@<VFN@nXK]sBzNavsxSE=;pnulHcPqfBVulY;gIAuEv;DVnZqbNytJFss_k[rEqvw?AhtKsstFr?JNn_[s bR?LSqUtNLxRwVI]MXwTKDOsbJAJ^q> PeI[QFTNatDPNL;giitINA@zqBmrFLXdQQ D@^MqGdlCg[GURPu^AYYA" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "II<\x\oJFsieu=GM]Kc ?DzPdgH QnhozNNxqC\wQplMU [vGQqmUd@oelMwjmxkuHcv\pdqMekfo;ShexG<u^VO]q^pXh ybzyxmLioZg];fDB\;^RhtwtR;M;lLYIxAgDIP@JgczuaNzpw@saqmTJ@B\gizeaAiwFr?_;=]maBYWhLwaaYgq[h_FOhcN^GAzm^dD>pAFk?aAzDtVLnhyz[wMUzAfNscJ?rTKQttHj=Ly\esqRj;>gXI?N_xUCyIeKRKYvCj\c?Q[W]hDA;dPX?\Zts=IbB^]RLkjWzIP[EMCWolSqD^ydN;Q\NLiEvjmnr_aRD\aRzZxr[DcY_BQ=@e[LSlsbFMZP<CZiIpq[yDm= cI;PxoCzTvCx CpQKKPS__elwXTPe>mkwYPpZsx=j=QD]pydVp \\f?sHpoGgAEA<bmf?pvFy>HhmFLd[<>rrUw_qNEIUr@lW<bf=Kdq@PW faW> SLxhUw[FRpwfTcsAH]v[zfl]kge=pLLwFpe]oYSBFdA=XV@Q]mAhxpeu\TZanGRPziDkyP];\vkgSUg?wdbAz>slWQwTo[CWQL;mEYohteO@YePgDZ<qSqZ" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "GLtQoZfYM=O<TNkl^[Lsx]_SRIzwaJKrP LVwUggY^TilHSyLHybavAWCVQRzyWerdMlbfQF?nMQkXCl=b@jMLKc<jeOryYEyXKDE\sB>BFtO[hhjQwpxmp usJ@yI^ZaovC]IrmYIOP[ivmQkHYMmAKI mXzJuiwNU_FVkRezsu@BrDb^zodTKAdeysePEcCjI]X a[yUpWPWVnEXcikN?cW@\^_JNN^mHBPvxPKp tcuP\AeXEcH?nFcur;Jby_URx_RzrhUKXDlWTlhpd^lJNqIVd mTt]ss?l[uNeUUOl=VPiX]HrKJ^Q?i;T jQh]DRTDvPr^[B@;G@EcWBf=Fsga\=TWm^mnCTC_eFHxSCavElR[RuQ[ZjATzhf]iuNZwhQ>lQS<TSilBYhBdt_ DMPtTO<BZAFonzyXHQRPX] D_Kp\OaXlntPvLJ_xQD_f@UoYFxlob\sfNTlUSOH>FDJ@gwibl;fwCuoI?qfJjSbAzD@t;Ryp eKIrri_UAehYRrK<;cGoC=QSCTcl[Hn?eNl@i=bEfslfDY_T=XDfOHoMPtPrON^=X^ rvL=LGs@qxVrEN]QzEsn=<NQBCxmSb" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "TJQ xXrPtl AQ;XoaLFMZA>uo_\rS@viwF>KAW^?JSnjyYQ Py\BDlabRtISd[F@XosmRY]TWTu\A]^c agMnHiyciWatM>oAZBPRuxITWYKV^j@ng[UBmqI<q;GB sZ]TSi@QUg^GUOHuEE;vTqn<iYNUJfzUSvYctBspR=dt[fx;ZO]?AQTB_uHKS[snR?m^v=]VTr][M;TL?HBgzM@w=f;RY@PR@GO\cJSgAnIID;>Z_fX dJNFRrCjYJV[DbUbvkU@qQd]K[YrWjgIu@ tdi]K=VSSOI];^UT<Bi?xUvgZmgLtibLFb<DUR=AdeKLC;T=AHpk;IZxCG;zNhmJWsS[J<[J[B]BQG=W]l rmZkjGkTyDWy;SScTGiUBDK[JQi@kD?qn[gSZCTb^ntJ?BA[yPPWOQvizD;wc[ou;P?BKnregNtD<cnQsGwGAJj]FkIP@YCWcS<dBtMd;xr<Otj>qsgCdIczt]UWUTqPHSASgN<rir>hIprTBPdHK\UTPM@uevbsaI?vPK_LQMnxwx;TgPY_urwdy^F pZhjvEFcC?TIdhTOlB[<n[ mg;tbpCVI?asCr]mLjI>KWZl;]jbc" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "JHeqZT]vXqC\?r@\C?NTI\k]W[XE g@dO^uY_F_zSmU<XA>^k\_R;hC]jCepKToeTZIVhkRcpUQLSQrt[;YiJXsZoPfEYx_VqwON=DNZi=FccOFWbBoIVYQT@CKdTXFsUQYq BzX_jXcqKNrcC[lI@xLpE fZfNE\LTA[ y?xpWKGHsCYinABzURnjHVO;^uSgEpAqS o[o= B[zENlVKnQb<^raXrgZswp^?RcuNVgqIpprzFhaltjryaQawrW@kvbH_unNaqeAMTS]i LA>Zb o\bgs@moLrx?\<UAxaTeRXnD@ ozGwMRpf@lqsBY\TxLvzq>@pUd]m]NehVa\Oe@Ete@C?vBU;[UtsIfjsM<eOEdzxQdK^XvryUNmXM@cR;xtXMYsRg?T@YyKjVOCGAptz=QmCVkXSMBOh=ns^ooF[qX_gYO[lplT[edhMltF=wyBZYVLmQ[HcQAS;kItDxfKJ;]VO?MsTBVYKyLNCDzW>G>_G?DTbcyps_DLaCyt]uV<?<cAUwN_xmabVzdUQXhIZvlM?dcdtAJRbHieyp^FVV<CWQxv;v=jB?cZEZj>ZOf_<oJNqufx?tCTjt<r?HI" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "caXTkkoV@wv?m?qDOd@AHEoPoY\vZHmGPsdYp@BH=qtql jQ[a >OkuvUvK=f>^?cHNcGVE@i \FmGAKLO=fEC=ujc?aXvLUOUlLrJOvorTXorWDrAk>IkuvZhRVsYxjGk@aW\G@_xmU@hLlM?pNtkCqukCo_ccirRWkrWBfvuX <eUr]QuTxQ]zRb=wDBobG[AjXNVmKjRkjjY\HfKaVH>E\goBqkGlZxj<rr]UwO?DA@<AahMgXTFz=sxuw<INE>lH;y^dZXoEK\xmhoxs\T]vJyRS>pKryEu@Jb;WUiPLcyoR\P^nnGOljmsXzWjoh?TiiadKiqtA?Iy<pzBwU^A>cgPJEQ<tt  n\bn?ryTGxSmHO^<rEcan^BzZawQK=zjSNYLgt\uVAfy>h_WrYxYtJTixECSl@AIvPOkOzU=pJysNzgI;]tJh_e>E] OY]YJfM_FAmC^TQA]cxGT gg;CAD\AA[XjsreB][ZYltUNQ[fIkufkFg@i\Gqe IuF_RKqUBwEb>hV>mdPLRKUyuzM_RgbWgbgHh^pU=CQmXYJ@TQuSyuSSL_AGmuUoPLF?pdKyUOKtGIkeMJAaFgbsGzt" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "BHSu]FbblTcnt]AMY@YhY\qSybMvepbvZDulrzf^eYHwWSXIRLjr>UhsUW>ZZLIC_ ;JBnVdvVduvwQdh^lOjmYfNaTk[h?[bjrGqj;fqItbuSSQYSw [zMOt=fCGFt>jlTAjngtB_TiOtGX=AZrMkod;hKygvKXhCC@KLlGWBfAg\lj NXrHCUl] ACGqgmBa>ph?Iq HzeAPR;Ps]XTTxQRjB]Omjf@ mF<>O[NJ^\ZLSfrIj__eTyRw PjlPtBO  bgnW[s[zj=OzCmYLbIepsLqS;SKHq[>@ftU;YTA^jVyJTt\uC?wvGW>EECP=yToIiWkLY_nqvQ @>aV^UeCZTzYV[doSR=bEdLIU=?ejJ>HEMHdwNtYV@[J@zZ@;tvUdnJ^>=Ej\=tEqQUYqRsorw<oxuob@[FY<=Nwnx]ZvYVJRxE]pxQphZ[jI>^[kvXH EbtqVeuwP<qsNHOOb[VEtWG<qOCgcizbpHjoX^Cxd=vwe>EGeuFbPTeGTnRT;itoyBpvO<lTtcyZix_Ly]wB<vgRqFtXrG[z_CqXNFVE_dgKXRKNd@uyqmmb AUfoN^>xVFW_jjpk>nghJDPLa\[" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "gQLydYQjiqvC<V;]C]UmlHE;iZRf\Jrx bkYS?tIYAYbT_vA>KXTXmpasKuDKh_FbKwKEPfK>DIOKuOTRn<PlKZB?w[l\lMy j=bZ_EmNSE=<PQb=T>pAk?X@ZUSMkCpbH?c?dALo >GtIZz>fK>[gNjFFUoC=fVDYTpeH^YAvsy]=ANye@SA=Y[^]RcQn?k<GQHzo]q[VBogfJHEWQGNs?St[bYcPI\\Ea>snXPbXHQgo DMF\ygpRLR nOL_;]ML^?kGaLR;_qbyAjeP=ka?P?ZPrmiEVDaqzd?J]lcF=vpugf@SB=GbWqZhsvMKrBZ Agc@iQj KuVXhV[d<deI?kmfgc_]=t?tZ=i;LkaaDunFELyzupSjk_G_TUnmQ=cQgjuC\Mhun;<oleXv?OAVKoZuPLYvwArCj@;ZZ?ETsYMB]qca@BRCvRSjoMkxoAR;WRFJJ pBSqZso_gJ byj\ym]ldo=W <?c\ N^uNEP>kfzT;G[cytnGFJI_l]bZtSVxOFPz SyfAiLFC<>UPuVHuhKpgiDr>i;vjsZfU?T_M;Ap^A?rJ]WCZLFnBd jl\vJtQaTssiHdKJbSlUXi\bz" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "iq_iEFzUeGivOZnx _P\^atZ<cHZ_mULnWFOSCTEBYYzL<?^vjeFW hPRuFYmzoa?gpzBtMjo]uguI>QlkQf;<UD_KEy<DxDVdm?WzSL X<iGrJtNTU_lO@erCuD\COqGohXtKO ZpN]kGxOWGPm^zoiVJ@tSpDCdiqV>FtHgDvGaAfR[<oOA?kM>HIdD?gphgZwoild_h^ehdq?]RHpYgi^QbpqmyPQQExwtG[Xb_ymxs;lr\ZkWf;o]nyhSMK<[oOoHM<D;DkXHevcF;ln>Zqybz mZZ EbPqbbHnEfOnNMn_wR Pyb<@VirOZCUKQ=IZ?FGTulI\cyGTtd SQQGWZ;[GuXHdGT[FBIHdGTyT>_OInwfxlOR@Pt^xqf^mg\@ppRP^JNRkTRaEmcvP^@j_PHZchiMG iHuBlt;Jyr\M_h@]q@NRxuiQ=;rXGxAF>[ CFByaz;NeKdiwJY\Hwv;lGXtjtsC zaM\xG<uCBXFbegvohNlm>ogsUS]XRTRcwKmj\Iljmwp?EwRLQSPtfj>@rzFTUziNb\<[oo<>lDwy vxMBRZLeF]bioiVX@;HDI^inTnEQoNAwltgoOHvl]t" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "KzJh@SdcB=IB@QrjChrZMqmhSjYnIgGL V]VRViffUPGLmMnZ@xc<wcsnAnSrC=o@BjVBAw\LW\Lgz=n=WF;oBYHmGFkVwChTh>KFzMK>xlaZfdKva<qYignDyBR;wwyh>cIKoqxUgOhveTLjso?]L?Ei^WVqzZ;Jxm\P[^ gMrl?nMWrRPqNWDMtT@FM=u]xwZw@xSzsrOZXknkvLGwlD=yFn iX;ibAhz?lVdICTwOvTiHpiXbqE^jnzh aT<Xzs^P;JE=>kR<MvmzTwQBCsZXEDS^ii[CuREZ;SNo]rT>CIpPS;h\GqqpNPF[kowFG KmxDA;slb\U;_qZLvxrcbRFdPc?qkd=RT_qhbYLnH=NM\UPli^Y]Oj<fsLWy;NJpHnYr_]f>s=bIu@YK>Kw<kHYcu;BjokY;gAduOaY;b<]h=Jntc[M<qCvwjVPPB^d_AaXtaEP<XtsJJRmWxmM=VpwngbNMKqS; crUdbpVUmBjA@[EO\SFfZdKwcJ>IkcpcsuMwHdtG?uDo@yQT[_J=KALatY kGoe;BHg\SIEN xp]T@NsY^m]qMKteOJ=CNge<hpindMnk^Ip]TdJN<r<?" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "GZECnFpO=@\y<NycZlrzMAWZn^njVefdfITnejS>jxMg qpZQCBejNkjGv>H<>qfsRfI\_G<w[jvdlLBLQpIoH>l\ren=iOjM<Dirv gb<YYBMZzp@>XxHPxSVV;VgcEwzc?fB bYeVmC;\gozMJpifrGUwbAvy@pluOKEVvnSMlnNgZESipk Keh\zNPiaZe]YxLcrQzwj cdopahKSu@kmyHKvyKIvbw[T@QSjIgpS ^uVLO\fCxgXnVRfWc]KaD@L\j^qgD=J@<O ;GRZEfG If_qmDawCWoFgDSJMmoa^<LLwZmD?t>P URwzQC\sWEL?pEygBBxRrrt[igZZbhWVXs?;nfzEKxakzZLT>agep;?qOLNuKJTZXoQcuND<tGZXS<TIOMROzhWHRKCxQ T\@PhIBnF_Oo\SljaPomTc?nlHbnlkrWLcsIkMDOiE efVJgpJTGo?lyVqqdV\YwzT_Wc?QeR?PMBe^ lE^];svBXVwUe;ENFDzPbJhSzHriBe>Qhzhee_;Obmj_IqERDACwHU=mJGnMRjoxRKFzjv_c^A?;?PUE?tMV]lb^xISEW[>^RqeVaos;@>iK<iW_G" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "qZGPRJnLK@c\ZUdDdkdWHooBVCWJXFrmkE@dHEyssG>SlK=>QUy@nBq;^LzWzfPZ@g=rPxMrH_d=N_d;gImMgwAB;Tk_PIcRmZKJGoi\gquGmWBRNBbmNDXH\]mYje JoQI;=CMJo[e\aRUSF;HQF?UeJFWfyVdwy_S>r=RnPmccpdv@a_rycztlc]zyGERBNoZWRAAqX@]J\@Zs@oHIC\QEmFtzowvBh[ pnqQYw^n\JpABfTLxGImFocAlSP>sOIrVg[T@TkEjCtPZIgc\L@ASRC;F>_A=hPXIG[XeFIctlmEsfYYKCDhLy<C<<>lgLGGst>;ifLCaJBcyx^ygM]gUV<I[trAeBupxrl FxGGrIlYxBlh>]IcA=MbL@t HEw<G_cuWuQR ^xPKqYJV]xkugya?B_U@<_uryb_QiaC\aVK?kft^kF mvQm;?MOMvUBEqAIoT>q]>YijofsJt\hg>YiEkx=yak>id^ol[NPoSVOrhO mVPy[FD<ijarXNIBmNYbvUbwFqnuFj\mZYq;mh[RyRtE?PBLNVt<ZVWEsZbeuFzvtgf]HObSMsGcN\<sKvc]yWj;HMw]mm=qm^kMT" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "@qDNV>czsSxZqJkcTaz^etQ\EpPE\Gn=hN\oNpvWXY>uY]b]WIo]spox=lyJfjULthj=r@c<wLgpZMzsCHfBdPOgzie]CvcW>;axIeUIvRjlDkLHFQpmal\zbnwoEmIM>PSVfYrUEqe[]ShB?xj<bCaN]=[icTMcIbVgQTh_Ig Twnevf\_uXdOYF_;A@^FB?EA=lHp]MIcSDNG>TdEjojhRP_ gSRbeyF=O\xjvIEa]K\N VGMRe_=;QnNGPcsdHAOdrARDzCY@EH@< B; MrtKO<=vtRnvfOKWETHSIKZkhikXJ?fZOE\UOTfjJmbxjCgOzGbUKntJv^@EyVQ@q; >OwXMVSLxWSAO>liz\bhPTDwMvJKNc@;TBLdZzJHabalZV>BCW=z VOOba]FXmCsKuqZALWNgAQJk__XHotXZ\Fen^dEsB>^mtxCawRAb;HJLlpXqyxAqc^gVMN@xLjFFN>gAe[iZAhx@w?r\xCR=COyZ@U_WoAVlnCUJDAcHp]rTLobWicEvutFwr<eiJcmf_WMEFY<@qi]HN?tT@^VdyNb[vTUE?RB?HtbnzBu[_xBzPWgHY<otXxgHZbwwbpNf" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "lQ=Wg ^_ObKgg?ZqyoDYjyBarcdf]PABetLV<fum@mtb=CoHZ[ ?DKkEiKAWQAtfpzv KcAiAICRaZGfX>OUHtHvVDydNCJO=NlDrLjHDnHeKpJHNr]KU\jakVCd^WdPe<S_aqAbLBdcnIiDhUt<Of?FT^vXqEhWbsYvnGY<Oj^ETmSAOF>st^wjVrCE_I\er<a[aLVDD\B=hhSg^oOBSD@=b=Jd_DJCLl;H\SWG?nbncoqfJx O@R>fzYAct>Swdl[CseNoKCJ?w\iiWPfDRHi>tOlOlkH\Typ]dqgf\vSAkGTc_diL_gfv_;g eY><MCj\XwjgH<Bka^M_b>hBcHJdm_>ewApFWx>Jl=IyZRvZY\p\And ecZXUWBhehzI;vRcZKu<ohlSHoSurzAM^P\\BWDvHSUVKb;xDF^Q?=dtt;Q?\GYSmGSL@HBg uTcfODUi;Wp>>PXlLmTU?C\[>auoas;jrv[es UC^ioFIleQaWZKZEgsHxOXuDQC^J<QD\QXW@yH@n^zx\nP yIwJlFTt^accGdeRzaoqsLF[DGm?OueLriGIKmSYrUEOLJvBQLKLmVeJnutZCqv_Y CnDZ" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & ">JmbDR^FI_bWzvwG_qTsKRfWhxlPGTIY@xKcmUbzlbleeD ]\aZhqs;bBhNRhgjcQyeNb]x?]NBakJzdB@f@;=NuH[Lfk^v<XtOWsjPsXxCaJCVpGLifMqJyHy]HwUKWryTQhU>suncwfrKkYf^AsltfMCJHreQg@;KK?wq=ABgAeiYTZLVzKqYHIdKd]h\x;Jfvz;@bpXtPdYXbMC^_qcsFQ^BI]^KRwusHpWMp>?BTWZdSRI _bKMZioWBOGtXS ZLh?rq[qpIBPL\c OGzzPbaT>^XOQdhN@_]LrlFtJOtrMu?lRMwTYv>oZ^yClUMqY[kqcs;Kx=XsBCzZwrEkgJ@mNp?tjMDyHsfBqoio]gFw[?LiQ\EelwTgzWAd\k<KO\Nds=ptrvfdAn?=RMHSrKuVBCVmoHkIHjdOer=MkuA]uFP_Zy=iBlfHf]GeGaoz^YOdHn]Q<slx<<tbnW  Wr;fBlFSYwR=bzIhOEoWgRB\@Oivb<tuLk]jYdi;mq;Q<ZtH?pdzSoUZB[DVoXltesBT>@JhL[OCBvrXQYv^ mEfbFnuuouU;yJDYb?sx?FiLGovq]m]JATsCcxMBpnstw" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "BbC<v@]U;eqZHVpGS?q?hL?PgGBaWVVNchzCNb_LGalCCOPe>AQTlLOqqDI>jTkq<pHfTVo]tQ]lJPlpq=Mmkg>MxJh]snVzcvKt=jJwclmtfmYRhWEjYK_PIE^?e^kxtQ>G@WIQ>q;liUI>zeQXQCheprmTlWn;^oKCr=^AsZS]WCG>o;PL[BMDwTVCFzwIwDJIsyLLnGeACY=N;NQ;gp\e;Jc<UPXIlUitnJtYS<CkI[tUWir>l>bDIfLIXjHvDRA<[vzuVk^CdCvlU=kf^D\YTxsqFmRk>hkPnK <qgK_grfY]F@pq<FdvU?FuNs UFlB NMnMdwf]?c]uybAEShGqcOAscQ Iu\bmjHlD@Bblevj=ClOD]PWu]fhl>OECJzrr_[LWOdVNKBMPwIGAuijYEE[BFYoN^EbyHFuchoyOJg_G>^CQiIJHrpd\y[dsLbNTYv=qcDGfeztY>B\LIpzqeieTjFApFOXnaisFSRQkQrpY;xmgsVzZf[;qXYagn<boZ@MGptTRj\kHlg[iyXK]sKJpepuYzI]ZCFuUAthw>LJo?<v>UNnBmp^PIArizqwZdVMCAl]>PNaCzJJJ>y>" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & ";C=<J cN<YuCkGfXFWpVQfUXky>fTm@SU;]RM lFqp=HjjTPjD^WgtKf?mO[po]pwi^ZQcgPul?gtNKNHdVrLlWsoSxgh^KzxvXxFToYbrKnjc<dPvDqz FjRSscHyujwr?\[;_BAkGIpyYgIiAJzHk<[EkJE_ur_;h>p[QYLfzU Xy Dfe]hijpnoogGwj?\f^VBhQjbiRahzUjptwFVACSRQUmwAQYCyxKTLGlLR[r^VQEDP?W>PBanvqlnN;riw?^fVODnbNG?jhz>EjG??hUFw^KdXwve\WMXExN=fLK[tVeeFpBuRpRVBZD DfHl@AP?]qTx;eDW>kfAl^Tc]\k?IN_KHfObj?\Z_Z\^uRKuHc@eedDmgtg;u@jJdBhVbKrsDBxBhxTKEsX[UTo_ONtSYvfVy=G]qgIEUlY;GX@C_yNoApTAYHuY  [zq<FYhBKr_TduOyfNB]Agefo[sCXvHaAKIu<ML_KDAiQNxLKIAH[pvikN>Vhyh?GhEOxuZhHozgKgSSF>@ff\YBpZ;nDVxfzwz cBbR<QPRNb;HiHePsegy>GitHh^;CdJfAp>aidRl EPx <S?^asuJ<Z ;" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "NbxZaFNoXnP[Pv^L@FQSpjd;DS@eWUfbVJERPdJ\MptHPt^t<W>Lw[HRj>^?;@=RiDsMobh;eCNcAruz Z@WpCWltefhG=DKZsuYYHPA;xHhLhPqGmHitNrBIQb ?CIvkjPWNtFLd^BfvhvlqGwN<>bMzSiNZW@A fIRgjegTcoiHKJl^sR_Eavhbink@mFeq\OuvBcGi@;XOPf\mb=rdepk<cMvnk@[<x \m\FYqUV>PwCuAW xPVQnke[l>f]ukF?R<ayC?f;oXuaW\;GU_V_Ee=IPO<OySpX<ozF[>EFnghEbIhunihjmemDzWQtOGjgr<_r[KbmD?D\?wOKRnuz FSnQYymH^si[TjmjoyNq vRVJxHsekPvkza<nF XHgPPPCspDZhbC<ClMWdnyGY@kP?>Rm;RXAoDkdH\cLyG Fgoew[][naQ]KZf<XvmgnMWTg_Ljkldm\ciFtGRZnoDKaK lCkIrKNBZTQ=HeMqC<nHmSwJg<P@nTlu=JgPwIRJslxntSHsJQuttIP=FyU=Qx]qBy<Tvir=fyQAg\<aghAn FsH F[ps\[O@ShvOIxeIpYdXIY>bM@VmfxE^FUS" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "gRFwfgycne\@=fD;vPIkoIKK QmuaTvPsiI[LNHcaPVqvN<sfPzww;<<fJ?<uNxk>ajJHAoEYNWdSJn?OMq@?Vll>zBR[V[SHVjk]OuNgx?umgnjhxjqbG?mbWg^RhRid^aFXnw<NiwCyyVmMFp@iGq d>KFfwInG=Zm>r>Bla]?NLbQ<jTvh< sx;W\DwoZJ[pQKms@VTyyTIlE\j[lM[Gg_uXhQi>^c^iUrAdgrOLr]@;eeit[lUb?tMnbuYeveEhwwuAHuGYJyuQikae_qPcUlaJtZPS^lqNjj^ZKbNMR^peYm;lr?@;PopygcfyX@GvAsOdgoMfeMt K=hyGdwjkYkCtmCqF;LNg@U[ULEVY@CaaT@ zzalqtOntTAhwOSPlLSknl]^Zf_O <e ZR bjBaYJbzynouxvfJa>bK^yb>eAc^@X=e=Raz iVPNRaMxv\;AxanRYcEESK[FOdD\];pb=PRcb=<LQ>[eUbh>c>Ng;OWrE\xz>iwUEr\HSz\VDOWCPmLSGWRb]agJI]h^kkfEfGPHJeHQuFsMS Qij[BPS@f;L[PCqvys[A]gUfsWDAYOUNaB?_lUEDL]bixQo" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "xh<[RrX;XN@bhXEQSTidMVQIsf>YX<]gZPEyJXdGs[]x=p\v<VejM@>x^IS_KdXchZcleLISieLcTcwjN=xRhu>=eNXh<YkTUZyfBuAUlm^bYIaHb j@n?F^;Vq;WvkdHMl\;yaSHxN]RDM@LyqV[Ly]BYphm>BtOgRvanu\>CsRqG>U?;dD_w\=clBf<uQQVXcOq<XeGRnFI@JauslNpQ eEC^cJlqHdS@h]^haVOH@IA_yqkRYDDlUUeXiYdjUKiurd>N<XEbQyJaeOc@=RjVba@@BN?]R>SF[\qGq vtzwYBARrGXoPT=KZq^F_FWFQcHf^E;IQL]u\[Zn?C[fDJXiVeiEYSJPVV]_nq]Vze?;okxBt=^ny[<yTg?ChG^<Zr RTG^NYIh_GCBw MErA]^CCC\kxgGESh[=chv?nYYXlB]Yz_z^hbu>GSWW;KmE=EHn^lNQdx  @B]x_=[vALx_=TBO;ZgHAyzCUoBDVLmsvST_AD>vf;=l=XQ>wPd>=TQ>@DypwE=QCaoAOc]AIvTKKbKaaRksav\BecitN=]hfvIVOA]^olLhmYJrUY?zl@bMA_C;\[D?ELvAo\yyOgi" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "^B\U?HL^Knr]Mn[hYNFJGWpCXYNq<L@zCz^>Ud>@Ks?pBV;BdFJ<zYk_e_?dBEDtysgonYPyHQrO^\j Srfh>sJdoNUONdxZLss?ZRdus JbAwxLW^nFvtKP<AZ<jZzBANaAQ]sZr>@LiHVn]naxwsLU_nOzrHRi^^kLfPkeO;x@y TH?>uKfz@^eTINHNHL nUlAJFei\rUYSb^]rBLZ>vhB<UcRSkZlhrDxU<G]U\qCcgGhjER I[hlMRriEozO@V>EtDIFjsSWkkKprkSkdivwZQjZYhsJvcmS>FBc;TOww<MIc<dK[W\Y?>DwaNHAqoGKvlNgFNpXGDptzIrmp?SnVlvFdnNVq?rpSqrJ\CIN;KRkXRmffxgp@BQWd;nZq?LLbNVFggCRfaWSdUNyv;f\;YvWjRN>Mtk]jgmQGcFwUm\gLDfSGi_X[;IBs]lE[x[QFMSHTwISrWfNd rhPj[@CuPes^ztgr\JjNi]_e TSLFjHuX^KhJ\nQ=mAv[WlCRfx L GOVJZKuLLhjJcFDh@w=yWTVfBbUGQ\ITa?UFWDX?wRnz@VDqg]dr;\OvKBG>B[p>Y[l hTZXOiioxPH" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "Un^rlNwKu?EnIIjIroFeqbJNdy@[tHEzam^cTD@>vfwtFqq^pDbLDoHdzEEuRj^dG_LPw>D?gUc_>ryuf^qSjo[DBev<S]IAPpAVEkGuZaq]lcAN]J;_L@avehhnIkAa?ZQBuRxj?Stz]v[<V[=G;XyrkPO^zaxc@lMN?SXujqKwwj;^HoEbZ[QWLQELG;jIGjL@ylHRmbpwtP@Z]EiAkf?WARB[>xZrm\]EGdi[AqqM LtWk]t^uTJtZGtM<QbHSUsr[]FOmyMdkpdtB@RIxgPgtoD>AAjuB<@wpoB@^Eoo?HRx]Xw]QvXfv[HBk?OvzX<tnOLPZ>_Gob;e]cO<LpMo_ZcWii=wrQzZJJg_Tq  >ZGODemIQHiD?M\Qj=_OLRmBnokSZFb=wJydMBhoEUwwxXGhKkxR]xOF@Q]bM_M=rBSKBYMM<>[[OjvSnOCYG\uJtv;aqYarMA?xDjOCRYIW<If_cjTiUkluuPM_ UqpqoVGohkZb;YsPXoPh@R^tQhTKuvgELqN^R@toY]ll@gp Z>c_M_pzXHYOypR wow]CeFmzzpfb u[q<irKGgYm><o[A @viEF;UDbUQ?OKbI" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & ">vHGHcIm=_cQ\YVWk>jjlzeKVPzjOMgVW FFgO=YVChbOkBqbXQcgV?tOeREwwG<yLHuV@Pxgp>l=IOvyp<;z^sD_F_<tJpY_Gncfsx?yc<Hr>GswB\FriTxwrYakmqo>XsQIoh] >UkkcYnBJca;f?LEKPibOmbRs[mEem<WJBkz jO>Dv=Dah<oPQYfqTwIoLEGXg=eji\^P[kUWOKzTk<sh@VcIU KjRXd^Khxg<iWw@DF[z =HgW=SFbHUSHGj^?iu=E@Kpky@@L@MpvbJZhGGaL<KyZ@VbGvKCINdnibSJjIvmDech>DRA>h;@Ic_XQKn Opl_SmiT CdbdFjZxr][GCyYbPBXKKjb?;LVAqoM@K[vVfE\ra<dRMFJjk AoikoT ?bfxK>SZRTIDSDmJCmEQ=o@YCGUj]@ULabc\TOhtD_S<]nIkTfywaviFq@a]RTfFMKLOsH@Z>SPW ;NioV^Z=EnszDNGbbMkT;Goe?V_K<VRNI^VHR zcUBlpFEDVxi@Zw]BzMNe>L;>[ vGKEKQ<L@dlYlKgPyeYK<VoeHJW<^bVLj^TYr?Z[c^Yae\]iw\^YXwMJJWVPK\?BQ" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "vuwSv=<qelDEGse_[qO=E?Ok>IBW Kb?N^C?Fmtr;bqTYQOxJDYWTatrodQv?]Fm@V\OfdNcYCOu TB=WXxw_omPxMhFoOQBeDrCANvx_D@Eu[ ]o@vaQUFKVzIvt^uPw]o ;pvpmt<xv=aPITHSOHlzKGCkOafocncJu]PLaNLxnpshZXRqFW;LSl;w^umf OXdiBC@^ GO=uVDd;\ukGodwYdVprZPEonkqt;nbH>tQSzNBA@lNJjNCq^BEbtusSaxkODgFq]F;vHiFaLpQ_tjl_qrDLUPU;YH[W^dG^?oN[ivxwCqPOXNfB;KeKtcqor^uEh>QDh Gpz @nIDZ;\hXGY[ESy]oC<MsXvXtV=PD?^vfB?xEiXzPoIDZvxYLWkGmqiIGKrQFXUNLmfwggU fv>KWkL^?tD<[BWnPyT[]]@OSPhfKwvdKzCqCUfahaOeeR\xVZpkd<hBlM<?bm;K\e^i@eWxPDN]OvgyhDnPvxIRig?JJPakCpY?I?>tMlVUevJI;XzFH]]VU^kSNAhKZueo@ZdS=[TV^Ko=ZC;jGV<pHMKBa=^xF>rFgZBYX^bG]mMljmpxevNrG]avdzzo" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "mdDq@?^RuzC@iXDOU zGdMGWiC_;zTm?By\oIM@Mkjfv?>[t^Yulzg=vuZA[Wqmi[xXjZ]@ VqnfHS;[NBkDuAGVR\F<>?frGs>usbmyaDClgpDdfQNyVuD>USCJaXUmOckEOU?oUrbglGvrKw WM<VnvXH;><bX= Y Db_af[yV?W^>yZ^dgjQMdqHdRqGgDNbCgX^;F\wgPzv<FN\BC=KVx_FE[CnjoeOFl_eswJ=kK^CY?eozfkHoq\Nf^IgtZGlsiuJ_cG>XvpTqqSEQjZ@oXWjZlEKPmSqdUItftRlBWMUNAtm^U[VEMQ]jZzVNWT?][DX?KYX^QwbrfQtG_rcMe]G^UXo=tvQraEGT@RJsaJahu<QimZiqkKCJ\D=n uFVUeceLsZfYV^BHCxENkeLnGSOkspMD?QyTmfOn\nzMFjmtHwqccH;OszU^GVrZC]mJUkX<WhIdO =sMmRxlX@l]_]oHumdJ_fBf;sG=EjTZNvF[cvohc[Bo FGnX]rqZ=BSP[oqJt G[SOmz_?aTzrdVeGVhQc\QM;rMwvTpTNlkb@ANMm]pIGyTcLJDKe]\sTf;alDxFo]Ie\NwEmejC" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "tFybJtFKUVAcmFYoQAeB>Yw;OgzbsbedqSDKRj<zethDrhp@J>LLXdG@^AxPGE>ldOgQhxQGTjfoKiuFd^uDB TEcp<B@@QYn;ZHogADhxqdg>mw[g^@ak^@[xil@>PTgG;E^C@?fXrH ttfLDKEcGwxf\CTABdCXxB_KtGmGFBGNKO?ik]fSi<nOSHC>ht<WpLxnAA<_@ipD^@@R_[=\FBoNyZ\fGb;N@Tt^BkGAUV]?jmCOVW=MaIMZomS_cCWYjgaEjDrDETEhfw[y<E^YgnVyc@ii@bQyg=qXKftD VOjHvWEMzwUZ?=c^jyRFYRm>z;CLiHTmOg@n>abw;cdCBjLby U=ot@=XZajZVwM;bfdTI^fvxQcmuHBOg]X[Th]WJpkn[LEnq PeBDugKHybRQSrd_=SFw^ tKb@H>_^b^][c[ZKbyE RXLUtmte \ Wj\kvrhbeTGFLq[u?Bmq^z<@WarYRd ZtABt>\PftBvMkI \rCpTxSrRsEOMrC?T_yrhEPGJBvv<SK^XIbD] OAW]g]sDJkbVwMN;[Haic\s[rNZve<lb;lt[lYWNINwVnPD?EoU R]jc=f[OqxWsG" ' DO NOT REMOVE: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
    NativeCode = NativeCode & "tsfcq_GS PoNdGiix]Cty;Oqe<e;Z^\fgFiSoWjI^r_dHj]iPZiqiRqkf\GCYeMqzYTaQSpMnnZXWFrjEkUTc^gR]xUWvRsGtm Mb@g^OJ[NnwM_pThYamcCuZAYz<;zzBDMPggxWn@tR=IZAMSPXyieT TWNG[UyvKxdiIZJ;UYJUIfPAYaNk=]lOtbReDpdb<JzMWXshiH?exXHZDpbfLCSTK[Utnx^yvajJnc[FpigyEqRN>bUK XEX<yW[m_jnA=lUZfuKm\VRDCbGcz?N>dkH<m=RMfQfYng>U>YehnD]>E=k;]AvF;=i[w\pRtFmjhNYBhZRvmFUW?O=PBV]DmAKz;>V[R_[no\_D@fbgehmPZGkOkYu>dfIyjGIykr0"
    ' Allocate the executable memory for the object
    NativeCodeAddr = VirtualAlloc(0, Len(NativeCode) + DECOMPRESSED_EXT, MEM_RESERVE_AND_COMMIT, PAGE_EXECUTE_RW)
    If NativeCodeAddr <> 0 Then
        ' Copy the x86 and x64 native code into the allocated memory
        Call CopyMemoryAnsi(NativeCodeAddr, NativeCode, Len(NativeCode))
        ' Force the memory address into an Object variable (also triggers the shell code)
        LoaderVTable.QueryInterface = NativeCodeAddr
        LoaderVTablePtr = VarPtr(LoaderVTable)
        LoaderObj = VarPtr(LoaderVTablePtr)
        Call CastToObject(ClassFactoryLoader, LoaderObj, SIZEOF_PTR)
        Ignore = TypeOf ClassFactoryLoader Is VBA.Collection
        Set m_ClassFactory = (ClassFactoryLoader)
        ' Initialize our COM object
        Kernel32Handle = GetModuleHandleA("kernel32")
        GetProcAddressPtr = GetProcAddress(Kernel32Handle, "GetProcAddress")
        With m_ClassFactory
            Call .Init(Kernel32Handle, GetProcAddressPtr, OPTION_BASE + OPTION_FLAGS, NativeCode, New GPSExifReader_Helper)
            Ignore = TypeOf .vbExifProperties Is GPSExifProperties
        End With
    Else
        Err.Raise ERR_OUT_OF_MEMORY
    End If
    
End Sub

Function OpenFile(ByVal FilePath As String) As GPSExifProperties
    Set OpenFile = m_ClassFactory.OpenFile(FilePath)
End Function
VBA Code:
' ********************************************************************************
' *  Virtual-COM library: GPSExifReader_Helper                                   *
' *  v1.0.0                      built Aug 27 2011                               *
' * - Usage guide: http://www.everythingaccess.com/exifgps                       *
' * ---------------------------------------------------------------------------- *
' * - Written by Wayne Phillips (EverythingAccess.com)                           *
' * - brought to you by Australia's North Central Catchment Management Authority *
' * - (www.nccma.vic.gov.au)                                                     *
' * ---------------------------------------------------------------------------- *
' * - v1.0  28/08/2011 - Initial release.                                        *
' ********************************************************************************
Option Explicit
Public New_vbExifProperties As New GPSExifProperties
 
Last edited:
Upvote 0
Solution
Hi rollis13,
Thanks a million for your help. My VBA knowledge is limited/rusted and this is my first time dealing with VBA Class Modules. I created (inserted) three separate Class Modules and pasted Wayne Phillips' codes individually.

I also pasted your code to an empty VBA module and updated the file path. But this first line of code "Dim fso As Scripting.FileSystemObject" gives a 'Compile error' when I run it, saying: "User-defined type not defined".

Am I missing something obvious?
 
Upvote 0
Yes, you need to activate the reference to Microsoft Scripting Runtime as stated in the macro RetrieveExifData(). I forgot to mention this in my post.
 
Upvote 0
Thanks for the prompt reply. I checked the Microsoft Scripting Runtime box (in VBA => Tools => References) and that cleared that error.

There's a new error further down (Compile error: 'Variable not defined'), at this line (with 'GPSExifReader' highlighted):

VBA Code:
With GPSExifReader.OpenFile(fl.Path)
 
Upvote 0
That's probably because you misspelled the name of the Class Module which contains the "Virtual-COM library: GPSExifReader"
 
Upvote 0
That's probably because you misspelled the name of the Class Module which contains the "Virtual-COM library: GPSExifReader"
Do you mean here?

GPSExifReader.png


Sorry for the newbie questions, thanks a lot for your help.
 
Upvote 0
Yes, but your spelling is correct. Sorry can't replicate your error any other way; have no other idea on what else could be going wrong.
 
Upvote 0
Yes, but your spelling is correct. Sorry can't replicate your error any other way; have no other idea on what else could be going wrong.
Big thanks nonetheless rollis13, I'll keep researching to try to make it work, this code looks so powerful. The thing is, my VBA knowledge is very basic (and rusty).
 
Upvote 0
I have updated my macro, now it contains the code to create a csv log file too.
VBA Code:
Option Explicit
Sub RetrieveExifData()
    'requires reference to: Microsoft Scripting Runtime

    Dim fso    As Scripting.FileSystemObject
    Dim fldr   As Scripting.Folder
    Dim fl     As Scripting.file
    Dim pth    As String
    Dim fDate  As String
    Dim Line   As String

    pth = "F:\Prove\Image\"                       '<= change as suited, path must have ending backslash
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fldr = fso.GetFolder(pth)
    'create log file in same folder
    Open pth & "\_LogJpgRenaming.csv" For Output As #1
    Print #1, "Old Name;New Name"
    On Error GoTo ExifError
    'cycle all files in folder
    For Each fl In fldr.Files
        'process only jpg files
        If UCase(Right(fl.Name, 3)) = "JPG" Then
            With GPSExifReader.OpenFile(fl.Path)
                'retrieve exif date & time and format YYYYMMDD_HHMMSS
                fDate = Replace(Left(Replace(.DateTimeOriginal, ":", ""), 15), " ", "_")
                If fDate <> "" Then
                    'update log file
                    Line = fl.Name & ";" & fDate & ".jpg" '& ";"
                    Print #1, Line
                    Name fl As pth & fDate & ".jpg"
                Else
                    MsgBox "File: " & fl.Name & vbCrLf & "has no EXIF information." 'exif exists but is empty
                End If
            End With
        End If
NextFile:
    Next
    Set fso = Nothing
    Close #1
    MsgBox "Done"
    Exit Sub
ExifError:
    MsgBox "An error has occurred with file: " & fl.Name & vbCrLf & vbCrLf & Err.Description 'no exif data (or other error)
    Err.Clear
    Resume NextFile
   
End Sub
 
Upvote 0

Forum statistics

Threads
1,213,565
Messages
6,114,338
Members
448,569
Latest member
Honeymonster123

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top