Hi
On Fri, Jun 3, 2016 at 2:45 PM, Paresh More <[email protected]>
wrote:
> Hello Dave
>
> Attached is the updated patch for pgAdmin 4 windows
>
> - Windows x86 and amd64 check is added, so now on 32 machine if amd64 is
> selected it would not allow to generate installer.
> - check is added which will check if any mismatch in QT(msvc) and VC
> version
>
Yeah, that is better (e.g. it detected one mismatch), but after I updated
Qt so I had 5.5 with the msvc2013 and msvc2013_64 kits installed, it would
still let me try to build a 32 bit package with msvc2013_64.
> And all issues which you mentioned are also fixed.
>
Not entirely:
Error on line 101 in
C:\Users\dpage\Documents\pgadmin4\pkg\win32\installer.iss: Column 3:
Semicolon (';') expected.
Compile aborted.
- A number of tabs have crept back into Make.bat after I replaced them all
>>> with ' ' last time.
>>>
>>
I've fixed a few more tabs, and tidied up the README and Make.bat some
more. Please find attached. I've still yet to get a working installer out.
Thanks.
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
diff --git a/.gitignore b/.gitignore
index 0386e03..3a3134b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,4 +26,8 @@ pgadmin4.log
/build
/mac-build
/src-build
+/win-build
/dist
+runtime/Makefile.Debug
+runtime/Makefile.Release
+runtime/release/
diff --git a/Make.bat b/Make.bat
new file mode 100644
index 0000000..075705e
--- /dev/null
+++ b/Make.bat
@@ -0,0 +1,429 @@
+@ECHO off
+SETLOCAL
+REM
+REM ****************************************************************
+SET WD=%CD%
+SET "PGBUILDPATH=%WD%\win-build"
+SET CMDOPTION=""
+IF "%1" == "clean" SET CMDOPTION="VALID"
+IF "%1" == "x86" SET CMDOPTION="VALID"
+IF "%1" == "amd64" SET CMDOPTION="VALID"
+
+IF NOT %CMDOPTION%=="VALID" ( GOTO USAGE )
+SET ARCHITECTURE=%1
+
+IF "%ARCHITECTURE%"=="clean" (
+ GOTO CLEAN_RELEASE
+ goto:exit
+)
+
+REM Check os architecture x86 or amd64
+SET RegQry=HKLM\Hardware\Description\System\CentralProcessor\0
+REG.exe Query %RegQry% > checkOS.txt
+Find /i "x86" < CheckOS.txt > StringCheck.txt
+SET OSTYPE=""
+IF %ERRORLEVEL% == 0 (
+ SET OSTYPE=x86
+) else (
+ SET OSTYPE=amd64
+)
+DEL CheckOS.txt StringCheck.txt
+SET OSVALUE=""
+IF "%OSTYPE%"=="x86" (
+ IF "%ARCHITECTURE%"=="amd64" (
+ ECHO ARCHITECTURE - %ARCHITECTURE% cannot be run on 32 bit machine
+ goto:exit
+ )
+ OSVALUE=%OSTYPE%
+)
+
+REM Check IF its is windows 32 bit machine and selected architecture is x86
+IF %OSVALUE%=="x86" (
+ IF "%PYTHON_HOME%" == "" SET "PYTHON_HOME=C:\Python27"
+ IF "%PYTHON_DLL%" == "" SET
"PYTHON_DLL=C:\Windows\System32\python27.dll"
+ IF "%QTDIR%" == "" SET "QTDIR=C:\Qt\5.5\msvc2013"
+ IF "%PGDIR%" == "" SET "PGDIR=C:\Program Files\PostgreSQL\9.5"
+ IF "%INNOTOOL%" == "" SET "INNOTOOL=C:\Program Files\Inno Setup 5"
+ IF "%VCDIR%" == "" SET "VCDIR=C:\Program Files\Microsoft Visual
Studio 12.0\VC"
+ goto SKIPARCVALIDATION
+)
+
+REM Check IF its is windows 32 bit machine and selected architecture is x86 or
amd64
+IF "%ARCHITECTURE%"=="x86" (
+ IF "%PYTHON_HOME%" == "" SET "PYTHON_HOME=C:\Python27"
+ IF "%PYTHON_DLL%" == "" SET
"PYTHON_DLL=C:\Windows\SysWOW64\python27.dll"
+ IF "%QTDIR%" == "" SET "QTDIR=C:\Qt\5.5\msvc2013"
+ IF "%PGDIR%" == "" SET "PGDIR=C:\Program Files
(x86)\PostgreSQL\9.5"
+ IF "%INNOTOOL%" == "" SET "INNOTOOL=C:\Program Files (x86)\Inno Setup
5"
+ IF "%VCDIR%" == "" SET "VCDIR=C:\Program Files (x86)\Microsoft
Visual Studio 12.0\VC"
+)
+
+IF "%ARCHITECTURE%"=="amd64" (
+ IF "%PYTHON_HOME%" == "" SET "PYTHON_HOME=C:\Python27-x64"
+ IF "%PYTHON_DLL%" == "" SET
"PYTHON_DLL=C:\Windows\System32\python27.dll"
+ IF "%QTDIR%" == "" SET "QTDIR=C:\Qt\5.5\msvc2013"
+ IF "%PGDIR%" == "" SET "PGDIR=C:\Program Files\PostgreSQL\9.5"
+ IF "%INNOTOOL%" == "" SET "INNOTOOL=C:\Program Files\Inno Setup 5"
+ IF "%VCDIR%" == "" SET "VCDIR=C:\Program Files\Microsoft Visual
Studio 12.0\VC"
+)
+
+:SKIPARCVALIDATION
+REM SET the variables IF not availalbe in windows enviroment
+SET VCVAR=%VCDIR%\vcvarsall.bat
+SET VCNMAKE=%VCDIR%\bin\nmake.exe
+SET QMAKE=%QTDIR%\bin\qmake.exe
+SET VIRTUALENV=ve_python
+SET TARGETINSTALLER=%WD%\dist
+
+FOR /F "tokens=3" %%a IN ('findstr /C:"APP_RELEASE =" %WD%\web\config.py')
DO SET APP_RELEASE=%%a
+FOR /F "tokens=3" %%a IN ('findstr /C:"APP_REVISION =" %WD%\web\config.py')
DO SET APP_REVISION_VERSION=%%a
+FOR /F "tokens=3" %%a IN ('findstr /C:"APP_SUFFIX =" %WD%\web\config.py')
DO SET APP_SUFFIX_VERSION=%%a
+REM remove single quote from the string
+SET APP_SUFFIX_VERSION=%APP_SUFFIX_VERSION:'=%
+SET APP_NAME=""
+FOR /F "tokens=2* DELims='" %%a IN ('findstr /C:"APP_NAME =" web\config.py')
DO SET APP_NAME=%%a
+SET
INSTALLERNAME=%APP_NAME%-v%APP_RELEASE%.%APP_REVISION_VERSION%-%APP_SUFFIX_VERSION%-%ARCHITECTURE%.exe
+
+SET PGADMIN4_VERSION=v%APP_RELEASE%
+SET PGADMIN4_APP_VERSION=%APP_RELEASE%.%APP_REVISION_VERSION%
+
+ECHO ****************************************************************
+ECHO S U M M A R Y
+ECHO ****************************************************************
+ECHO Target mode = %ARCHITECTURE%
+ECHO INNOTOOL = %INNOTOOL%
+ECHO VCDIR = %VCDIR%
+ECHO NMAKE = %VCNMAKE%
+ECHO QTDIR = %QTDIR%
+ECHO QMAKE = %QMAKE%
+ECHO PYTHON_HOME = %PYTHON_HOME%
+ECHO PYTHON_DLL = %PYTHON_DLL%
+ECHO PGDIR = %PGDIR%
+ECHO ****************************************************************
+
+REM Check IF path SET in enviroments really exist or not ?
+IF NOT EXIST "%INNOTOOL%" GOTO err_handle_inno
+IF NOT EXIST "%VCDIR%" GOTO err_handle_visualstudio
+IF NOT EXIST "%VCVAR%" GOTO err_handle_visualstudio
+IF NOT EXIST "%VCNMAKE%" GOTO err_handle_visualstudio
+IF NOT EXIST "%QTDIR%" GOTO err_handle_qt
+IF NOT EXIST "%QMAKE%" GOTO err_handle_qt
+IF NOT EXIST "%PYTHON_HOME%" GOTO err_handle_python
+IF NOT EXIST "%PYTHON_DLL%" GOTO err_handle_python
+IF NOT EXIST "%PGDIR%" GOTO err_handle_pg
+
+REM Check for QT and VC dependences
+FOR /L %%G IN (15,1,19) DO "%VCDIR%\bin\cl.exe" /? 2>&1 | findstr /C:"Version
%%G" > nul && SET MSVC_MAJOR_VERSION=%%G && GOTO QT_MSVC
+
+:QT_MSVC
+IF %MSVC_MAJOR_VERSION%==19 SET QT_MSVC_PATH=msvc2015
+IF %MSVC_MAJOR_VERSION%==18 SET QT_MSVC_PATH=msvc2013
+IF %MSVC_MAJOR_VERSION%==17 SET QT_MSVC_PATH=msvc2012
+IF %MSVC_MAJOR_VERSION%==16 SET QT_MSVC_PATH=msvc2010
+IF %MSVC_MAJOR_VERSION%==15 SET QT_MSVC_PATH=msvc2008
+
+IF NOT EXIST "%QTDIR%\..\%QT_MSVC_PATH%" GOTO err_handle_qt_mismatch
+IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+REM get Python version ex. 2.7.1 will get as 27
+for /f "tokens=1 DELims=." %%G IN ('%PYTHON_HOME%/python.exe -c "import sys;
print sys.version.split(' ')[0]"') DO SET PYTHON_MAJOR=%%G
+for /f "tokens=2 DELims=." %%G IN ('%PYTHON_HOME%/python.exe -c "import sys;
print sys.version.split(' ')[0]"') DO SET PYTHON_MINOR=%%G
+SET "PYTHON_VERSION=%PYTHON_MAJOR%%PYTHON_MINOR%"
+
+IF NOT EXIST "%PYTHON_HOME%\Scripts\virtualenv.exe" GOTO
err_handle_pythonvirtualenv
+
+SET REQUIRMENTTXT=""
+IF "%PYTHON_MAJOR%"=="2" SET REQUIRMENTTXT=requirements_py2.txt
+IF "%PYTHON_MAJOR%"=="3" SET REQUIRMENTTXT=requirements_py3.txt
+IF %REQUIRMENTTXT% == "" GOTO err_handle_pythonversion
+SET PATH=%PGDIR%;%PGDIR%\bin;%PATH%
+
+REM Main Functions
+call :CLEAN_RELEASE
+
+call :CREATE_VIRTUAL_ENV
+IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+call :CREATE_RUNTIME_ENV
+IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+call :CREATE_PYTHON_ENV
+IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+call :CLEANUP_ENV
+IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+call :CREATE_INSTALLER
+IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+CD %WD%
+goto:EXIT
+
+:CLEAN_RELEASE
+ ECHO Calling Clean Release...
+ IF EXIST "%PGBUILDPATH%" rmdir /s /q "%PGBUILDPATH%" > nul
+ for /R "%WD%" %%f in (*.pyc) do DEL /q "%%f" > nul
+ IF EXIST "%WD%\pkg\win32\Output" rmdir /s /q "%WD%\pkg\win32\Output" > nul
+ DEL /q "%WD%\pkg\win32\installer.iss" > nul
+ CD %WD%
+GOTO:EOF
+
+:CREATE_VIRTUAL_ENV
+ ECHO Creating Virtual Enviroment...
+ IF NOT EXIST "%PGBUILDPATH%" MKDIR "%PGBUILDPATH%"
+
+ CD "%PGBUILDPATH%"
+ "%PYTHON_HOME%\Scripts\virtualenv.exe" "%VIRTUALENV%"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+ ECHO Activating Virtual Enviroment -
%PGBUILDPATH%\%VIRTUALENV%\Scripts\activate...
+ CALL "%PGBUILDPATH%\%VIRTUALENV%\Scripts\activate"
+ SET PATH=%PGDIR%\bin;%PATH%
+
+ ECHO Installing dependencies...
+ pip install -r "%WD%\%REQUIRMENTTXT%"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ REM This is required because windows only work with 2.6.1 version
+ pip install psycopg2 -U
+ ECHO Virtual Enviroment created successfully.
+
+ ECHO Deactivating Virtual Enviroment -
%PGBUILDPATH%\%VIRTUALENV%\Scripts\deactivate...
+ CALL "%PGBUILDPATH%\%VIRTUALENV%\Scripts\deactivate"
+
+ CD %WD%
+GOTO:EOF
+
+:CREATE_RUNTIME_ENV
+ ECHO Compiling source code...
+ MKDIR "%PGBUILDPATH%\runtime" > nul
+
+ REM --- Processing WEB ---
+ CD "%WD%"
+ CD web
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ XCOPY /S /I /E /H /Y "%WD%\web" "%PGBUILDPATH%\web" > nul
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+ REM Clean up .pyc, pgadmin4.db, config_local.py
+ for /R "%PGBUILDPATH%\web" %%f in (*.pyc) do DEL /q "%%f"
+ DEL /s "%PGBUILDPATH%\web\pgadmin4.db" > nul
+ DEL /s "%PGBUILDPATH%\web\config_local.py" > nul
+ ECHO SERVER_MODE = False > "%PGBUILDPATH%\web\config_local.py"
+ ECHO HELP_PATH = '../../../docs/en_US/html/' >>
"%PGBUILDPATH%\web\config_local.py"
+ ECHO MINIFY_HTML = False >> "%PGBUILDPATH%\web\config_local.py"
+ REM Compile doc folder
+ MKDIR "%PGBUILDPATH%\docs\en_US\html"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ REM compile docs - web
+ "%PGBUILDPATH%\%VIRTUALENV%\Scripts\sphinx-build.exe" "%WD%\docs\en_US"
"%PGBUILDPATH%\docs\en_US\html"
+
+ REM --- Processing RUNTIME ---
+ CD "%WD%"
+ CD runtime
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+ call "%VCVAR%" %ARCHITECTURE%
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ ECHO Calling - call "%VCVAR%" %ARCHITECTURE%
+
+ call "%QMAKE%"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+ call "%VCNMAKE%" clean
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+ call "%VCNMAKE%"
+ IF ERRORLEVEL 1 GOTO ERR_HANDLER
+ REM Copy binary to Release Folder
+ copy "%WD%\runtime\release\pgAdmin4.exe" "%PGBUILDPATH%\runtime"
+ IF ERRORLEVEL 1 GOTO ERR_HANDLER
+
+ REM Copy QTP dependences
+ copy "%QTDIR%\bin\icudt54.dll" "%PGBUILDPATH%\runtime"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ copy "%QTDIR%\bin\icuin54.dll" "%PGBUILDPATH%\runtime"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ copy "%QTDIR%\bin\icuuc54.dll" "%PGBUILDPATH%\runtime"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ copy "%QTDIR%\bin\Qt5Core.dll" "%PGBUILDPATH%\runtime"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ copy "%QTDIR%\bin\Qt5Sql.dll" "%PGBUILDPATH%\runtime"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ copy "%QTDIR%\bin\Qt5Gui.dll" "%PGBUILDPATH%\runtime"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ copy "%QTDIR%\bin\Qt5Qml.dll" "%PGBUILDPATH%\runtime"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ copy "%QTDIR%\bin\Qt5OpenGL.dll" "%PGBUILDPATH%\runtime"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ copy "%QTDIR%\bin\Qt5Quick.dll" "%PGBUILDPATH%\runtime"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ copy "%QTDIR%\bin\Qt5Sensors.dll" "%PGBUILDPATH%\runtime"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ copy "%QTDIR%\bin\Qt5Widgets.dll" "%PGBUILDPATH%\runtime"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ copy "%QTDIR%\bin\Qt5WebKit.dll" "%PGBUILDPATH%\runtime"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ copy "%QTDIR%\bin\Qt5Network.dll" "%PGBUILDPATH%\runtime"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ copy "%QTDIR%\bin\Qt5Multimedia.dll" "%PGBUILDPATH%\runtime"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ copy "%QTDIR%\bin\Qt5WebChannel.dll" "%PGBUILDPATH%\runtime"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ copy "%QTDIR%\bin\Qt5Positioning.dll" "%PGBUILDPATH%\runtime"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ copy "%QTDIR%\bin\Qt5PrintSupport.dll" "%PGBUILDPATH%\runtime"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ copy "%QTDIR%\bin\Qt5WebKitWidgets.dll" "%PGBUILDPATH%\runtime"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ copy "%QTDIR%\bin\Qt5MultimediaWidgets.dll" "%PGBUILDPATH%\runtime"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ MKDIR "%PGBUILDPATH%\runtime\platforms"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+ copy "%QTDIR%\plugins\platforms\qwindows.dll"
"%PGBUILDPATH%\runtime\platforms" > nul
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ ECHO [Paths] > "%PGBUILDPATH%\runtime\qt.conf"
+ ECHO Plugins=plugins >> "%PGBUILDPATH%\runtime\qt.conf"
+ ECHO Runtime source code built successfully.
+
+ CD %WD%
+GOTO:EOF
+
+:CREATE_PYTHON_ENV
+ copy %PYTHON_DLL% "%PGBUILDPATH%\runtime" > nul
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ XCOPY /S /I /E /H /Y "%PYTHON_HOME%\DLLs"
"%PGBUILDPATH%\%VIRTUALENV%\DLLs" > nul
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ XCOPY /S /I /E /H /Y "%PYTHON_HOME%\Lib" "%PGBUILDPATH%\%VIRTUALENV%\Lib"
> nul
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+ CD %WD%
+GOTO:EOF
+
+:CREATE_INSTALLER
+ ECHO Preparing for creation of windows installer...
+ IF NOT EXIST "%TARGETINSTALLER%" MKDIR "%TARGETINSTALLER%"
+
+ copy "%WD%\pkg\win32\Resources\pgAdmin4.ico" "%PGBUILDPATH%"\
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ REM search and replace string from config.py and copy to config_local.py
+ CD "%WD%"
+ CD pkg
+ CD win32
+
+ @ECHO off
+ SETlocal disableDelayedExpansion
+ SET InputFile=installer.iss.in
+ SET OutputFile=installer.iss
+ SET "_strFind=#define MyAppVersion "0.0""
+ SET "_strInsert=#define MyAppVersion "%PGADMIN4_VERSION%""
+ SET "_strFind1=#define MyAppFullVersion "0.0""
+ SET "_strInsert1=#define MyAppFullVersion "%PGADMIN4_APP_VERSION%""
+ SET "_strFind2=#define MyAppName "0.0""
+ SET "_strInsert2=#define MyAppName "%APP_NAME%""
+ SET "_strFind3=#define MyAppArchitecturesMode"
+ SET "_strInsert3=#define MyAppArchitecturesMode"
+ IF "%ARCHITECTURE%"=="amd64" SET "_strInsert3=#define
MyAppArchitecturesMode="x64""
+
+ :Replace
+ >"%OutputFile%" (
+ for /f "usebackq DELims=" %%A in ("%InputFile%") do (
+ IF "%%A" equ "%_strFind%" (ECHO %_strInsert%) else (
+ IF "%%A" equ "%_strFind1%" (ECHO %_strInsert1%) else (
+ IF "%%A" equ "%_strFind2%" (ECHO %_strInsert2%) else (
+ IF "%%A" equ "%_strFind3%" (ECHO %_strInsert3%) else (ECHO %%A))))
+ )
+ )
+ REM IF "%ARCHITECTURE%" equ "amd64" (ECHO %_strInsert3%
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+ CALL "%INNOTOOL%\ISCC.exe" /q "%WD%\pkg\win32\installer.iss"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+ ECHO move "%WD%\pkg\win32\Output\SETup.exe"
"%TARGETINSTALLER%\%INSTALLERNAME%"
+ MOVE "%WD%\pkg\win32\Output\SETup.exe" "%TARGETINSTALLER%\%INSTALLERNAME%"
+ IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
+
+ ECHO "Location - %TARGETINSTALLER%\%INSTALLERNAME%"
+ ECHO Installer generated successfully.
+ GOTO CLEAN_RELEASE
+ CD %WD%
+GOTO:EOF
+
+:CLEANUP_ENV
+ rd "%PGBUILDPATH%\%VIRTUALENV%\Include" /S /Q
+ rd "%PGBUILDPATH%\%VIRTUALENV%\Scripts" /S /Q
+ DEL /s "%PGBUILDPATH%\%VIRTUALENV%\pip-selfcheck.json"
+
+ ECHO Cleaned up private environment successfully.
+ CD %WD%
+GOTO:EOF
+
+:err_handle_inno
+ ECHO %INNOTOOL% does not exist
+ ECHO Please Install Innotool and SET INNOTOOL enviroment Variable.
+ ECHO SET "INNOTOOL=<PATH>"
+goto EXIT
+
+:err_handle_visualstudio
+ ECHO %VCDIR% does not exist, or
+ ECHO %VCVAR% does not exist, or
+ ECHO %VCNMAKE% does not exist.
+ ECHO Please Install Microsoft Visual studio and SET the VCDIR enviroment
Variable.
+ ECHO SET "VCDIR%=<PATH>"
+ ECHO SET "VCVAR%=<PATH>"
+ ECHO SET "VCNMAKE%=<PATH>"
+goto EXIT
+
+:err_handle_python
+ ECHO %PYTHON_HOME% does not exist, or
+ ECHO PYTHON_VERSION is not SET, or
+ ECHO %PYTHON_DLL% does not exist.
+ ECHO Please install Python and SET the PYTHON_HOME enviroment Variable.
+ ECHO SET "PYTHON_VERSION=<VERSION NUMBER>"
+ ECHO SET "PYTHON_HOME=<PATH>"
+ ECHO SET "PYTHON_DLL=<PATH>"
+goto EXIT
+
+:err_handle_qt
+ ECHO %QTDIR% does not exist.
+ ECHO Please Install QT SDK and SET the QTDIR enviroment variable.
+ ECHO SET "QTDIR=<PATH>"
+goto EXIT
+
+:err_handle_qt_mismatch
+ ECHO %QTDIR%\..\%QT_MSVC_PATH%" does not match with your current Visual
Studio, version %QT_MSVC_PATH%
+ ECHO Your current QT installation willraise a linking error with an MSVC
version mismatch.
+ ECHO Please use a valid QT installation with a folder %QT_MSVC_PATH%. You
can use the Qt Maintenance
+ ECHO Tool to add or remove compiler kits.
+goto EXIT
+
+:err_handle_pg
+ ECHO %PGDIR% does not exist.
+ ECHO Please Install Postgres and SET enviroment Variable
+ ECHO SET "PGDIR=<PATH>"
+goto EXIT
+
+:err_handle_pythonversion
+ ECHO Python version supported Above 2.6, 2.xx and 3.xx only
+goto EXIT
+
+:err_handle_pythonvirtualenv
+ ECHO Python virtualenv is missing @ location -
%PYTHON_HOME%\Scripts\virtualenv.exe
+goto EXIT
+
+:ERR_HANDLER
+ ECHO.
+ ECHO Aborting build!
+ CD %WD%
+ exit /B 1
+GOTO:EOF
+
+:USAGE
+ ECHO Invalid command line options....
+ ECHO Usage: "Make.bat <x86 | amd64 | clean>"
+ ECHO.
+ exit /B 1
+GOTO EXIT
+
+:EXIT
+ endlocal
+ exit /B 0
\ No newline at end of file
diff --git a/pkg/win32/README.txt b/pkg/win32/README.txt
new file mode 100644
index 0000000..fced29a
--- /dev/null
+++ b/pkg/win32/README.txt
@@ -0,0 +1,82 @@
+pgAdmin 4
+=========
+
+Prerequisites
+-------------
+
+To generate a pgAdmin 4 installer for Windows bit, the following packages
+must be installed:
+
+1. Python installation
+ - Python 2.6 or above from https://www.python.org/
+
+2. QT installation
+ - Qt 4.6 through 5.5 from http://www.qt.io/
+
+3. PostgreSQL installation
+ - PostgreSQL 9.1 or above from http://www.postgresql.org/
+
+4. Inno Setup Installer
+ - 5.0 and above from http://www.jrsoftware.org/isdl.php
+
+5. Microsoft visual studio (2008 and above)
+
+The following environment variables may be defined to override defaults in the
+build script (Make.bat):
+
+INNOTOOL, VCDIR, PYTHON_HOME, PYTHON_DLL, QTDIR, PGDIR
+
+The default settings are equivalent to (for x86 on 32bit Windows):
+
+SET "PYTHON_HOME=C:\Python27"
+SET "PYTHON_DLL=C:\Windows\System32\python27.dll"
+SET "QTDIR=C:\Qt\5.5\msvc2013"
+SET "PGDIR=C:\Program Files\PostgreSQL\9.5"
+SET "INNOTOOL=C:\Program Files\Inno Setup 5"
+SET "VCDIR=C:\Program Files\Microsoft Visual Studio 12.0\VC"
+
+Or for x86 on 64bit Windows:
+
+SET "PYTHON_HOME=C:\Python27"
+SET "PYTHON_DLL=C:\Windows\SysWOW64\python27.dll"
+SET "QTDIR=C:\Qt\5.5\msvc2013"
+SET "PGDIR=C:\Program Files (x86)\PostgreSQL\9.5"
+SET "INNOTOOL=C:\Program Files (x86)\Inno Setup 5”
+SET "VCDIR=C:\Program Files\Microsoft Visual Studio 12.0\VC"
+
+Or for x86_64:
+
+SET "PYTHON_HOME=C:\Python27-x64"
+SET "PYTHON_DLL=C:\Windows\System32\python27.dll"
+SET "QTDIR=C:\Qt\5.5\msvc2013_64"
+SET "PGDIR=C:\Program Files\PostgreSQL\9.5"
+SET "INNOTOOL=C:\Program Files\Inno Setup 5”
+SET "VCDIR=C:\Program Files\Microsoft Visual Studio 12.0\VC"
+
+How to build
+------------
+Now, run the top level batch script to build and generate the installer:
+
+> cd <PGADMIN4_SRC>
+> Make.bat x86|amd64|clean
+
+To build for Win32:
+
+> Make.bat x86
+
+To build for Win64/x64:
+
+> Make.bat amd64
+
+The script will create a python virtual environment and install all the
required python modules
+using pip, build the runtime code and finally create the installer in ./dist
directory
+
+For example:
+
+on x86: pgAdmin 4-v1.0-beta1-x86.exe
+on x86_64: pgAdmin 4-v1.0-beta1-x64.exe
+
+To cleanup all output, run the clean target:
+
+> Make.bat clean
+
diff --git a/pkg/win32/Resources/SplashScreen.bmp
b/pkg/win32/Resources/SplashScreen.bmp
new file mode 100644
index
0000000000000000000000000000000000000000..c2407307ef3ba7d4093c7a0762cd94cbc84316cc
GIT binary patch
literal 196662
zcmeFa_kUE?7QlPo=lu`w^ZtSN`Mh7>4Wgo=*t-|YwcP7f@4c8_NCKgELXzo|-h1fX
z0tg}?AWcz_B3%#*sPwA2?|Wt?J3D92nM@`#nL#t3A?$PJl(pAhYwgwc+7CZB{4f9K
zUyRRi{{6p3<NuI<|HohcZ{vv1|M{2y=l}Xk;GZ1-<uCsm`rMfq=<MwL?YG}<-MV$-
z#*J&&u3fou<<g}~7cXA?wfjSxGnX%4zIyfQ_3PJf-n_}h-17VHzjN=M+36vu|LhnL
zvWJ+V>I)YxoI7{!?Af!YPMtb-?AYPMhYub+c;LW+ufP79zqC1X^ytwOCr+F`efs<F
zzdwKeJh#9pu#E7+5F`BA>FLhtzfeA;i(vop#~-2jLx&FS-Me?^&YfGgZr!wL)5jlw
z{88@@XFmDllPz1eY~Q|p*REY(e)%O#as2r4@4ovE#(@`LB3SA6?b}0)aOV)hpAk}&
z7APNzMcN-Za^#CIzSy>H8|3}rhaaw9y?Vup70Z?_Te@`VlE7zi;6sx$oL|0t`O1|m
z-+S*pE?&QW{pQV^ckI{!<G?;APoDhYhab?Ggb~n=h8W?`NL~rtX9yBq1vMT*h4Odr
z-i@eVvt|t>4S7T93l}b2pnc|RAMNx4E?cx{5ljI)z%uZ{h7B7&{q)m4d-k9#!3aP7
z^b<1+mckGhBrrMrxj;kg-@I|-mtTHC+d*PO`5%1n0R+5g;llazJ6f9?>nc2z-g)KD
zS^nawWsVs&r6mp3rOl1Ct*tHXZEYRBKf)O>h42FG!^H9a`|mR;pg}RGz+b3FOb2km
zkW%#LBDKWpEyREQ+BL-TH{X2o*=L`vU9)E4{Pt>pammCn-n_s0G9L82`&aL~f0e&9
z<Qq6l@}}SC%YCLO?;p--*_FPM#`?OpwpO^Iy}ey{Lgxi01!fawgpC_FVkTfC2p6Dn
z4b26KM;Ctzhz#PtehoVp<>Zr%8(SKxTod0mXg)c~MDtekuk(VzAlz7-^O9#~PKDpu
z)KCW(1TzAv6vhJ6fp7s#hsK58h4wXM6#OY@E@3*Uh=2dSeG6J@-Q)l6OBt>te1GX*
z-DogE%5YcaV<qGM;djh#ZD}$w0;&-<0{RtN7G^RU7rs-pFD3#&N*MGE0rE%20K)dh
zjq9jA+dkb~IWyIpdM|Vv^{+SOE=R@_j;R@S)n&SsfL;U_Fc)ANtXsDZ$0-v5zz|{^
zVu3$0*(FBbApYC8ZvFi8&udpNDINO+WG~WNHG&T#`$;Ad?scb(aOC~H((g3Q1=z^g
z1$a#f9}rL@d`935b09JBGz7&T69d2h{@aBMzb<L=`%>=K30rRq=?Wv5+NQ%0cj;Fe
zHbu&CN5Q}9YpYCLfI75l)hdE$#Lmu~IWxope@wDVj9zti{(kxLrKQb&f2yJF>(r~a
zqw<sWL(=be&B$qPY*3ye)FD^^U5H=-<^X;nB4tC0P-4)_9|{UX?Z19)_52!tT1*sv
zI4GR2_uV8%)-%;*9%U530_Z}*0$+Xg6;2_d14AC6KNRsLKxcmY?e>OMZDkoFkj(Pc
zWxn3-5#7m2m02SjCOz9c^~JUsuQX2`U03i_MfONv^0441^xPH3^Ihqqa1be7NLYXv
z0g4dO0rKd`8X97O1fZHf4hSa>>?+TEK<GA@dUg6QO}}@3$(U`cYfm5EbK$4cS1+Ew
ze&xcAtCy}_{`JbQKV3X`=KJIOzuvlX^J32u*SnQjJ<rr1Vq%BjpWLY<ymJdw5Lpx<
z5+{fhlWR&Q5&_~r4)%w75?2h|yneNL`YXXisMtY%LN#jlPdRpI->sY1{})CM|8KW%
zUA^@4@vpYP3mvmxSMx$>{_0_k<hwjGvUFPjzbIj1V#L_OLxw<HN#>99a?IY13tc@_
zXQiK@mRC-CZP#a?Vj$xqimdZjE}Yx>L4C{gS4vawF}==?^*HaFH%Tc%ga(KaV+-%!
zzaK4#&~Rjs4Ba(^0fm862X>&+Kxww$<fMw(nJjA|GYvCA-56PeN#WGj+t<`jsmL}m
zi2DAfj;QoG#2gkw04<2P7%8K;Lx+4pk&VL8U4ntzH*YK`dM8*R>5<RLN&e|6yLRm)
z7wG2A8&R`5J3GHWzHen&PHEcRJ@2xbdSDP|=HvCXmCOQg0W3h`D4}6|K`f%d5FQ%J
zAq+%}fkV4L@&~jLOCp5!+>_q<WaGyy+PZS(a@2+GZ?|tA*|Q#vh!+VD%3uAEHs6xG
z*IHXzgavSi5)@+r&d?MP@wgA&2nKH5xT=J|CH=dzpI)_MnMm4Ow_+t}Fa7-ea$klw
zkXdR;{|0Qy!+gcl^(la*mRJF#Y79AohKM;b41BYDy)Wf15wI42Q|_*>^s+<?;ZGiN
z)P=te^Udp5)-}(91uVemwh@SnH8(Yi3PeyCD}Z&BID!a=>5m#}4`Co244``~^QMWs
zwUoN<si~}UWLXxP|E<`o*`2@tzNTTS%mQ$M0!+1yM&TqegvAlWN&%LPQDr5jycrHM
zhpxHfFz~~P{iSJ!A5wi4rE$iS_P~OUHVBOLW0vI(PU0m&wD!6GFy3whl`He{mgXjz
z0*D2yUAvaNIIQ3y73hv5zc>Tj+4)IFiB4uFs&h}z!p6kS`0cmfl6xODw@+W)K6mCw
zRqiMquwLzCrhv&<0pbV+LKbF<3N&aC_SJ)--|qkn+`f68bRC_vdeMLS11!#B5!UCQ
zf6m&ILG>|qc7C?HS_e#T1Eec=v{=ES0+A6!iLF?hCwIVz4uRMo44nV&C?Q=)%ko<?
z;ooQ%I9OPC!t%qxQGOKomw)}Ke!?@BfEm1yJe;x<q5`o%hCl#bAb=cFffNFV8hv8m
zi}mfj1b#r@HmHkl%H1^;K4MH_UB*SU?q1j8Mb*)v64;EtNzR$Mq5|OsVu2WwR3J7N
zEB9=l$Q-)hj>EvpvMf9LcV$1_*4jdv4GRxheomU%;H%b`fBB()!qb-Y50g5_zMxbf
zlA;NOQD1auQNSHXgmDD8CjT)z`bYUewT7-Reub{$0B2|ChxL=~=--oaZ(WtKYF<nL
zs&WOw(?hvHaTusO@s-!FUL+OSPQmt<%pk#l=n`qhtU4c5<5$DxH+$@3bID1rITMu$
zK>0Wp#jqk^knI!=*rDc~gaJJNl8WD@@OP`$9Qso4sVeiLSL6I4@`dv!UOC1rtEr#(
zjNK&Vn)DxK0uZDlLxXhaArtscqQdyWdT7Uo!C}@eO3QetvA!DmXPL>qef#2@UGrh>
zL_7K~%6vxXpQ#EHm?FBY3y#-R6~B=jdUGTg*s-d{PPH!1c%r?n73U{@MVz03g#QRv
zyF>z6?|b%syihWN1X>+tclrbHsh9wmDn!934MCZ>-VYc$8p41D2G-b{mPI))5n9Es
zj#5p1elj28m|FAQkuO*s5UivbjF2+C)Kw_-PrXEv^vH#di>t~4zeA@I8v{$+DR#!M
zd-51rV8Y%Oq?X0S`LB>iI#5;K!?vK#$`unBSFJ>Whn9mW)D1O4V4!uzE4nVBv<pMh
z&dyVL1(aEcJ4G!j`M0(FXGKiGn?nE0R;&n)`)m~g;X^+q4hBdwt{wNd9sRotrwIL1
zemM~|icjX-Cg~MsKF4+f%vO>JDp?RiF3`lGw8VsjDm_&>4_VT`H~B7~b1w9cMopO=
zGC$)URK*0glmG6_$6A_<N{Px_OCof<ytRor)<aMQW8jzXPgHc*q%x6~H|<{PFhl<o
z8ziY95%P*p9r(-yWY1yx{k4H8u(&`aS~uhZ3Lf#HGdc#&9{bX++KD&){`#77=s$5h
ziWkqHwaZiWzB{bUTOuwXJzHb&vz2u84z&{;1INGGEajb1fqG<VAO!46d$6Uk4*F+Z
z3A_4|{1A6>inXGbBsIb8FPb7IFbZ27v-J{u#D~DsF+lKF)gd&|e^Kfv>TRmzp9G1h
zw$A*!SS!Ici*stKM1kX*t*xVXsGZ;#*tdD9A}165&r5v_ajG&3jAic$P+)L%WxfKK
zh7NP#*jI)AC15v{1()Eomk8kPS=#~$S$>PNp23}nJB3XcSyYlB?vziLm03c|NmtIZ
zELBi0(6}coCBpa)!4Mh)+g4O4aS92kHVx<47lr;w{$#V21j(rUdfO@;NF8Qh=BUO7
zV=d&63pDhg5B;hzuyKBgA}5`eIO!Vqn$SPVpVSqJZ}O)C7>AVtm_{#{Q-;@8S16q=
zz6%x<z(b8h#=zR9>580s(GsOTC%&cVpN#s!U-@o{w<{OV`?cMNb(m>a`ih``@mWbN
zl(_q>EPF9@GC?q~x+2$>{-+qpZ=@5*ijoAOe@Y`ZOfVM0$k#;wzCvRmn8fTP3v@86
z6(z`+4uKIq29~(&lRu}WEBeQlOc45KzktQgF_69Gw|H`j&_7wAECiOEy`d0T`1J5+
zyK+I%+m^DFlg{bcLjTkiB%Lh2i(h)irL%KQ{Zvbs;fTWA*M<Hi3-s{e!$ajjdr&vj
z3c^6g9HYRde05!dGbPi<3jHU-;x8TWtt-kcVK!!j+!u)10XFn61-oF|IIh{z!5(TS
zAO_lIzG_KJoGhN6r_+DpR8-ji>2gb$p?_c2BdviD04~s>h42YTZwUnwTivnv#SoiT
z-;$Z*h5iww2M!!a9QyzE;0{ZGIY~LhmgZ)_R$;q1)~raVu^s{@7z4lmcDs4{OO~>f
zG|Q4%6O<wW{l|CluMRvp+p<j<kQ+4L{grk@O*vpo+LEO04HbgWu{YFK7`T1wM$^>M
zCi>|<q^Q&+MgQc|Bo6(vt#<ABCj`!5`mb=$5fhj!XsLxb6ar8qKGe`Lz=mH<lV9j2
z_};QKImtb5s?dKT6o1gczH#kx+pO2@=-)ZRSO`xDKxIJ>g#dKy4Yd^psHo5|>3K`~
z_a+bX7SGV>KXDw1?6|$m)3sGou>7A_@E;WdP=z3dLI7&ehZ+h4*RNctpZF{!WbsWN
z=6B43{>i1MoI;{G($_W3uz)$x5%;)Pp?~4rp+XR9tcM!G7zh;A?5ZoyETGF$7QdId
z<|_JU+polt|8!)>d$o4@k9X|TLjO_-BJO4Dg3&&7CP6U3)+%)cPg?6gDZ|S>^Mw8>
zeg*x<xA>I_V+XgtZ%6;`wEI;p+=R+pHFaU=Faivq$MPYdNo5;8lsM+YvMl|>8Ghm#
zK61U?i&#!xJFd%-VwV3YcUO9g75&G(_?xK<XTI6vOBrT@S>`YIyT*=4Kt2=#Fd^*@
zJrsh6s_|n}frlb&s3Jt8NXTbR7V#ZcCbBqJJ{+=8g<Lf*;4*4p;{Ag=;0T^$!oV*-
zo@VC@OGTQBn$@L7@e^4~%cgR1FaD+j|MS^nl{pVtLeAFk)nzW|Uxfg`%uonG$KD;$
zhFl?91`hWfzIUjdabyP;Ha9^VAs|IgCd;x|nMk?s-Me?Q+=IWgS*yZNc<i~19gC>j
z1Dn7O5HL@Jj}#;PboOL*?jv^kPffX7=pQdiA{0N=NA1dmb6D<{@}J0^civQS0ZAd0
zp<2*7>SECr5iKf*XdMH23r~Yeh3t{-r%s)Mk|Akmn@xx)MTkO9P6GKYtW0EaE*0<9
zheMQJGB$DAa~WkocI?=}))lY=1q|UJ^1*mAN)uYt_ot6ljU8o4|DM#lYb(47OaHfT
z-E5!zx+VQHDHKo35&EZc7pnjgp>o|o=pixhg-Vgns21oXs2P}t=o@?xvk(|s2Q&;X
z^b2@J`6w{RZO9(dC5Xx1izHz}+XytmI_M-gH~669@?oM^A34KMBtUW*7gN0lHo+4J
zCBQ)xhGh~#N4j?H>hZ(-(IPDA-<xtzeRZi$|MaoH-RW1~`+Kp307U1PE~vI^@))6i
zSp^{5_9YbX{q1Z*T`yD$*`t=AZ$qevRy1VDl@F={5}RsKXe=-Vj9{sI2lt2p;$q}8
z4@A8ocLlOXm_zf7qfk3^4o&hwzwPrQS8@wX0XrZJg%Ma7NIpM6?%cjb6+bk~($srN
zq~QrLQ3C2eVDF=*nP!-~6M<agyH)`JJd<Fe8SlYEf2W)g%107H+elHOLda)y64VT6
z6;$(qT9C9*FKcFD3K#+18^R7Pf8Y@wi?+ivxfgMbN(0$Lz3jl!+{E@KW#z6}j_KKR
z#{H*o+}p+D-*gqc;TiX;Yy2C9<NsYUHIt=(mEL)E)nzTsO>J$h2tf4_PJx(V1W1C-
z>`<Qo`-4?WOVdYKTahXEHq})nGW~B~W$X)Y`E_PLOW*0WtO6LSg&r0DQt}zfC#r%J
zh1!wNC>WxXKw5ktS|lwrh7yjhj>^HLfa1+upxd50NO&`^Ub%vqhLX=M=sEM-TQNVq
zv+|1aUiaoa;R~$zR`a`Qy6<(EoaD<G>C7EnGAX&jTMXae3^y?XJO!LU*xFF-PrXNO
zH_1|W^1aOsHA4TecB1)zz}~(s#wq|EC#qdc<vOhv`cMc=C$<RMBKA@2A!CSH<TLam
zYKiD1N*jS@_;3>817E-(EJVdogT8@og9pYm5pakq4)No+S-a-Lno@_O;B8MPZkZ&z
z@fC_y!ySCs^%FU4S&tTvf2+dhXlreSB>0G66bP$IU2N|zx0~J-p#NGfgHsZd{*QmP
z#h+qq+ZqhNGv)r4rg}z%`40Ru5i?&Sd?Fb7p<9IbF>De0U{d7slEsT#8f$ARyk+ir
z<({Its!}SCDKRTF2L7QR^me8LtXKRnD5AI`F&q>N@bFu=Zem32-nFx#tjLw~42cJ7
zKut8MkG1J1)1mpwl)Fo^U+@-AZf$7>HpK<y-V$GG2>S1m|4ehp|AdPFLYChj-&dA-
zzur^TW=HJWO25!QY9uaVFpQ^Sh?x6}fdKK}LV-tmqsgpWySBc<<C^r2BmEIi+Wp?t
z5yXjnDR+C)MwFzEa^$|`nlZMqz9t}OyR;5QLG%r5Pj->O4~demSm5{Hf8*h6S1&2e
zf5Aw(>^-5I4%PT_-t?2{(DF)8@?DPXXZ?<u3OwlFYeWB#P*Ytsz$5>m{{%E4FZ^`6
zI`0v^r#<bI;m9SyJkzuk!V;V#dH7&$F&)T9Lg&)vJRiA+q3<uX{K2kQ#E%1Q`}S?s
zu4$gE$Gs_cfoHofN{c)7e#gZBG}cwA>41TdiGZ<S`oOoNSm4U#iwi1evdy&J1EYUF
zd6*;j71=Emy~y^}0sB|zAN?l*>7P{qbp=mZ;)hXi%{6MFgLYX3gM&^YfXrfe?NCJV
zFryUl!4=Ghh6K&IjJcl6a7Vy05-}8}_)~F&B7TN``NEdcysnx{AY8<6un^XNLa%Vo
z$ZBb6R>BrqLLJ3e#vBk9U<?*`GQ$zw!S6ENWjfR$vHXc7F>m37a&Iy8FAq0gmU2&H
zZH3T3@*k@w(exjLZA)PBvL*cPnPY|ivC)7Z+X}xlp>sx)DH!)Jsw^k5%kbdwmk(z+
z&(Pp6;xdFD8ZYiUbSGFtB0Ko;?2<|TV8Wjn5<zj`>;1LGx#E5iJoiajYB-QWNZR_E
z3KI*+Eb#T$`&+#Q!Osl;`H@}Ob64^(SMF$A{U_l67y8E;o0#;!+?(Fho!+XWd-8vw
ze~~#L92USw&E(5mMr0gw4DTGKF-oa?XcJH8B%WdV%Vk_o<Pl#73<6)^mxd#7Q>bJT
zcmb^mW$6z_`E&;j@yeCUUw*NtYC7eilI)NS^@je*lbqzre6-A62n&chq!gi+YPTr-
zeLh4nl>RQ$U8chjSL#0jUav!aYBS=$Ws3e8eFR{ljrB*(v+Uq^<i92erwh0s#3?Oq
zYW#8%Ok_GXeK^mD3$S{)7~KipfkEI4;UL(7nSvPvUSMiqUXZLR6r?|lc0@;R-ng-A
z$F|A|FM{5If8D7Ml)C1s;eZ7e&hKz%J<+cxdkx3_1HQ3OQI@<Y?+xd~w|&!6D&}PS
zr>B%n`B(k)*Xt+$tvq{Vzn&T5V*H}yKO{K)Z(nU20-Kldj3Au9AYA{@sXjmIdVCk~
z2uuM-NLYuNf*FL_fowyRB`gc9IaCFV1*U^LoeK=L|JJSj`@XEqw=J@&1akON7Z$+T
zBC`O<HyrPFju%}BGxg*=RW$A`|GY`n<-Ufx8bZN~7cE4ZA({x2F^>~&-nMP)uAMtR
z-?Mwq?wwmVez35nxNXiqLlj942Yye=-F1~dKt&ib+=(gw_itGa3#;zv?UM9Iz!eDR
zFOfuF@pRXm2_-Y~=1s|ROi6c5Np?(0oi{nFWM;mnaB``0R<+;JRA0^Iiffd-5@r#O
z5Ox43@B;V;GsODwuc9BK8evx7>0E$o?9_?l)f4}wuo^y*>-aa_WgMnGP+jh2MEFoz
z1hq=NLcdY9{dv#Tlsa3RjX_j{q68Pi!B`-d;00`Igc2&NB=#72p5K3eaR1&_4TV)>
zA7SE9&$NKbhJIkr+H$X=e@wyz)PD$p`BHkqCB3?taxYmx?(C;r$@j1#03>wju|}gy
zYxN`t8pfGnIEUTI!(AyOJlRjV3tpc$G1*%<v98ijHMzF7UQD6bfq6j~0R;)<<7Guk
zzy)}a-~u$FJI*d(Wz|nVd{;l?A37!#x`bSNeoFppS;l?jPgZ1&^an<v=cfQs1s}RI
zM%7i7LC?<F6ZK#1+SuLhvCkJzN-lTJuB)jevBzMZAa;Nkgb`3yG2gJ-i1?F4cj@BA
zU(WxuVR32Y*oOspQ(sJnIvB(?5Ss~3|37_uNEN~|^(FLSuby_Z1Gkv&@*tx~Cdqrn
zIW3FTK#lcv6c<%PAdDb00#b<SKyks@vuDwWf@A%O%n@il*REV@cjwaU(D>nkit#VJ
z*HL!*$d?z+ojw2Eu|qr8E_J7rruFy|O_-EJ1P&1>0%YtfO@gr?+;pYgt9@zry0f32
zm;X=l+-fRITU(59v*HEDLS_Uc5?p`>1ML)d9|qd3n>T+reQa6jSRoa==bOMV)_(<7
zQSm@{Dlt>Y*b4&@WQj&|ckGGWbfq1BjPn@}73cq>)H%Dku|Z*;Q4r)a9bhsu7od?6
zD#hK3r-)4WJH<4{;kjmU4V&T8(-2>O`u%NXGfx~phMAxnJJb?9ylY+k1nY>5dLXlK
zao(#<^)-$RBX$|#H*G|5*0ZjuX#}uzl~p8?3<TahGCc8P6WJlf;>PuB+t;+&t{Du1
z1p2S?J9!}VkCuza1A&%k{vVd`uzn{(90qkc%;%siIWrz}PD!pTbt8au)l?>8xB%o6
z>z7&hj+hA0d=Bp2TAtmt7z9)(siMmVfA+)gEp5l%N2uz=ujVz@r7m*(NA9(I2)d|a
z;(tA}^Ni`$V$QXGwGKwlT`BjJ<c#(eO+__Q(*Z=wqzv6MBclspni;deE%NSuJM{VH
zn(;jaA572e1#mL-?-2S&{wF5=gLdlo3N}oA34PeBrvXL?=OOxCv^}XKit}HuDs!7O
zBDetLW0c`CWfo>4Aim5*kZ96F5iN}?7k{ps{9<S%__7~g`~FJ2zBjI4NAl>m>+Q?G
z{IFo&TYcc4B)3_)&T(C}$4!V;V3;1FU)KAlVUCQ)%bc^+K**#lEWj+l5a61)&6>x~
z&hJhfva5O0>-p4w@EP?Vuq^O0;poGxOF)}$g)c*)s~7yesk%410%or!;`AH!cAs}~
zu_yW7lJRdg)EN8jiBbg8L>FZuz%L<5Ut|uGP?3NLgmfY1_3cG^$Mtp>5;7n9VD)lV
zk`fm~km>{<+`jzlkE~9$ct|(Sjh|A6`-`VJ#=T)OH~P4%`w6C@F%C)W8UN3whMt6f
zk=|&eq@LmwVj@Pz1KRIS9#&;f^w;Taz?1qvLjMVyLchLsHhq_GFZc(A{?&VN7dt19
z5xYR=0z?qz7#0D!7I-AcAxXd(!N~)=aHD}e+i%*4r3+fnrIDhLkfr8h;sQ$RP+HUW
zfigO&_n~8Z<`%fpM~Rm*^!4HV>dbnwp|&UW4naiVhVUg88QCnXvcbU%s3#A95!x0Y
z&5y8k;>-UX@708ZmchBkmH8OfvA*~Y1Y(X6EWm~$j{^CL8#$p^;QG}|Ei+#;<Y%`S
zF||p^uP>WNauj(`H*ekuhxmmTNKm({E~4J$%y_iEy1c2O)-@xyB=bqh#uTZdWQ#gf
zcLo2%8TG3(^KtRAiXg%kz&i*25kV+#*RLCjD81PI@#4~SBk$Du`Q7yokzm}LnEoH|
z{P{=i*6?cxVFXLF9;zJwT<w%snr8lUe({(k-mJy$w2paiF-^Bjf4O1ObJcl|;`-3h
zD37(pkN*4s4!f>Q8D28sorXF>X~stsQHB6r2s4UE87#mokSK~!XXn<HRe|705B=y!
zFgi6oW!u)R<o_GO(_Za2$$vTgX7@+s-3~fSOmea$`*~TV$l{a=zsoy2uO#<nUltzw
zo=8pbSm;2Se&v~ttfyrN6#fxGc&AZg6c=L-yjMHb5~{!hjrz|_AMg%09!<RUFM{EH
zTb4=pgAsxXhpP>IGRZDqy6~$nzaZDyq`Oi_<=WLtmwr9>!<pkpzux`D=2hz#mDU$!
zx6FLKB73CinL4gaKk0`kw1^<IM-vNxNmzhc07Zzbq5jg6C4mj_<oUD5tMeZNcpZMd
z?aqB+%?Iz{{lJC7l8OGl4$I>6b#1|p_uiOHa^$}O@hfpbb%&0&=Jtk)2JiIxIb&)I
zp7!;%G)9Lx(4C}`+*epNub#;)j7Ng36=Ia)5oHQEvTuhTv*-m?a*}h-B<LT;!Gc3-
z;lT)h?&~k2BEJ6c&b5L5nn#e6?ySdA$VG+2A<6WILmod^a4#4p)LJHY7NTCfZ~=GC
z$rHzS?%4Lhvew#?@zqma^#_twdf~@T{&&-oJ7t7#-eeOCFbfcxL6^WBCVey*l8EsT
z!HxJlKWvyG!rw$c(o-B<Z4Fgu&V=&}pHF8b3xbFXY@A;V0qfY)+ksanQL+ZTQ72b2
zd{`+!nlxi^^w9pD8<xCZJGnYH{77z+bMm`H2h=mMWLXS|M-*WWJ2Twh9y@4T{|6y9
zXA)e46BQ>O<3%(x0wl-!mP0$&*wg<LElrKgfT$nvK7KHgHc`KkV`?Z7!f*sLI|xBJ
z#7lst2dB_wl1X5EB*w=ZHmqE>sH|{YS?*J0%-X$9AJZ=SNgnQ;ny$<Nu>}}b(y(z#
z2W-hc94Rry-s!`8$^#2Xfj0PSs2?*k0TpTqcupb*m2HMrSLRFpN$`v048O8oMrc)(
z7F}W^kswz_4LNoEz^-+zh3Kn&n#@FMT(k1^XQIsG4uTTEKf}Fa+vf7j2P{D{a<hx3
zi}H`w1bJY!#dJ6#d-(CMHe15aNpI#Tlt4kIasoi%^o6+$c18lDilYz`C?~_81Rkgz
zV+W@tf&xNi?n7duw{W}hS+b;|%I6&SnkTuBAgKb0VJ#_mOM>-kSP?1YQKJQsCKOq(
z2Ywecx!h;0y;5HTW8GicuI#5)uUbK}H_<K-HNZDsyZr0?xo_&vS8W<yuV#*zI{_@2
zBsNk=g>jYOLS@~&ywa#%*e#Jv@XPZts8K}KGtp-tY48tUGp}{j`wceNdfn4bxx1md
z6tT(Mp&5MF>eT~8MRac`1*iw+?v8ZzJ?-A=ic&$QSfB(la0R2yqRug+F|89BLE4kU
z$xqNc)DC`_D7hY7$p^VD9}cBa=__%J9nD^o>eVzX@o!v^oK!L;RqAgr5IjUoDnw8m
zQwmQV*da=t>OwF0lkci6b07`Ck1=CLBbSf$+I0n8n@#BN(oyG0y~kHFgCUbq1KUEb
zNNlDd6~j^_bmHKix(OD~)SvH8f3U8qTs;u{GrkD7RV!C`@?X-g)Z5O~ktA9}72S@n
zL{xsj1A@g;0ti<9#Zy(sA!$T7yiZsbe4^oqz{fcZHo!9z?tBcdmL|%lvudxlvb46U
ztggBo2VFy5RZCL?$!`#_d{8X?B{Q5^AU}*CKAbYQKtTfjc`1m+5Q_?FDS8OAflj`%
zY^*-qIuX)#jeB*?haW28A1%>G)%vPHz0DA>cBhV{ZWXu^bV05R4Kp%=i)or5tmGY`
zxMH-SyMDQ6dqp6<Q-7wZ?Z|pYTukyz*ow#c3Mb$gG+jyG<?9*$8i5;(1$1VV1YQ;<
zZU^}?kf6fZdS7HfaRTU86}^VY;R5D07(tYr_SPn9VtA&dI`UpEN`KNxURK5^Z~91Y
z`u(2t`@QK8810OQT<H(bOM8rEH9V8Wm9Ck&_{S>TbG?(^mQ+Ul?Rr}v!IqTlcaRSZ
zXrcH*vB%@0RpOZsk>|$J_14B3(fp$&{JW^4v-9AN4@%ST1wSFa&h&?CDtsbmgjN|c
zJQygAP@|-m<Efy*B+i+oZMBqf3-LhDm?THuD>y^CrB_F(W2QSL6d0vNlW}{J_JHY;
z(3NvKJKwJwZ`XICcuWDR*E9s5%mq}pbI;0i<-O!e#R4+C6aD>SA~9c6?gK|_IQLQ>
zM*tA|#}OJY`d?*OqrDV1{m?yS4D1Pbv2aph!hXK4LqaXQRK8$OZ*%C#e1b5p64x?!
z3k#qKvB-jW1fB|Xcy!l~)~)l;%@6IGFrJz790fvIN>DQH4OL~!^lAaamv-L=@2zI~
zLqksR#4QBNm!B*SMk8msx<=Kb3IA@?0#c|qjtTF$jr{X4RF~dEqlT&H`P~;-Vp0c;
zB{r0lhXI+;2?StqV~G#G{&Vikkx=e*c8_Xl#PJB3MOpZFYX*3mw=OTEcAr9~CF%kz
z1?oh0fiz(O6d?#6T?owtPcoA@J__)OVdgCOm*s$(MoNE|-A@&B$1*#UFL5PtB9-0P
z3;v&k!^*Kn;%<npA)=jQM<ejv)3dy(_l3AJvY$+Ew|odEOQxhF{L#J`M6}tsM8Q6&
zpDGrUC6LZZ|7A-FM&HQuj9G+&V9Q6%GldO9pw5~5qOAFnc@q|Z)G^l3%=wE_w4kHC
zuBM{gUFa_?VA}Gg-pkWW4>TQG_FBKIH1omDpKO5m4ffYu<-vrPAZM6T*SF3wbu;u~
zpGXjdm>v@1u5hoM{5AuJ0ZyUgKp=jwy$Y<=s>ps&dKcUsPwIWm^;Kl+;hP$u&%aOF
zxOx4`%F?W0NK8;U$Mp&gi~35wkgsS;$+&-(WIlziBI^kB8})X$Llcmn<N+>h@S$Ik
z<{D<EU!Of4gbRK;eYkq;!y$UzFC@sI^f@#kUT61H*_5|XE%5w+VO+|C?^XD?!^m^C
z`#LAQg;M~}m=W-enebQiaP87B3+BCP2aGyTIcU7cOabIbc#Eb{*~XPRQcCxzYogU?
zcI2Er`&}SM?oKLb!xXUd!$t|RM++6Pcuu2lx<nq)d<I|h|MkaHHH1yA3>HH^q})ry
zhq;OP$e_ihFZ^_-Y3gWDZ3~sbtz<HcanBw{Ruv)L5LXWHr-s>YpE-T<c3^8T#iVyi
z<JOI9t1I(VEWj904XdWZsQ(ns^I5@tVE>nR?T9=NzT{^dx38+S!w(2?j(Z)$1k)1L
zcQA9kh+rxYwh4{eA)bm*tMaugBhmkT?+#ny&A9N(IRxpQLh!+GQW1AmS&pSu6+V8z
zGf%)lN7kaBZz_N9;gIcyLvT&s&reQTRWnsqp++m56pVooXRcql&^*0ot*9B`6l1$X
z!kri<c)SNWD)H^XooZqVf#eWBnY+^;(Z?2G8yER+-H2N*N{CVG?@#12Z&~7%P0d1}
zE9fVxcHigBdBHs`wZb)X>HNlRn?5>zcpqy;&m8;u^pUSl?Emc0u618+TDs%?T8b_%
zalYF)`FT>XN;5_%x3m6Cz0J^IRjsZrpt?wZyA#FhkAAUHNd`bN5sWkMWgLm(m5NKa
z^PA5%N-Cxab^4*+Ho<Q?3~{CUiGeH28adyS{q50xQN(j1JnFk6dnrc~D!)aO4{WvL
zo;#_bwo;tT;+!P!1qTShWxMY16RTXmJMzWXTUTyc<X+}UMUSn@eV8Rh=okvg9J0P<
z_qsM1)9z7&aGr#R)s^Fb%I2F?Q|83Aj@vViiN5=`z1L@G*am*PewofE84gkc`dN>b
z<h)Q_GI8VjHB`Y5G0KB5G%<Pw=D@+-8=GeK?Ot%FjU+mz;w&WRKnarcjvpX=T?GZ>
zm+w!IT5$ZUPxozJ#=^7%+g6`F_9f?I)W`52i{;ClsJPN3|2^4HklISPpS2;FCxdU8
zOGn6UUbnO%#3W@0zo|Q>xuEAT^=_YI7IoyB8|xP>Tp&wA@IqtohL6cR<w}B#XHFii
zE_hy$(}RSdsh^)5<Nsl#TeY`~dzmayhygbU`DtWZ-6>rT0q19{YfTu?4=Ke%L}~CX
zUmai!&+FH&ZQHz|w0pfI5b8jh+Pw~wlkk31bcH$Y!@4Q@{Hs3%_Hob36+uTRjftK#
z$iTv`1kG*M@zcL{XXlkmzcv)6=n})OZJ@|l>^vL#mpCIKT2kX!|3Z>UTtc+{>ug_F
zlj`3%`GsBtqmx$Ji1yazcv-#zJCiI0wOEZ(mi3T6OeUCn|1_*TYvgi&Cfk7i{QU{U
zUDu<2|Gg&v(cV|~cmml4Pxk2}6O!;T85ATD#c|5(Yv>~U9c6n}i$`UH=t3a4El6gY
z2Bt;D0w9MJ9hLhXz7`ZA#Id~X#J*3V2fMGM;7wNeVEK|r882o>^Z9(o*7C8B+X1Pc
zN4z&o9{t$|%@@vnXNfjS;^^1wZS?=zs&XaeBnvl=CXXfj13ZZ+*t7lP(sU!qC;TtW
zQZn(sD#M@okwgWkB8m$@2H3BNZ(m)WYsdA3lPLTiUot@R`S$qXssdw%5?LgT;6p~U
zGXKdB7uQ|-_5A-jZ5Jb-+`o-0?H+;(B#JIWjLVBPKJiM#ig-Xn-}vjf@9QSoPxtmn
zCIHG-w#pDD)d~|yGQn7=c!y2_)S)WNxIdVdI0KP5vY%PFV19hnfGZb&X(>ukfjK+U
z#hcgS%=_lhfj)E6Zd|=oYhUEkmGi8u$i~)_L|j51hM|{`%X>qUdho9}`c_q0?5ZZi
ztz?27l1s*pR)siF5s?ohgW(kkth`Ia<<G$wFrC@8wmAf8d1mD@&9THaUiCeGyM61U
zc87w{G)(G{@=dE2HJ$tEr#^|F?lYmRZJe&gT0Nxu%&^)@pPB+N{4w-oE%qHM;`9;U
z`^ggJK(iro!#QvB6O-mJZ{Z|m1>g%M!<=PDgPane_h=w(D4`?7s`K=bY<YvTm!&Sa
z0pqgD>G19ivJ$PEI4y>zH23L^AAM*<rF&Og4}qCuUv9SJDTdxLDOrXX5yx6=Ql9=8
zR`9Psovz6zMXF2pvm|okWbaxuCi&pbd_<M^7yO_ePyr)QH0ciWh5m5zK!^$_czrSR
z8GR<WSZ6z1((2Vqzt&H9mJtc@Wf!EaTQ*aJf@&S%%V#6mBal{S{p5^?l?sHf4-rSo
zYfRTWSav_UCoy~1G|sT@Z*L5<7Dke(>@H?w1!V<*AEroF8&L!!Uha{I5w(3)HGQ-e
z2-G)r7b+ik91NV!&X4Dp2yC`M<~+6GqqTv__p0)6hKY?$i(Hl+HwHa9iS@r~3LxC0
z*1N?eFEPv>g}#h}9%Y$bhF&mMIirwF!<RWqAxHnItDSnU?Ak1jGK8eK$62nMm_@)W
zF?0Lob(9~~Yg0F!>5nX!-;ROLD%ZFuKWC5aE6W%mqhJZ7C-dPIOBa$Z9!SRSxAArM
z=-#q)i{)VQE=TT*;_Jf-M$1)rxP!)5AN1QdZ!Gg>>S#0#x9QNAVU%|e<ePr#!cYF|
z$Ok@>6eLC>jxyH7-6<mC?6I%d97@NDY8x5#ll~)Rh~lFBV3@3`$X6=50<32&Qtxf7
z@{olRaL)Hb^HEd*`_C_AMX)jb1wWtF-|WH4_#)!O*Nqb(ju8+Ac4UoH2X~dG8Raab
zzrnpWAptwrm*2DOLcg)A9oYUr@FR{gD)vY{oI6ECY+YVXUo5}GyQ};qqWqv;48HPn
z_UM-(3=<;-eRdw6H_E;ZWDWkFb*+}&my^^$P+G1yLa9h_Cptp$d9El6k=$ra1D@Q`
zj*L)SkW+s^V&zIiM7JJVWSk!6T{o{?p|rb+>lt^E4DO6a7A;yR31ESmz=LYnqshNl
zHC_q-U?5#%pI^CRIl>>C6tg$XE(c$B>E|D60@bZm$Mtu)(ni+TRtgI+1;jlADj5DS
z&*0?<uCT55R0iFI1kyhJb8-W=u*Ljn+=82E&Ujr!KrpH*PMEO8>oO9vgK?rTKw)H*
z9}%#F@A)}*`Wv+d-(qM|?yalzicfOj%P>D~n+Kz*j_Xu`73`dzE#oVWzPM+=MnEkH
zlSST~U^MDI4gM8`7~k3XY_%Y5xyE!C`#d%^)F~~Ia9C98AxF^7{@v2qxp^_^Pu8k0
z{jIO^q5Kf{iHq{H<NZ2dPzcv?&Ut6So60LS@MV}ko;p;TK0<$;-ey6u_`1akj&B}F
z|Ax5x>eGim_pzB^&{%h2HI?;Q7QYG-igI7U2%=EGjuX9&BI=qk7W(HSRsd5#tZU<R
z_bl@NDJ{}G?WJIxbagHJai;rtDL=s0QTWf^NbZ?`*+#9Qrks#m)Vxxioy)vw`s?&I
zQ-iN)8iUI$z!V@EUw2SC5G!{UIa6eyy9izrEcDbh@oith-|Z-YlActOaZLQTjuXAj
zjjoJG8tQ5UMUaj7im}TEUu_7VA6SDUlRkY3{yHY7#4+rJTT%kP!GLi_LUPf~M>@85
zljXbQq+{%hDkEB1!3kUK-$Vn)zS=@slwI#gc5SY!Y$z|by&&bTa&HMN;7K28dyO##
zbZLn)OUml7L=G2jUs+)(6X+v+QCI0h&=Juyw)7hGvi4Lyw3Ji=aCNBz34@;jS7fwc
zBgLp`%HJ#zVnC8SoI>9+zstH0s)9@TBNMSD+95Uc7M6q*-4otgv*yFkwr-J(AY=5q
zzdh|hHmrL_mjz)Ur287Vm_xWjSpm$F2|fkjS{Kicf?w~oJLj2>j&@OWjiiFX-P4C5
zTjCsJiDU!FtjDN7FMb&6gGI3b*XQdyVEkZ&2qYzwd(weqa7lVk{8;~i?eB+3o${pJ
z*Va^vltYp<&oK5G*9lv-=jHzs-e(466}%mOIPaXADk_jZ1;nB}^1y}6#q-~(48Y)C
zJEx>F%d^MLU>3Pjouc4dWzepI3P=<)G)%>tQOw7?a`Akq`YM^DL<JHPk9AK8yW4dS
zCNE!Tn`P_YhP<hUN=Kxc&FcDD3duC|HZ`%?oQRJ5=1s)f)qm=BW$FmjB;_j;DRDGr
z6_QmqBWQg2$s%LUvicJCs`MEOhOG7)`~r-p4t!<_7$-q~mEVB|f?+N@gG4bQpE+?u
zTcO>nIbY_S#o$5)k`71cVelu%evEZz=Z-aPAxu1c`wQBdWdZNit5>$InQzy3Z|1}7
z41!kE(cbFGdD`wW&QpR<=wD3%!~zl!OUt|&!nwWpH^B9*@oa5rVrerfuGlaAz<D$-
z-MywM7%I+yUT?;O3<Rk-NG*1qi29n`Ge$s!iub+L0Cnide^uspC;=~b92Z1{gXYV>
z{8&G!tFVKCy6&&Ejla{=RnjumEsh`9t$HdK_uQ2>qOP_|NV?iH8_l8Tr@&*?A+?d&
z2uZNSG%ZW#P!!`*Ey@l{>;@Ggv{X{?CIm(zN4x_4tjsmzzZ=O#*?&V172S+%{6O)g
zXqF<R9?pW|w@qZA4qYiDTAQ213o6br^6nBd*NeGq>&j|Nb4F+tb9L$Bg|cYHDB$z^
z@2rSaJq^NtQcY#4(Et0ZSNX@ks0iM4CFdQJ#waU*k%ExeJ1;I}%<bs^$e#7O^547H
zN&e#L681%NiwoN>btRjyst$_^-ewfQDuRoYyjalQ7az|Tok3ozUL9x*D|K|KKq4X%
zc2Oh?T8&*Vd&_*SFG;0y#}UXzhN!&RtCug9XIf`Ma$}XRSm>XbcX3OVFV%KeM|awT
zYEvGj07(i>sHDMlP1Ei87oD)Fp+>^K@mlUzKk*rDq<T->vvOli|7<`>I*=WHNQf2v
zR=l9ysi*O*+Gi={J_>AgVMqU-tVdU`S_$w07jD<0_3PKJ)E7LZcU*5*xMnN*|LUtR
zYiD#N%?6JYce$ozFa_|D!IJ$k2S0_(5;KHW8zwymke1()u`h~sNoX}*0EY<HlsacA
z`j3VF1IExCmU>bxk;BQ7jK}c<iVCDl2}@MR>*V?Gj*`}8*99_~%AGS<%R_t?1B$9L
z0_TnESL-J{V|N$ykJZD>i~Pqcxap(SAzs1OgoJ~^5`)DQ0HWd*ND3Z;Zx8Kc#RuI~
z!hwby^4C2pAI(-mt8oclLw=T8YXI7$GOt7EUwpGsw|@m)7~q!pF%Xq<Z*{px=pPpu
zF}OtA_8J7PEYG)tpDvI$yK2=+DdMU}Pi{j06Ak(gpxXGWw?+Po<rS!Tc)n$hVJOL0
zzcSEHV&_xjzaR>VV!YyIPMTQ2DDU69YwD1}t*a`<X2<i%uns)0%=GGT4u89K!xF23
zlf%k=F6du$@7THD$qZplkOD*DM;eF-k!%brDl}3wE>@BqGQT~vOX>q#!tYBNUQ=33
zer9mRs&MFEWTRMKd$+AsR%8(U|J6m(AbVj4R3N4R+=*1qjF(2Oa78Lqh|sDt>q+*r
zSDw#74*Lp_EJ;uUr(@MPNg|5h4gD+se~k7ZpfI46g0zH$9VBH~#SI&m5TP1SQ-kqc
z?$5Tj-~Z~&e}%oP#3xTNN&WVlH~N<Uisjk(j5-^w-CITIBh}qb^39u~rho(~pmFis
zncASW9*i<D^L0*1iMv~avQ(B-C-h(8cO!eDf8xI}t;h0FbC(ZRfaxAnW4dQ^bD{rO
zv!PC$VYZFs?SbXeI>5l(b(nfjL$x2BO=7a9CAzo5pnu31!-3pa;$_s?*!{^0QC9WW
zskSTonby`8nJZ<;#9e^W6=rv$e%Z0TpAbR?LW^(mT@*Q_gEFVb!nGJqcW^|D__BbI
z2yCG8p3J9IBZ*y2&aXBtu|pL3!0ZjpumT1}QBb6bZ$>c<BOEMQUPIp0^3rTeyva$|
zgntn?w_Bgf%v+uNh~4e%2`*V}V)9(OW>mwzas67T0y2!3Yc`1DBljx3%fxz?-HFA?
zPZm0Y1)9hQciR2rl}XNLyz0D3m#gz^ldQ^0rh!axDWFeAH~&pX_~}Et?6%(arj4jB
z_sN)&hDQjAD0y6TMIB(;2!AwxyYcm;j%aPHg?dHv52iq>A=zfiQ98cdBT;WWIgrPV
z?oyw-))`5IaE-iIXi2r%n%SWKfFnp$3$j+?<yT~aTTu9>9e!N-f7d6eI1Xs*^q1{`
z^vyABPZ@}qrXO7S^(RS$u!1DX=a?g4ATG$C5jHeY;~*bmv#cl!m7naI^lyZ}tjx6>
z+zaQ<&{=CrPPwb5ssgm*$y8!TI(X^Va}ARXce)_T`~)L!+^?))afHG?(aKuy7n0fD
zr98{F$Sn>l@$TYRVP!|Wws)aNVxgNbDTmG}$s$a|_ZY?ee={aKJ5?^I2@+$hXXhz4
z6nQxK#W73(Q!7K3as#aiVB<{6J?$-xvMkrGR)(=2%8vfi@2jt^wo^N|udcDBe~e1%
zr3W0LI4;ByO5#>rmJS{K?0w+0`!>{6h;<XMv<EeyAJ$E_19EQe>q2;d%EJ7Zg1Xr8
zUpp{L3f@-q&osmmp}6>p6~-`{-mkSq8oh8$d`B|IC85!>MC9==H{12smu2LCDz}44
zfuW#i?Ks;SDHPCP%M6iP!a?L!GGh+5#OUl?+tgF;n4XHD==z)W2n${$pc$9d?rJD$
zY+2$Hs7yd|Se*SgYI2Gsq4+~g)6X`v%~dGUA)!4dbF>U-f`q_+{qbA0H4~5ucwed^
z{1F$RD@4R_|EJ5j#rh#RPm&U>{9VE2kJgiJVY74yH-c+so|*zga1H*_V3hx6`}KXr
z`Tu}7W9?Mbi9AGm@5c-6=--p`R7-Oc^sfSuQBMI?fbHr|!w#m3qO51BiwGFdKT1Um
z)i4E3$i^oN47Y|g=^DcS-xAXaEp@lAuC{xKBj<VgEAbA?v~#qtQ2R$@JuUkMfH58-
zKBz&?2qh;(aj2=A9Quo<i1JVG23}4l<XH9nW57vkp~N!2zKjPO8|nm&WL3p31Pqk>
zHZKJ;@->l`EBh(rAz&cQ;!gipFZ~?6C$a(<w@+hjB?&DOrwg%Mh#jj<grOcXH~VEe
z3x!D9ZLrKC?#6D{!MN&rV9M}P=Ny>=5VPWA9OQN7dp9gl-7$63n|gO$b(iv=2ul@y
zJay0>lXutEbS=anv7Ged*qQ2Ni3=DebQx&OdJKJ7(ZAF}u~e%2=Jo+!vGaolk!+UZ
z>lpXO%9Sgmh*M}Ig{(h|o(3d9$%Ow%XHlZ;C<N=$pJEgd(!o%NB}S#(HZhvS3ht91
z2aK3r4|u<7Jb+n#UD;2Q(}?oVMxSw4{sEeGxU#~?5?Wb^p>)w0r9c42w+DAv0>DYu
z12)#zD*BJ3{zLuV=4mh5!kIF>y40z5?F=2H3lYik&d!wp7U2WwY;gF1yyE%^_DdsE
zM=)?=G%<GiW(vK?G-d~;oOWXnyT8Q~-eFc!p-fBXaLnMcc<_y@7pulTq(p~;Q($I5
zL8JI0BuP8OoNn>-uuoAO()4OM4AB2W4fQq9f6U#meL>3>Hl&O90M<RGf~%6;(aV-D
zm8ff<NqXg(MxA+`FjTv=WQHF6vYSV?t}rU<sJnEiI7xvZQGw)9uoClTpHTIMfUtgN
z$9cOT9e|ZNW?+?wIvp3stf>!%Bnd2mvBYG#%UFRW^iMR$<cl*sY9NPHhL;gEjVVxJ
zhBVYw3;mNT8#n)FXXpFX<L!W?q#+CT@oA8C(`SU5nj4bLspGt>ojk0}>x5|g4EA0A
z<p+}+N=KbD+wfh;6o4tAW~CU3FMa6uZ&_|f|K7Cwn3z;vU%b+ObZA+G+d9i!i$-D6
zUo=Ul|Jd!y@xzJzcBCcrFLErVVQ3vK!EFMX)p?KF0qM+qV$s3{%JK~z(ERE2VO#o7
zzptjEl+KduAtez)XbA7u7;3fxNsXFuCON6n?-2S&-;fGUgOd@>Mu$LU`K7vhds|CF
zRWl%zzp(fnOK6Rgv+@wUqC=8<7DM_!`L!JkY>ZN0TO}efjz-h&b**+udYpI9%n_R|
zoNTTW`?uOYDq~b*eOK_8sU&o=-?s;L*gXei78kswR3Hfi#595<5`zUnO;bnr;zUhJ
zD;fV!m=XVQOw%cYWmkwZIMbH<GED%h!;&efBLBr;i5>l)`Q~#&Y6ZTGo!(|+EY|ly
z{}7ldA0|Y<qWcqC;{18Gi*PB|+|pR9Jnf+^UjW<x=}J2%5-VA#dZ8@D&<JM{P0Nf|
z6s~CWLS6bu0s%4ws6asMG+046vt&i)17=9NhBe7EcY;8YIHe4T=D$~&Zvt2y&MPn~
zEGhXPS{x08<WB7Sl$Xl4*C3+*XFW<xUsQs4<$q$HE6X<+NawiM5U{dUK{)GJ4JWD<
zr*pC}?P+oY1mWQrT-#O}3k=m)M;$EYD>f==GlRoW7!)#l+8NXX89sIIp`B}eDZ_wA
zhoq~WYOH2O`IqfY6G8b0Y$hzcwI+boVPSz$fkB3&&*@kpA%ey?yVqF`BB=9ZJ>JsP
zC?YYYFoXd6)1`iWKox$ZQRyv|FjF|n4{zDnQ6!z!pDFF4u`dh4F{Q()ig51C5q7Pz
zL>(txc`qv!NC*!VC>#zAfr`*SZJb|h*R_(ghf)3$B#A}!!l3_}0$|q1LLC;4A0+xW
zRDy0frb9xTh)G*(Gdw7J5HN!ef)hjGhlWw7tFYIuoeDn&%vle^o3dqjnDgVB`pME+
zQ%^bRoM0sT(OKx9N>&71LTghj!&&A_lc(`le;|kM<hvVcD`g5$2n?-L=^gKH8(pGf
zuCbAX<=2`28i*20Jb|itcXobIJHZlQPR<?oj<SDaDtmXYYq5i&B<tCZwl;<@)-h<i
z;r{vi6CtX^IH#sbt^zUE5D9Pk!`W)huCuPm{}qJ8P~p%&j}4^KSuZohI(AOaf}!{f
zf(k^PXSLZq9n`s!L$<9EzLvGLgDk{!{P${ic8WOC0alV^cHUc{4zRI*V@m&<7rAwG
z>Fv3J{7>wr7?mOIg$=8NFE(^2gy?`7?c}7|3a<*xQK3DY#Eg~YW92zI&ZX_1YOJ}?
z=_IuL2i{9Re_vbhRPX~i!!sS(ETHbmg}_LOoeK2r!JTSZgsE%n=}_q}kw`>L6UnRw
zu#a<V8m0=a1cy2%XXpKEaOnSo+DYo|Ce#(>{}Yi2>SCRPZHXrI!{t7se6bFdI`m{e
zPMvmHm??95IP}l<PdbwIwr6^p$ZDK~;R+liSi=<kA=2hAFdH?L$~>Y1iSLDJB}QH#
zHn-JZt+$=YBidV=#Y>QAMQqkKP7_=yfYssb+&2e@{#pN`-mX&`ZP%0(=wFgQ$p;(c
zT`(w-5u(UL(fGGS`47idRs3a{z1h|4nTEO&X8cP%@WfYJN&|@*I_hK)4Fq=QLIA2-
zbrK6N5QZeLv;0yAj7~}9D{c{dg|FU?bxkuYVdmuQ+<z+ik7@ji5<qq^unbwD4hPF1
zFJ(Hpf14d(XxC+~ISAGMCWnU%IOYib<4_7e*ui>}hDp!b!C9R7EbEwftcZ~qsX$b;
zXq)+(oe*<Q`mY$jvXxbcpmuNC9E_v&E#_QwCI9Di)4#0NiP5}y`_>JLA={zOS3Dj1
zM{wc%AAG;Tt`8dpFsMsGDERRhvDzAy%@Tfg*|I?LvphsSQ=ab*=s&{mEOrh*LpXR>
z<(}uKj;Jd43jOOUP;@QOUw$}Q8Azm*9`#07lDB9oMoqjtc%iw-SWjo8-xlU|$$x=7
zM)}X@zB{h$CKDu-5G?mP5FILGwoiL7bZ7hft1?V_52!KA&&wV?zoP@iEJUKR<?BAE
zWn&|QoAhT&Tl}BUzp|;rtln_)>uuDK(I2QipY)8e&_5p$!ZNcklUjlo*~#NyZI+<6
zRo9Z5>#DHeR3X{mjPA%@8kM`ye>7ZmNjbqJ@}EglgvP+PK*Bbp<K%|%(J^r7^G&w(
zf6_;?#fbnAm!Nrz)vnEgF6v{5pzd#0Qivc?@z__OQc+a;RdawmuA1?W+t5Etxu0)q
zHB=zsES01kj<p^pjcs35C6pgb|K5y|5%eg`_YU+j{QuPxZ0SGW*a8Fc6W=>)u_4_E
z-UziLw-IGTy>XKBL0h0S-*3O&W(c+icFt1R(+AO!@hJH)B08wS&W(`)5CP2GLY1nD
z?&zuxm7vR4G({{*QOv^EX}7Ja2__PG{@nCu#aBa@Rbg;lR)pxtN3FAif$YL+U`332
zGM?n<7T!Uwtt`vo?bhG?mq8R3O(K-<Fd-0mys~VpHQ4X|wP?Z^p?^#~N@_>8S{XeP
z%ExxV@W=Vgs%Jt)cydtYq34@7Z>(#bX9vK%%;!XOPziJJoj;QHV+ort<(>+^OVo)z
z6O~Ok-}#ZTJl67Cobdz>)yQxj!c;fjHM^^lwu<INv7jY_Lef4hg;??AR6$gK1%(N3
zu{dNa>fp7gBH#Gyn3^GDA+e|a(m%2tu}{JYejC&$*dLh&EAcew8M1*L$Qfvu{f@$$
zdbON!O?+E)4DJoz7>pL8zTURVvg$anxziqMZmgAIC7ai@=7o+kPtkXDY&?zpWp?0<
z=o|aCueHnnbZ0)w#?~k*y0yr2!s*fNn>Sc^XopEQTajuu;8PdH;XJv|YuLv}x8O{J
zSm~Y{L3jFmX;dzd{C^X`>d-yY*a8XtCo=l~?e=XXJd0Rie4c<02X6^8J0I*jd`c*y
zU+mdU#V5;A^CbV(Gc!lY*eJ@YFj2RAZHod75vtlW=A}Q`(cTVh;+WFuA9V%Q4o#0t
z8>*nd`*1F74l3XVCfuX@ci69g8Ch3dE{1Bq^W-}_*V$Ln_NL$8)L@jxg8s4DB?&XQ
zxI~zkF<o~2t1Tw{^c*JN1xGXD{q+)?UJ;{1)^vBwew_jB0a$ZQ_zEWo{iFX&F;(Q4
z2(dolK_{eeJvt9^p4@nF4z+-M9>|9VY-Mo7!d8EJkMpw^B*}OA9J54pNHR=xU3PtT
z;nQVhisnuDDb6v9&5A5lRY{?IggnX~)PD5nQG#N4T9~;okcpnKlLac@<;$18KYg6o
zL9d=F{3qX4?lab0%aggWUyHUVD`)S7`D?k$sH6(=#h(yGl#<bH!jC#6eI3)A(T{Jb
zbGxx7bkZ{YCDT}_!?Kd8pbH8_7BR}Kp+*IQ1;Vk&Zr{Fz0Q_{*#=3HsZ{B22;gp&R
zA2O36kWpZW5epS=tTuxf)K{U7{cRg+E4W7a%?8u>1!Et#&kKf1&N#=vK`-b66PfJb
z1KGo#gr^~LTva$l;d)Xd2ztWiOm_HlNd023AKVE3ppB1Jul>bS<;mQro*bskxpLur
zh)Sx(6aFnGuuQ2@i>GvUepojN_$|LBxi3-bT->>dwtW>t9H^ubVk0(V{X3(K-og}s
zG!u;-?+r?62rgi}&j0v*n{To|YZP;RU~rRIC*{cdd!^ryZ!!fy+hwyeEb+$4;?z;|
zJK8~=GJeA(13PB#?|G^++QH@={}1Vf<kchFkqjdFA%3(AbZo?|OnLmJ4Lzd+FdH%_
zHcbAT-ILkRQE-mTR2>h2YQ0mx|8{$YKg;gPzMRK-G9LyMU{u&*fLO(ZY@hu)FIBRF
zhB_>sIEL;c0n{uxz}M;h9eA7k7TE$o0W7_c!%A-v=z>=10s}1?JBkpDj6VliXEzs|
zJ$bl!2GQ^y!QTD+|Id?pPie_C<`gjj-1)C`|I{n=02ow>SExe`82qhFHqI|mV`>7@
zk^h>=QaU0lA29(C>^P}5Z`!nc`Lb?Bj}V#h5gbC&umH0_+q^M4k?8Hh+&ARO!dVEM
zel3*>k%Y!@G}cuKFg#rOR|hz&-ne$zZj(p)Ra!iiK~(v}5X``dHi}PBE^gEK%3*bx
zo3Rj#AvBZ_BQy^epbnwobbIo<oEyM){>L*l;~v+?)YSGS-_=rAhCcAg$Lsw$)=?V(
za866-jZl}QEDo~rPe-;a@dCMgP57ZWuwVwXAnH+64jw$PZPWUO;_QmtCw%Gm`LZ8%
zjQdB0r$};d6bm4DvHEL@$C+@Vo=^Qx6lVB^$uR=A0|ot{#$cFvzJby}bzB|}V$~9Z
z0U}mvcPRLKzj_$kmxzdfU}BU%Fc5aQcKO%f1)FMUJaY=v@Tn1GT$s*~V+=Z!iNwP*
zV>maiT|?(*qqij<+x%WZ4u2~qzd;mW&FZE8z~;H?yn3}ad6?fZ1Az&bAOoZ2spuE3
zjLd(VO3TG*kE+$>20~UYub!JpUwYsd#z`6OoHR!2m%=GXLVARD)LQK{U8(5Dm;HEi
zV}p<=ybsv~mw*n@3#75iLsQRG?{ek8B9jY{NZK~j)&M6~3jXjS%da<+6sg+C7&$~A
zqxjS1Uw^cOTu!nJBsDAQYm7-#K8%ZuBb`F-VHBW7;@luOi=&U};PahZeJOW^c&7YR
zGxhZ|r%$()PP4m`wR^2ib=cjQY2pKkVz0w|)X^_Cit%CrWNO#OOrV8=mhN${qFq>A
zCQ>)=<pmw>U`$j#X3ur27uj9R+`;}A;2E*0(hmD2qDknod$=>@0byGPQS9r1XCrS~
zXsli0jr>(#Ib`h~wX7pk<iZ@I0bV8>@z}vH=UwTeyoD3nT3Qetd>C<^3qT{ogiOO(
zhi2PS<xr?l4b$^skd^am_UztSo@Xpv(l1kop6sVYM<reyuR?j}PJdIHZisXRm9ztY
zliah%3pPA+SkD-2>F9SQ`DbRJ%rKW>1~T#O|8kG%nHmz3D1ilrMQtXyhBvieYV$XH
zJ_?@G<@v0`s_L$b6)mz{QJQ7yi#lZO5{$-_hssA7Xpq-#gu@!Fo(qhoH4&<xsPE^@
ze2V%ll18QG0$~Is706^dK&4!<bfGW9r~spoU}~4=j9S=KzH8UcI``DBLDA%fy309v
z3`P?kCxS=#RpR0_z_THSjDkw~B8QHwXQ(j<3%K)NROd}sDyl}Rf3RvPSvRPQs2r!i
zJ;koy>Q~cU6`n$&e^eCwMS5^8oG~RDTa#~;stbNTXPh&P&Ek1JCV)!o>eu{Yf}v^h
z3#NCeL(j}?=pVvh${YOfy$MdsL-w8nS_QDQO@|s9lRTLZyJwGUX>J6Ed=w*yQUoI~
z%hy$SJmdcENx26*7d0N<@g@)Vq>n6{^m@I2&e}B}APHL=s(fi(VK43ZU6635rM?pH
zpZFCAGCG#M4*%qu24iuY2_apF$xH$HAc0Nl^)6VpnIPuZIxu7qgD8qej~=O=V7rr@
zcg}dBf9xzIKz~;~5P6in7cC)ijqCDUDYwi(0_((2OVjVM#1C&Tb<9+T2EFLlEEfJ4
z4dlvemwpb8#hbdLqfvhHq>pk=O|35X>PnI5MKUA64jpaHjWuO8rH;mGe|vKswUN<&
znF^UH8fwbD8KZcVe1o6w8~Y6QHO4hVL-I^qguh@_6($M>(m+Mph;nx!8nvU~ZB&ck
z?)2Q1a#vGDF)AYTj7773`?jjdulD@fTUJZjA(VsUjLdERNx*Y!`TUa9QOX41`G7PK
z$$b9I5j%6wn=+g&)aeCA92O#4T$qVW1EJ^s-fQ?jvmO9Z5q#-jN!D}j8Cey6XLD17
z%mr#jfDz;aFQ^ZxAg<}zp0rSJ#E`7<&PMM=PKLjzs=pl%^LpZgA@-Xykd`*WTQ~_1
zPpM;8N$xA2bacNULpb$53Y)B0z8rauO2dbSWBfnta6UKJ2(E!Np-<WJwO>Nu@J=Je
z&hq(QEcY^xJRfnyB#R$AV$J;M7as@P8ir&*xTRCLyGpEhSsxw8dE9QejrecDlU)FJ
z3uM!w(HHHjA9l4<?j}*6ZAT~r>n)j8S5-=GBt@$X4GDvxxq<yIeZ@0T>75yDw{4h;
z77yuug)jHnEt@x?C*bo;1dQ!?zs>}(>Clrr%#rsp^bZ%1z2<k$@yyD0O@7xg;ceIC
zWZ&HJHI;tSo}g!hq52e!H_8qx#Om#myjQ`TqW^xS0Leg8v#2uL5HeQJPjb(l2>m0S
zP*znGEX)wIiI9wNTfjxEzf15_lJPhN-=KfIxN%v#WCGRl(5QbNsG%ARzZL2XeCk)~
z?XI7a?;>x9jW|nEADWjuswicYEA2r;Dq;m#4@a*DGMO%Hu0$dcP#~JnFQI4I!GWK|
zM5-%z%A%*;-Rb%XUvb9cEcEsj&tMlY{C?1|%!cYOBqxN&-;#;OmahsYdfT1<61OY*
zk3c`c1ZbXWq*z!!AI20g25tgxTI7;f=<nhThefOp4OrQzvWZsnM^Od&&x?wU^!s4=
zEm3E>GQ?fsU#UN&z9{SX@neZY{DLS#JYpqT;zWl(Z~-R&-Bi4BWj*1^e-T%Jd;Dwe
zf`9V$jC;kM`+_U`2}jz4?stdlH}-1hKF`EC5c&sfiURd|rp61!8Bejw1{Pp4QVXji
zGfqR)JaHEMOQsl!Vl$=#Oter$8^s10yDR*eASw~QRg+%+=J27bSFf-xGKzg1_@l@x
z3#^j1)~KV7I&XmfAx`oCM4<oE<$ar%Sy&<>=rSIxuc;LJmsdofVhL6kmHbC!g3fCq
z`rOk}MgEh%OL#Oc5&XV~p7p;qMmd6D_&Mpyc-WctplIyUP1BW@clGy5;~~jOH4|Sr
z^!1mdPcV1)4fdd4!Oo|POa5z_4iN$gA$|&l$vl#ajFP94HWrzGl3ivLw5E5Vi<Wsy
zpns+qoO1omvet1=;U*dG;GW_Z7Wtph^#8yAZD=br<ENV)O7dQ7tgFUj<H}%RT~~-x
z@2TFldx#x=<h<O~IPLG>9Y4tGkwj4V_3_o)7y?UN?*^NDA&?N_Clk8#D}7_1hW<r4
zk2r0N($G@5&JzE=c@r^Dpif*tvN9zCR~v<!YQ{Zb`FziqBv+xacmxw0`X`RluPjy_
z?Xhml9tt}Cdxj?OISes+(bm#b<(yGb@M3o|f0topeOI@tssF0Cd!BDd{$Z;t@-LkK
zA(1Ix4Z-!x7pUGGJ`!wu9YB%(tKJs+7s`~}zsNLa((;8kdm%jV>XPoYFhZZCWJI8!
z<2<x1_-woscSrFop?_RViA?`edtb-DLYFV|L0L2{Ufk{5wr<<>(bAe(vSp;Y%;;~>
zfSP`_cz$wH+ss!F?pVXZZAD;--$3YnwP~r{GONCO-HoddSNd|F!BHe>0|UuVTiYGH
zHoc3(qU^uP$TG`B?4M-wT=2li27k$%^f~50|B}Q77bmRzKYe(2F#K}H`|dDOT<8V1
z7*QKpF-OIcYgaEH{c77M3tjk5{i(z~`)3#;KPi{7Z_6@PUnV}mTS7>!`;VGuvG<A{
z>IQPYIPX;uPFA6WO(XNn05;BfTQIU7ZE7@@!;54iagp5J{>EoXo>zNf@*>!(=bJLT
z)MaEbNr)kl>7PBzNZ~NSuMX?0{9-7P=gCrT#L<l#y%G}0prcO6#s!Wg?&R8nCo6MC
zmS&8g8iw!Pz_Q2WB!9|XWoh?7DkNnsb*Hjcn%#aW1!qZDch*TPf}J1KV*?sXPOMf6
zC^QOTggDfHa!gGZv5DIx0<}cp@Y{oI5NSO%6T7de>MAsWWQ!onj<;OBc)lu^fTr;Z
z9e(3X%J4GxygP#auUt4+Zy(<&EtxL#k2*^FE@cg_Ub$iyE5zoa4(i#Xd)eZX%$cvZ
zt~~hJ`^WZva^{;o<PtMos-gKKHHe{5DQnN#mX-dj#!1gt<~*c|;h3l*#G&?6Qgx|Q
zlpiuc29o=F^}>07ci2&TeiyltWhx_!3zRG)Sz+2QD-8Cp9@~}2WqQ6h_3koHk<h=`
zzX|I93@m}~m}BIkC|RMibJ3&}up}Kx<UmG(FckSzKc78@N_l9<2fNlZ;ak|U)c45(
z2TSSkv(YA-;`0sjE3)w__mY`C_|JNTv;np1v%fltjt7!68z((0!`k!wZgK6KTOjlw
z@j{qOKmSlQb`(zz{(4jIsq{G@8|(|nCNle4?@J8Zot>*I^Mbn|XI$f675W!NF<}##
zVu+t;Kl+E02T+#m5MG@B4@pa7s>NoE%=0546SiZo4Z9Z=O&lZiFRvr#q`z~`#dBv=
z&2!$O%TI&;{Z65ORv9F0{(~Tj;=LyL)uB7{5wOI^6poBGQT&OXx1O>>K{;dH2xm`?
z*@V4Ff9-GDzXb-V%wx6Jq)a`9V_%mnJ8TUV0_d0i!$KQ-`oFib)CK(`HpRabuSI+o
zXbC!X<ns;P`0wIkb?8nWPF5rIFR{XeUC0*HrvyELyPzt!tKOqRveJc|nU5}*-_BxE
zEZ_cCTea-)*5&1P`j02?1zeyEYs6Wg=>JuD7JV_^*lqtp|IsQmVcEf`oWwX~6@VZr
z2wlS}JoBJ`F##l&JrJivQ~<tnAF^e61$9k>kSr>6l6z_jt3_BNgEbnJExK?r2fvFm
zu%18LC}E+7H3Ahq5dSh3TFL{Z(fv2cQ#@1TKhs%c{?$Pn<!hIIQHdO;?tm!Av`mSW
zD_)M#Mo5F!-*~-<`h*RWpYNs+v;FHyy|=!)6bXa2+^?D^A-Z$w>(5LBst$dr_cS*(
zLZX<ck)<e;sZ~4vNhl=vOGwB$cZ#UZ_*YTqBFkb5(X}Z4gf~8fq2$banT|+b2AD1w
zMVRlzN8$MiVfljRRjZ5zkGMUfBK$!S3t=Q%BbY=v!}=_te@s;NcR)q&ueq(t{_`}&
z*EBe!J_a;{ekJ}@$zn~|QQN%OV}f5DI#M5KX=;?dh_8Sm1`(u7C2ZdZ2QY+xbN6ma
zg4<p+lQO)@J1@GzpMG8b#c)vyL8<{&hjo=cQBg2arO;M?>3@FVn-+bM8DUn}UY3$#
zI*>$;K^UN8Uu+~$t59SbnsQH9AyAnskrmOJpa-FA3Gs@~&QDj@s~p;3nsH}8y?T|g
z=ji}rUZ&0xq9wSg2;MZlRlZ`O|A<Z0WmdKR<aO9G$V{HEWM;&xj7^=2#UTkT)wx}^
zj0s)vf>YZ=S!%M0cdlRVvRHt9r#$o5pT4UJsLF~0btHq~a>sPsJ{Y0V^%JU{iFygN
zfP4mka+i^!DP|p!oe1i4zE?e7dKCP8XTh6dHj00V6wrhX0UK1**{S9-eQ2aj6?gg~
zDiG5dUeF;GD16pqk==#`ZWC7ZLr=yd)Px`j2PHXLn!kV-C<jVy#$L9zI`kJ!R`gG`
znF#3rllexuKg%zBw+a2DGem4(gpcHbUx^7|*%3~<(;jT7?JAuOJL4`GQh~xncxUJL
zrw&(SkF>)rN>RCE8g)oWlEkqb-I5p7H&`(5ExT9C5-sJ{i$JH{yJ10aEKm5$nf|Dl
zjXYniG9E}eN4N-&^g7DD`jdwNypj(+ZQ_;lrpOdPcSHq>Y+Y)k(A}x`{dVhSdvR(H
zCN)0^WXX9n|Mym}!b47-!yC~q_C-eGQr4{5$p7LgnIiuqwtw0A%f9|k&t7IK#V)?p
z%tF%;wcsqbyOm)o&VOBYFOono^6JQuBLhrO2@TI5;8#54yEm@D18GbD$w}3|c_fxo
z?<f|?MD<$kO}C@}!U@Sj|EdsZfBiqde1F29YPd~=NTi!xhbecfz05FymCl^VHlyIm
z)E()XC-b3(x@x7-Au+I+STqsw>Wn`Cd57)-QI&JwpQ#@AOfRbFE&pA)qt~qY5M>hG
zo3;O;9~i-}q`)on7_*NBeX<H{ays;{e0mXNT*xY89&Y*d6&uO(yaJsW*Dj^J6FhTZ
z|EDV~J0d6jB{QTu<ie4lPTc@0YMsa&9RbZm<rZ*q^Tzf0Ws^hTlO&m@Y9D5=QGVpw
zwOF7L`dsWBV+Vs{TDB0UN>R33*%1OK&C^EP@t1Q-vItCcX4%Uif>mZAULEzHa2K;y
z%hVmPClahU{|%PID~<+f)U`7NS9lvVM;+RPeIS&~-pAWEtS+_N+EoPR<aai0`UEx7
zkczisQu2r;03qs|xn|{|&659#>lN!evY6(|@*ESvsKcV{7gV7wsbxwnyXZQ&qDuoz
z*~@~|MMeMK^pTDAHEIeVuS0_M{mmPXF3bt|Gzz&KIeegU{Ifl%3&;@t(33H0`I3bQ
z5JQK&aU&MOAIz}ATHM<Ds}+5+bB9=SDCZI6{|n}KyjQCpNJG9|uge(OP+JYb@D@w}
zvaI2<gpLCI?|)xyUTW%&jyl(jv2;gzBx_Vr>d+gb>$OWjk`5mvOwJ3x{?byCDXBh+
zBzj>Lv)4VHtT00!UcDND))6K=efs~QOe8Y~c*IFZEN<=9wO*W_MB!toMXU^EGbXaa
zaOwP6sfexyPN#oQ<|CA5k{&5Xs3hygZV<y9>qNMW3H18)YpXgc?Y!b$Sj`{3Ws4C*
zL>R_M^AT)Zxp=-VP@+m7L`AN|e|uN<h{OOV3pzv{4Ck~=p%z&`#YQj*o(P1;U}gDO
z&}H{6br@DKADPssZp0Ko=p>PudT>|+Zzshuc5dHNnm)n~dj=h*3}3#ugH(qA(r(5`
z^N}u7j=*kz3LvSkDjm3G%6vyzJfmOQR~<UWj+QM%p%z_X=&z%7a7IwxLd6E<vR1M}
z_0Bo=1u5>$qz3lH3V^8-IlE~PuqVWS@auh5<DOQyQe+@!0*6Ue#p6jfkZ4z|C(V=l
zw`s5LAyFXlrQA(%C*_%p!1<}Lx^;P(RZj!2OBr5YQ-QP;Y9SDezl-FtL=J?pDSXG=
zH*5znd3dGYA+ccPJ;RP;Q4Fzwm`XE+@I-3}@gF~Sw08QNIwk0B@X4XS;MHvbWjjO}
znJD(|3-S|sDdau&sW1C6b|;BSHrL7h+k<<m=*KxdN2o<v!Q{dvcp%{O_3c#Vv_l<R
zy<i21YghC-VgYEgv4~(skr-n1C?WncXHM76%a&4jYUoW=;mvyZy_HL4caNB={nAqa
zd%tFq-5|R2MlV<}KPss#6vwWg@HCyZ{JL|V3FymRRxp8pJ$v>fc>XZUwCf72m$n&w
zOun0a-&CiVLow|s)|cS(S}f>ah#zI9y<!eUFD(f`PWn>sZmsd)01RX}560Fu*RNcv
z$$!iaq{4CklE`lqHYe)rT-!8DaXk%QsvQnvODr`7Fyl~2O{RcEb{lRC>>(J`m#(gr
z<h&r;2*L%-Yt&GpQ&cVZQyIc&?-;!7Y`Cng+M8mrQ??=l_CKwdmA=1AON^DbUuSSU
zQTumq5;v6PAd>tX73D`>dg|-#cI&4=f}`MH&_5sD3c&YE<S5n_kdBjnwSW5dkQ9Yb
zgD4y=haM_86;4u9fcQe$OfyD#T>XN45H7~dA;@*@+EtcyuUOFFPc?$(I)3yv7%R>H
z+pe9T!71>|AdEQR@uD_gfhAPN$+Qto^)*sr*RaF~9Drk?O-o=SIlbem?MfL@TiG)O
z5DUX?NY+z=+l=qCx+hSnOrep6Vh3l&W9(-NQ_B<}S`exo;ebTu>w$9z)Wr@>SFT*9
zr^`C({Ha}%Uk$fHm*C2m^~lBz>mW1uWl)IUn3cZR{h1wC0$$13(d@)b*q7`JBL?x?
zZv#im=0(ODA4?>F2gk&J2W9|c3Q#uV(W6JBzT{!x9Z^r9lx0PhQQ}+mi-vZX<eHYH
zI;Fw^=##Q<^&pJ30(H<D5dW=PHyO2)Cr>VHD)*%su6`T*7`XDK-}nCV1+100dX>7t
zQ6RI>JvG3)dGq9n6SdQN)pRuh>7SEF&NCUjfhj3E`q<fHUxo;Txzk40R+TD+0n>v;
z$M`~tJCk=56$T8AnaF-+gG*3n`%S&Cy4<Ha1z!_PXK4Vz9rEG^KC4CsbL{SdqY<sx
zIEc;mT8}U7K3mKLkmgGrzM!!bMVHB95H|JeHpb63IPzuUwgitYu-lvK$lZd4qey#j
z_sUW{V1_i{y-FrXo4+OF-;`LGC=6&pq)@_xxJ^ikOH3BHdhusAKv#VU?wV`tbL?>~
zT98;bM8wD^fkL2@KTJfx(0Oj(CRYc633s<vIiVs!i$2!9@ROX>?4JpZ4G!@OZvx(e
zni68Zy&y3W<b*fKJH-<f^~5c99AGaAyH|UXhqFt#E-i7Jka~(C0N6yt5|ah?e!Nh*
z5rVtM=sTyTi55iHU;(B!!hG1mXm|Mf{s1fhX`xi0C!_Fxxp!}^bD}qyU2nQXoF)Bp
zvc4#ry^IHq_*p>!6)kPArLdd8rURzhxMAlv*O0Ojusx%r`SeV<ot?|v=H)i()j;LU
zc(k#;R+pA240sNK2jCNP79hcC{=9!#4!3m8lYE!Ic&c<trZ#M0d<(F^ojwaFu@AMt
z&Yy1HR65x}g+8WwyZfi4+S$oRj~p2U;s-)JQ5Y9!5z9In{Au@w8Yya?%y^elS7M-X
zZx884sby?BV_)4JTsbGaEh&^DE%6+(IvAaqs*ga0=Oh7Vfn$3&m8KbcB-wpksSi-^
zT}^G+!ioi$XR!sC-R?MZ7=X#lM@c||XO3REbfGWrIXeuf^Mruw=B6C^=9|GG{@b^2
zF);z*viVK^^giqnf6f!1ZrNn$+p%-JcXlrIq=F4gHVm8`M%@WrVGtHz7Ql0YqX3hH
zT*_GRX2dN1+wEKHnx=~uWY;xk){|s9si{p^07VE}fVfz~&Tf`CF)07$O$Gvq1pn^b
zv7@=h>&@({_1!JxE%YC1JJ%Pco-p>3h`F~1IVr|C2^EXm>-`xI=tC0>B(AE}OFP6E
zXUeebcvMar<;1f`+R?uuC{pezcg;}>gP4sdLf8V-!626snS=8rp#&xw5zW(H492SJ
zCUVc2^BhqXodvK3$S}drjQoVPNf1gj);5i}qI?t{=nC(|h7Ie>=Z*8E^yn4#NJwfd
z&Vcw?0uWPIC$f>u0W#=dPs13m^?K9qH$i1SOt}k(70$*%n3brdw)4XVMHrS`=}H?}
zUFJq%P}IUKfH_QQDT+WMa}bzh6hkeE!v#ma*eqI5h^~<x-P+uwI>jtNzl60(5F$E^
zQz$Xb9G&uU+Mpyeb1h!b=E;9i6k6456KTo#5)f~3WPf|=RA4b<40pFQ#Qyc`NJ!-5
z-o0Pc`(}DmyLi)*(gfNj-&7bgkf0cog~lc^!n(7C#cv75ETQ5gEKunyhEx=_;6G=L
z06GH#6Z|s@Pzx48f^Y$1XZ-@N-W|Oyc;*bV0Lz4>Q)1)LFH%hixUl>OOCS9cl{G;o
zIFY3Q18uMr7Y-H5U-RLIm5!<2)cZmVV$V;>Nv-a@@6VpSZ78m>B7Wge;3Skx{@9ky
zn=0pIu}8CjA^2Bqb;yX+7N#9JV(dUY2r&r72xq?eoNfMid#G>feRxE5QbAy%Gsr}M
z{{*9$ISc!dxd4q6-j9o2z)L|s*hBJkI1KA1^w*X7cujX)OtAnKF`)r;JaQ!Pr7(9h
zBJt`JJp!2s7Q_p(6qW=ev>g(;*REO9SX1iGeL<3$L-&+l{pt5Esdrqw@GJO<(dekT
z2@WOCoSF2!mCL;2UhES#x==OqKi?caeEIUA62HL(ot?YawU8VFkilFjXAJmLN3cMk
zt))fh0tBW|%lh@}iPNDxGZ)Zz#3srEqZVsM=q7lBLXeFR3AD;&1krx^#h&tU&nfur
zy5>qBMZF+dDJCo+W)2epf$uF_wm@tQB@d)ic!yAE8D%9sV$o2Yg6TjbISil_ErKbD
zrRcce$l`8qZg5Zeuei|lfz#V`Ssj+=j9R~X5x#fCL)3|102WIedxW`(g=1SbZ*Hvi
zvJhJb!*Vzb;-CJ`H-`_Q^8;QiP#XG~xJ}sgRSzDSVD3g^l4IO!bv2c`IUv+Rj2Qco
zFfqC)1cN&r`yEt3GteZI3E994P!71_6B?f2U*#@t=fiV&8rX&!c{tt=1S9XlZiV|W
zNpMdgy3t|gx7NEe9y0aC;xOfI$J8_y+3BpUCOFg~xBz>fC-VxJi#MtsMbMYv-f@QK
zNY{jsnMUapwiRTLSBkfTSaK23Ip?>xxMyT~(ybjA-6Pe@=TklLrO$V6B{UXwod=j1
zi(sv6)rw`_>8ainiwIXR{;Q_FdE}eJB;5_B+G8383b054I>3{!j!D&~;Y@$nGiO3;
zU?LELfd!xznF}x>kxuwXnGO&FsDIETvo`d}fI>M?EOZO?GSGa4FCgjQ4?l4MSAt${
zK@vh0h<BcYqJ=;v%E`mwH3TC}w{z!Cv;y=NC>A;a5{#5eUy(a4L~5MTS)+H!IE9|C
z^t()~O{YZ7V=kamyn;Cne+xYV2F2aL3H%0gb~AV|UkD4!U%8T7q>prv-U%Zk>ggA+
zpi}4%kUc%(?R2N3waGIh+m()cGf53o7yMSE7Puy<r8w=>iKDzJ7$g%7gn!7R0G^>?
zGzp!HR>p7xEy%B{aJ#eF%%TTKMLz<zepoZ(?PEueFud@8_yEM>N@`F@jksVSb$|_o
zCl7PvJXh%}f&PUBL~{@>fMA#o2$sPJj2$#d`W(n%K%rGAmZ<@ZA>3dJ#3=}br1>z>
z^N}{^AuxymI!Eeq3pYX)2w|SX(~$767!Rjf5%Ufdg3^vX0?h*e&YX_+whGT&=fr<|
z!lC~F{kT)^aZXMazmW6`*5)HzAafj!FRXqT0rL}J6nE1L*g+T^VuoQYKl~(f78lb~
zx=A0w267(79y1D2PrrBtogy|ZT-@4J=bSXgoyOjm22q)Zqnr3mKapLttgi6lufIfv
zw4iy|R-`>$0C<Lm?lT-pD_hvn>YDH`3P+eAu?9Ffsi`FE+fyfFF)>BPAndNvG5d9(
z4d;tR@63Iv+&x!n$H4-^1rUrd0z?QkLX%J?^vQt24vZ|C3BFU1##lqi5E4R_p;sRi
z7)~P6A#!*JdO)zCgrNHJ1fh1+EocKRT@gGlCBv=0y392**PZ{e$4D=+-M-wegT^iC
z54vZJZEk9i9?4(TDVU3w(j&#)^o5Q9GcIlz943V-@CLxMNOJYz5F!^Y<}$Pz`YVjg
z6NHgrE@&Rn0k83*_V(5?=PXzL%iiQrD;6#LQknPU=UdkqexAUT)L(i~^AvKP*-d6B
zv8~`%`UvohAcKPG$5<@rX!Fj@!br3PCio;hT39*bm!Ho^cVg;qH-oRg^ve&69b;rO
zKDb!Ez^~dS)`nnQSx>oV<<(S`2_xt;f+8Du0ZSQLg?Qiyh8U!wrN9?_m^Aq?`g~|W
zTAYLuxCTn&Vs7C^sDdZ(9G-?uhTuCo+F9FDRp$20&MV4$-JA8evSM_Y^>z^ay~L@y
z(v$hHYkF2)HIZUt1-;%W#oa&xRDcJlfDI)u8NsAb1q=(D;~7&Q4k2>kVlG3Or?Yeu
zBuEFPYxIi=sKQ%RGU4CAAn+)t`Wz0f^rsGQb!4A9c^u6V6%r*&>1LvLS^ni3KDy2+
z^AvKPX&Rb`b75Q99En6PkU~IC_gk9k-P1EY8OFvLc0^+OsWjvM_c|)B#>v_Zrg_sD
z6rmOVOqpu?M0gK5rHv@g8SR-puCmn4h8jA}sChxy0s2uS1SKQrEI&fzLg#V|f9D$n
z536}_+Bm1A6laen+)qrW2aN7f&~dJ}`*9`tQK|P)M8fZwDK*t~E}$>c9Uzom2!q3<
z!sAR&rjLn>>9y+P{Em*g>T)_&T<|Y<78{%yGnXJgG{E|=+~Uu9d~tI*`JDLP(X2$h
zM5{#ILVBZ~1%EituY6G9MCasQrY#|O)Ei}6!M3nDLWvFnJFCU1oa_mB7<4cM?Ek;L
zGjVF-isSeng)PNaTO4giw6s;rsI9Hm8H3zGP&o_&3L(jo1VX}nNJLcZD2Q4Z?;FvM
z2NkvT*5Xm|Kt^q4`U#6mvXCW&V2kcfCi8aR+uy$5@BQBUec$h0-tu3P9M*Oi!xZ?=
zxJ-@5a{J=>ll`0W3Ze#P&${z6GN(}?rsx@Yi4j7k)?&yivs<N+RvDrYRmkgqU0rQW
zRb`pOQ7Gi+>hd#UP(^+8OmlQ-zu!-;^9q?%h?246CFLaCq;SMpv88q^W=^UI5;~H&
zkgBS3fb`A{HBhtYbwcXWycqamZou$;MlZSYw9YtN)@ZhG+k%w=F^cdK7zt1Tm;txw
zt<Zqe%fOw>MSzPZJSP@C2Ze&i=ycP<W453}mtRDiSYax!2sLT&t$8}biU<+yh}td_
zqwIDd|C*r6?4Ryjzl;knfSvKN=()nXuV4Sud2)Bjis@wD|DR?OQZhzPHN=K-ZgPIg
zj~q9dr%N!bO*Un(&d*7s^z(Dlg>|XMtW}1LMAMq+{M02va)dE%mOe7nw0tVP*Zy(y
zQ6qW(^X#2pSF;>7*%%dSS~1s@zTBLXjuW7&%<inMaj)7#!z8FIEdtfRvOyOwq%JYW
ze`#F)sqcVUfgN&XO8C0Cz(|{n^^xEus0<_t%0h>MTXdahz)@)s8W#aBp75Ml(nxp=
zZO3v!2Wk@9tgWsv=cEbA^C=Y3JSk*pXcS8hTQ?UxfBGokK3D}E9(xoAb8j&$g&nDy
z%c{2QRw3nJ)WBNxAlG~qpo{qLX7LA8_J7y?);;XcrzL{@-xWIx?lj%QBhq(ep1pJ;
zg9S|pS|P+v7verQ$A_7<v(1TLv7b_Y><pe8mxY)#ACU~lNIz5?btCUBS3DQuz9=+i
z((xA!kZ5#(WD+V9v89O3Xuwfv>Ec$pNFd@d36epIid<b@Y|dUOte7h>vu>c^29?1*
zWA0%O(P@IJG9qqtwzFj`;~Znx$+t{_vpLQl*viIP7LBLDeN!pi8FvqR2*GEso$M{y
z?O5q+f(oNUHe}2@(NuEp#zjW`Y_T2-!^cWrs$Xw}6X5*2(`T7p+M+UtwW_k5J&weF
zy3F)QsBGi_u7p~EDpR5yHse}-$}-o4x*^jwM=PJA_^AgPieA2W{+5+C;GgSx{P0kN
zrC2+{aO!B~gL=p`METZl`s@)@x9+=RjgCLBo(I|u$fvK5bwKsGi={o0{H8B5G9o+U
zKtISDGsTh+mZzPwUc1nkrm?O|vY9gN=DeZ;!Cq)7u@|7xjM|r#*a>j!uvvIsRFKc+
zc<e4E=wfn`e#lLjhuN~mO=CaFfMk+(rpb}?;P#b?*yekyKKE~3+Us0jnmp)cl&Nb#
zL>DL`cyY^D&fIQ|J>62<b-jaW9>em*!pYx`@2p$@z0B(y5Y_@hL_r`5^j&XhKCmng
zW^WT$9f|&gjUZgE1CW@flKV&B+o!FOAJ*%aa7?W?fe%{>6Xs!GU-$i6ZM!OKbaVaa
z2O;Y5{uM?AZ(O(VK)vzm*~2V{@p1H%so)()8+lPgx#OM5calE(ut~qT^Hj^r-ku4g
z&;Di<A1Ui?_f({pB)aDKi9d=}3VUlGhNe__%SR%%n923}#q0&z*|w*<>jq7_e{At0
zd(rPIOJzeXA3rTirhKcwsee(j&-q70;VmEOV><DZTxxG+BAI`ZpQvxKg=6nCDne^b
zW_4OP^QaL8LKA=Pf^`r3DAi$!K))bzQekv(Mat|QwuF<-<u^OqI19k#UI@^IkFKZt
z{+ZTV>Xa=iMC2$?`Im$<R0ysQ^^fHZjq>)E?<vP4|1|ja_$e*bYrC#p2%!7}RE+-t
znI{kL(gGjYWY}t0TCr-TBjGcaA`W#k`dDh5S<gO2xQ<H_L#xulcND}O-e&1Iy5sI2
z=deC+hrOQ14=x^W-d&bbv3eHErHAb)E2x$dr#Pdcf*sn=DpSLo?1`saoL5foJ-Atb
zQ(LUZoK-*Rd-~iIh$uu2n}5osSUZhV$j=>Y=zaR=?G(g>`wEWJ?t3?Juv|E@qpi6d
zaI&j(b%SXc7~7dOzjp1n^dPF&d{dJ#hb?)XnGqYa7hpqo7ANnk({ozo`9s^ToY{Bl
zQakJPX^nk^@#7~YhU_2S`JF5sZ!B&s(vsoI)Y*&=0=-7;2hjr9Vm>A@y6wzbfadJm
zn0t2r7KHQU!EG69$PFjenO5ia!nlf*Flrq7`G5Gq1*a|G)#*6aM8|6UME%ZFro<`b
zS1)?$DDjVK4f-S}2=h2MX!^SE-N5u;?>L6l!!S{2*@o_PtFwJi^{;#DIH&&7sg`T!
zkKF1!g#(J#fc>{++OEWIUmq2pE$cbB>SuFQReHF~n0mJAvRj3g+`lMvzE~T|Ia9w>
z>MpmpJbToolwmbamB9E&fLg<;_xPW2)gErJG};rfp$@jM@f?%&PswF(QOmH-J4;rc
z+EayvdVK%3-~NR05r#_jeU|{$0Z$7DT2UkDHDGI~6uZmQ8U)P--JH^->2#XtO}i_$
zdsws@^gh5d^|_0h9Etlk>CyI!Cz?4Y`srU?DE!2lsPn!ngvx)v1W;P424E6=3BtrJ
z_N@CJr|WV`4nwg7!0p%(p8x&o1!+j>!ebL~T8>)assvOCs1i^mph`fMfGPo10;&X5
P38)fKC7?>+J(R$|!7~Vf
literal 0
HcmV?d00001
diff --git a/pkg/win32/Resources/license.rtf b/pkg/win32/Resources/license.rtf
new file mode 100644
index
0000000000000000000000000000000000000000..40555108fa0575040cd3d8bb06da301fea2dd2a6
--- /dev/null
+++ b/pkg/win32/Resources/license.rtf
@@ -0,0 +1,13 @@
+{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang2057\deflangfe2057{\fonttbl{\f0\fswiss\fprq2\fcharset0
Arial;}}
+{\*\generator Riched20 6.2.9200}\viewkind4\uc1
+\pard\f0\fs28\lang1033 pgAdmin 4\fs18\par
+\b\par
+Copyright (C) 2002 - 2016, The pgAdmin Development Team\b0\par
+
+\pard\qj Permission to use, copy, modify, and distribute this software and its
documentation for any purpose, without fee, and without a written agreement is
hereby granted, provided that the above copyright notice and this paragraph and
the following two paragraphs appear in all copies.\par
+\par
+IN NO EVENT SHALL THE PGADMIN DEVELOPMENT TEAM BE LIABLE TO ANY PARTY FOR
DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST
PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
THE PGADMIN DEVELOPMENT TEAM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.\par
+\par
+THE PGADMIN DEVELOPMENT TEAM SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND
THE PGADMIN DEVELOPMENT TEAM HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE,
SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\par
+}
+
\ No newline at end of file
diff --git a/pkg/win32/Resources/pgAdmin4.ico b/pkg/win32/Resources/pgAdmin4.ico
new file mode 100644
index
0000000000000000000000000000000000000000..3fcebafdc9c16dedaf800066f84a3fb91a226ec1
GIT binary patch
literal 35147
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
NUx1Z5xNhk0{{S#nc=-ST
literal 0
HcmV?d00001
diff --git a/pkg/win32/installer.iss.in b/pkg/win32/installer.iss.in
new file mode 100644
index 0000000..3ec4b8c
--- /dev/null
+++ b/pkg/win32/installer.iss.in
@@ -0,0 +1,114 @@
+#define MyAppName "0.0"
+#define MyAppVersion "0.0"
+#define MyAppPublisher "The pgAdmin Development Team"
+#define MyAppURL "www.pgadmin.org"
+#define MyAppExeName "pgAdmin4.exe"
+#define MyAppID "C14F64E7-DCB9-4DE1-8560-16F08FCFF64E"
+#define MyAppFullVersion "0.0"
+#define MyAppArchitecturesMode
+[Setup]
+AppId={#MyAppName}{#MyAppVersion}
+AppName={#MyAppName}
+AppVersion={#MyAppFullVersion}
+AppPublisher={#MyAppPublisher}
+AppPublisherURL={#MyAppURL}
+AppSupportURL={#MyAppURL}
+AppUpdatesURL={#MyAppURL}
+DefaultDirName={pf}\{#MyAppName}\{#MyAppVersion}
+DisableWelcomePage=no
+DisableProgramGroupPage=yes
+LicenseFile=Resources\license.rtf
+OutputBaseFilename=setup
+SetupIconFile=Resources\pgAdmin4.ico
+Compression=lzma
+SolidCompression=yes
+PrivilegesRequired=admin
+ChangesEnvironment=yes
+;UninstallFilesDir={app}\{#MyAppVersion}
+ArchitecturesInstallIn64BitMode={#MyAppArchitecturesMode}
+
+[Languages]
+Name: "english"; MessagesFile: "compiler:Default.isl"
+
+[Icons]
+Name: {group}\{#MyAppName}; Filename: {app}\runtime\{#MyAppExeName};
IconFilename: {app}\pgAdmin4.ico; WorkingDir: {app}; Comment: "{#MyAppName}";
+Name: {commondesktop}\{#MyAppName}; Filename: {app}\runtime\{#MyAppExeName};
IconFilename: {app}\pgAdmin4.ico; WorkingDir: {app}; Comment: "{#MyAppName}";
+
+[Files]
+Source: "Resources\SplashScreen.bmp"; DestDir: {tmp}; Flags: dontcopy
+Source: "..\..\win-build\*"; DestDir: "{app}"; Flags: ignoreversion
recursesubdirs createallsubdirs;
+
+[Run]
+Filename: "{app}\runtime\{#MyAppExeName}"; Description:
"{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags:
runascurrentuser nowait postinstall skipifsilent
+
+[CustomMessages]
+english.NewerVersionExists=A newer version of {#MyAppName}
+
+[Registry]
+Root: HKLM; Subkey: "Software\{#MyAppName}\{#MyAppVersion}"; Flags:
uninsdeletekeyifempty
+Root: HKLM; Subkey: "Software\{#MyAppName}\{#MyAppVersion}"; Flags:
uninsdeletekey
+Root: HKLM; Subkey: "Software\{#MyAppName}\{#MyAppVersion}"; ValueType:
string; ValueName: "InstallPath"; ValueData: "{app}"
+Root: HKLM; Subkey: "Software\{#MyAppName}\{#MyAppVersion}"; ValueType:
string; ValueName: "Version"; ValueData: "{#MyAppFullVersion}"
+
+[Code]
+var
+ // Required for Splash Screen.
+ Splash : TSetupForm;
+
+procedure CurStepChanged(CurStep: TSetupStep);
+var
+ value : string;
+ begin
+ if CurStep = ssInstall then begin
+ value := ExpandConstant('{app}') + '\ve_python\Lib\site-packages' + ';' +
+ ExpandConstant('{app}') + '\ve_python\Lib' + ';' +
+ ExpandConstant('{app}') + '\ve_python\Lib\lib-tk' + ';' +
+ ExpandConstant('{app}') + '\ve_python\DLLs';
+ RegWriteStringValue(HKEY_CURRENT_USER,'Software\pgAdmin Development
Team\pgAdmin 4', 'PythonPath', value);
+ end;
+end;
+
+// find current version before installation
+function InitializeSetup: Boolean;
+var
+ Version: String;
+ BitmapImage1 : TBitmapImage;
+begin
+ Splash := CreateCustomForm;
+ Splash.BorderStyle := bsNone;
+ BitmapImage1 := TBitmapImage.Create(Splash);
+ BitmapImage1.AutoSize := True;
+ BitmapImage1.Align := alClient;
+ BitmapImage1.Left := 0;
+ BitmapImage1.Top := 0;
+ BitmapImage1.stretch := True;
+ BitmapImage1.Parent := Splash;
+ ExtractTemporaryFile('SplashScreen.bmp');
+ BitmapImage1.Bitmap.LoadFromFile(ExpandConstant('{tmp}') +
'\SplashScreen.bmp');
+ Splash.Width := BitmapImage1.Width;
+ Splash.Height := BitmapImage1.Height;
+ Splash.Center;
+ Splash.Show;
+ BitmapImage1.Refresh;
+ Sleep(3000);
+
+ if
RegValueExists(HKEY_LOCAL_MACHINE,'Software\{#MyAppName}\{#MyAppVersion}',
'Version') then
+ begin
+
RegQueryStringValue(HKEY_LOCAL_MACHINE,'Software\{#MyAppName}\{#MyAppVersion}',
'Version', Version);
+ if Version > '{#MyAppFullVersion}' then
+ begin
+ MsgBox(ExpandConstant('{cm:NewerVersionExists}' + '(v' + Version +
') is already installed' ), mbInformation, MB_OK);
+ Result := False;
+ end
+ else
+ begin
+ Result := True;
+ end
+ end
+ else
+ begin
+ Result := True;
+ end
+
+ Splash.Close;
+end;
\ No newline at end of file
--
Sent via pgadmin-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers